@myclub_se/data-access 3.1.10 → 3.1.12

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.
@@ -3,14 +3,15 @@ import { Actions, createEffect, ofType } from '@ngrx/effects';
3
3
  import { AuthenticationService } from '../../authentication';
4
4
  import { STORAGE_TOKEN, StorageService } from '../../services';
5
5
  import { clearAuthenticationAction, clearCurrentTokenAction, getCurrentTokenAction, getCurrentTokenSuccessAction, loginTokenAction, loginTokenFailureAction, loginTokenSuccessAction, loginWithSessionAction, loginWithSessionFailureAction, loginWithTokenAction, loginWithTokenFailureAction, memberLoginAction, memberLoginFailureAction, memberLoginSuccessAction, memberSendCodeAction, memberSendCodeFailureAction, memberSendCodeSuccessAction, reauthenticateTokenAction, reauthenticateTokenFailureAction, reauthenticateTokenSuccessAction, selectPublicMemberAction, selectPublicMemberFailureAction, selectPublicMemberSuccessAction, setCurrentTokenAction } from '../actions';
6
- import { concat, concatMap, exhaustMap, mergeMap, of } from 'rxjs';
7
- import { catchError, map } from 'rxjs/operators';
6
+ import { concat, EMPTY, exhaustMap, mergeMap, of } from 'rxjs';
7
+ import { catchError, finalize, map } from 'rxjs/operators';
8
8
  import { HttpErrorResponse } from '@angular/common/http';
9
9
  import * as i0 from "@angular/core";
10
10
  export class TokenEffects {
11
11
  actions$ = inject(Actions);
12
12
  authenticationService = inject(AuthenticationService);
13
13
  storageService = inject(StorageService);
14
+ isProcessingFailure = false;
14
15
  clearCurrent$ = createEffect(() => this.actions$
15
16
  .pipe(ofType(clearCurrentTokenAction), mergeMap(() => of(setCurrentTokenAction({ payload: null })))));
16
17
  getCurrent$ = createEffect(() => this.actions$
@@ -39,17 +40,37 @@ export class TokenEffects {
39
40
  memberSendCode$ = createEffect(() => this.actions$
40
41
  .pipe(ofType(memberSendCodeAction), exhaustMap(({ payload }) => this.authenticationService.getLoginCode(payload.email, payload.clubId)
41
42
  .pipe(map((clubs) => memberSendCodeSuccessAction({ payload: clubs.toArray() })), catchError((error) => of(memberSendCodeFailureAction({ payload: error })))))));
42
- reauthenticate$ = createEffect(() => this.actions$
43
- .pipe(ofType(reauthenticateTokenAction), exhaustMap(({ payload }) => this.authenticationService.reauthenticate(payload)
44
- .pipe(concatMap((token) => [
45
- loginTokenSuccessAction({ payload: token }),
46
- setCurrentTokenAction({ payload: token }),
47
- reauthenticateTokenSuccessAction({ payload: token })
48
- ]), catchError((error) => concat([
49
- reauthenticateTokenFailureAction({ payload: error }),
50
- clearCurrentTokenAction(),
51
- clearAuthenticationAction()
52
- ]))))));
43
+ reauthenticate$ = createEffect(() => this.actions$.pipe(ofType(reauthenticateTokenAction),
44
+ // `exhaustMap` ensures further token refresh attempts are ignored while one is in progress
45
+ exhaustMap(({ payload }) => this.authenticationService.reauthenticate(payload).pipe(exhaustMap((token) => {
46
+ this.isProcessingFailure = false;
47
+ if (!token) {
48
+ return [
49
+ reauthenticateTokenFailureAction({ payload: new HttpErrorResponse({ status: 400 }) }),
50
+ clearCurrentTokenAction(),
51
+ clearAuthenticationAction()
52
+ ];
53
+ }
54
+ else {
55
+ return [
56
+ loginTokenSuccessAction({ payload: token }),
57
+ setCurrentTokenAction({ payload: token }),
58
+ reauthenticateTokenSuccessAction({ payload: token })
59
+ ];
60
+ }
61
+ }), catchError((error) => {
62
+ if (this.isProcessingFailure) {
63
+ return EMPTY;
64
+ }
65
+ this.isProcessingFailure = true;
66
+ return concat([
67
+ reauthenticateTokenFailureAction({ payload: error }),
68
+ clearCurrentTokenAction(),
69
+ clearAuthenticationAction()
70
+ ]).pipe(finalize(() => {
71
+ this.isProcessingFailure = false;
72
+ }));
73
+ })))));
53
74
  selectPublicMember$ = createEffect(() => this.actions$
54
75
  .pipe(ofType(selectPublicMemberAction), exhaustMap(({ payload }) => this.authenticationService.changePublicToken(payload)
55
76
  .pipe(map((token) => selectPublicMemberSuccessAction({ payload: token })), catchError((error) => of(selectPublicMemberFailureAction({ payload: error })))))));
@@ -82,4 +103,4 @@ export class TokenEffects {
82
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TokenEffects, decorators: [{
83
104
  type: Injectable
84
105
  }] });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy90b2tlbi5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQUUseUJBQXlCLEVBQ3RELGdDQUFnQyxFQUNoQyxnQ0FBZ0MsRUFDaEMsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0IscUJBQXFCLEVBQ3RCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7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QyxjQUFjLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7U0FDN0csSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO1FBQ25CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyw0QkFBNEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO0lBQ3ZELENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FDRixDQUNGLENBQUM7dUdBdEtTLFlBQVk7MkdBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uJztcbmltcG9ydCB7IFNUT1JBR0VfVE9LRU4sIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgY2xlYXJBdXRoZW50aWNhdGlvbkFjdGlvbixcbiAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24sXG4gIGdldEN1cnJlbnRUb2tlbkFjdGlvbixcbiAgZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbixcbiAgbG9naW5Ub2tlbkFjdGlvbixcbiAgbG9naW5Ub2tlbkZhaWx1cmVBY3Rpb24sXG4gIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uLFxuICBsb2dpbldpdGhTZXNzaW9uQWN0aW9uLFxuICBsb2dpbldpdGhTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgbG9naW5XaXRoVG9rZW5BY3Rpb24sXG4gIGxvZ2luV2l0aFRva2VuRmFpbHVyZUFjdGlvbixcbiAgbWVtYmVyTG9naW5BY3Rpb24sXG4gIG1lbWJlckxvZ2luRmFpbHVyZUFjdGlvbixcbiAgbWVtYmVyTG9naW5TdWNjZXNzQWN0aW9uLFxuICBtZW1iZXJTZW5kQ29kZUFjdGlvbixcbiAgbWVtYmVyU2VuZENvZGVGYWlsdXJlQWN0aW9uLFxuICBtZW1iZXJTZW5kQ29kZVN1Y2Nlc3NBY3Rpb24sIHJlYXV0aGVudGljYXRlVG9rZW5BY3Rpb24sXG4gIHJlYXV0aGVudGljYXRlVG9rZW5GYWlsdXJlQWN0aW9uLFxuICByZWF1dGhlbnRpY2F0ZVRva2VuU3VjY2Vzc0FjdGlvbixcbiAgc2VsZWN0UHVibGljTWVtYmVyQWN0aW9uLFxuICBzZWxlY3RQdWJsaWNNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICBzZWxlY3RQdWJsaWNNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICBzZXRDdXJyZW50VG9rZW5BY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBjb25jYXQsIGNvbmNhdE1hcCwgZXhoYXVzdE1hcCwgbWVyZ2VNYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBQdWJsaWNBdXRoZW50aWNhdGlvbiwgU2VhcmNoQ2x1YiwgVG9rZW4gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBHcmFudFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUb2tlbkVmZmVjdHMge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZSA9IGluamVjdChBdXRoZW50aWNhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KFN0b3JhZ2VTZXJ2aWNlKTtcblxuICBjbGVhckN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjbGVhckN1cnJlbnRUb2tlbkFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoKSA9PiBvZihzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IG51bGx9KSkpXG4gICAgKVxuICApO1xuXG4gIGdldEN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShnZXRDdXJyZW50VG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEFzT2JzZXJ2YWJsZShTVE9SQUdFX1RPS0VOKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBUb2tlbikgPT4ge1xuICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IHRva2VufSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbnVsbH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2dpbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxvZ2luVG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRlQnlDcmVkZW50aWFscyhwYXlsb2FkLnVzZXJuYW1lLCBwYXlsb2FkLnBhc3N3b3JkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKHRva2VuOiBUb2tlbikgPT4gW1xuICAgICAgICAgICAgICBsb2dpblRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgICAgc2V0Q3VycmVudFRva2VuQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKFxuICAgICAgICAgICAgICBsb2dpblRva2VuRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSxcbiAgICAgICAgICAgICAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24oKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxvZ2luV2l0aFRva2VuJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobG9naW5XaXRoVG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHN0cmluZyB9KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVCeVRva2VuKHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKCh0b2tlbjogVG9rZW4pID0+IFtcbiAgICAgICAgICAgIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgICAgc2V0Q3VycmVudFRva2VuQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoXG4gICAgICAgICAgICBsb2dpbldpdGhUb2tlbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSksXG4gICAgICAgICAgICBjbGVhckN1cnJlbnRUb2tlbkFjdGlvbigpXG4gICAgICAgICAgKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBtZW1iZXJMb2dpbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKG1lbWJlckxvZ2luQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHtlbWFpbDogc3RyaW5nLCBjbHViSWQ6IHN0cmluZywgY29kZTogc3RyaW5nfX0pID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFB1YmxpY1Rva2VuKHBheWxvYWQuZW1haWwsIHBheWxvYWQuY29kZSwgcGF5bG9hZC5jbHViSWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgodG9rZW46IFB1YmxpY0F1dGhlbnRpY2F0aW9uKSA9PiBtZW1iZXJMb2dpblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobWVtYmVyTG9naW5GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBtZW1iZXJTZW5kQ29kZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKG1lbWJlclNlbmRDb2RlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHtlbWFpbDogc3RyaW5nLCBjbHViSWQ6IHN0cmluZyB8IG51bGx9fSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0TG9naW5Db2RlKHBheWxvYWQuZW1haWwsIHBheWxvYWQuY2x1YklkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNsdWJzOiBDb2xsZWN0aW9uPFNlYXJjaENsdWI+KSA9PiBtZW1iZXJTZW5kQ29kZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNsdWJzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKG1lbWJlclNlbmRDb2RlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmVhdXRoZW50aWNhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZWF1dGhlbnRpY2F0ZVRva2VuQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHsgcGF5bG9hZCB9OiB7IHBheWxvYWQ6IEdyYW50VHlwZSB8IG51bGwgfSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UucmVhdXRoZW50aWNhdGUocGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY29uY2F0TWFwKCh0b2tlbjogVG9rZW4pID0+IFtcbiAgICAgICAgICAgIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uKHsgcGF5bG9hZDogdG9rZW4gfSksXG4gICAgICAgICAgICBzZXRDdXJyZW50VG9rZW5BY3Rpb24oeyBwYXlsb2FkOiB0b2tlbiB9KSxcbiAgICAgICAgICAgIHJlYXV0aGVudGljYXRlVG9rZW5TdWNjZXNzQWN0aW9uKHsgcGF5bG9hZDogdG9rZW4gfSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+XG4gICAgICAgICAgICBjb25jYXQoW1xuICAgICAgICAgICAgICByZWF1dGhlbnRpY2F0ZVRva2VuRmFpbHVyZUFjdGlvbih7IHBheWxvYWQ6IGVycm9yIH0pLFxuICAgICAgICAgICAgICBjbGVhckN1cnJlbnRUb2tlbkFjdGlvbigpLFxuICAgICAgICAgICAgICBjbGVhckF1dGhlbnRpY2F0aW9uQWN0aW9uKClcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNlbGVjdFB1YmxpY01lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHNlbGVjdFB1YmxpY01lbWJlckFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiBzdHJpbmd9KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jaGFuZ2VQdWJsaWNUb2tlbihwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBQdWJsaWNBdXRoZW50aWNhdGlvbikgPT4gc2VsZWN0UHVibGljTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihzZWxlY3RQdWJsaWNNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzZXNzaW9uVG9rZW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsb2dpbldpdGhTZXNzaW9uQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0U2Vzc2lvblRva2VuKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHRva2VuOiBUb2tlbiB8IG51bGwpID0+IHtcbiAgICAgICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUb2tlbkFjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgICBsb2dpbldpdGhTZXNzaW9uRmFpbHVyZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgICBwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2UoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDQwMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24oKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobG9naW5XaXRoU2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNldEN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShzZXRDdXJyZW50VG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IFRva2VuIHwgbnVsbCB9KSA9PiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEFzT2JzZXJ2YWJsZShTVE9SQUdFX1RPS0VOLCBwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBUb2tlbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2Uuc2V0VG9rZW4odG9rZW4pO1xuICAgICAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRUb2tlblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy90b2tlbi5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQUUseUJBQXlCLEVBQ3RELGdDQUFnQyxFQUNoQyxnQ0FBZ0MsRUFDaEMsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0IscUJBQXFCLEVBQ3RCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxNQUFNLEVBQWEsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNC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QUFFLEtBQUssRUFBQyxDQUFDO2dCQUN6QyxxQkFBcUIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQzthQUN4QyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FDUCw2QkFBNkIsQ0FBQztnQkFDNUIsT0FBTyxFQUFFLElBQUksaUJBQWlCLENBQzVCO29CQUNFLE1BQU0sRUFBRSxHQUFHO2lCQUNaLENBQ0Y7YUFDRixDQUFDLEVBQ0YsdUJBQXVCLEVBQUUsQ0FDMUIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzlGLENBQ0YsQ0FDRixDQUNGLENBQUM7SUFFRixXQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQzNDLElBQUksQ0FDSCxNQUFNLENBQUMscUJBQXFCLENBQUMsRUFDN0IsVUFBVSxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7U0FDN0csSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO1FBQ25CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyw0QkFBNEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO0lBQ3ZELENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FDRixDQUNGLENBQUM7dUdBNUxTLFlBQVk7MkdBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uJztcbmltcG9ydCB7IFNUT1JBR0VfVE9LRU4sIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgY2xlYXJBdXRoZW50aWNhdGlvbkFjdGlvbixcbiAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24sXG4gIGdldEN1cnJlbnRUb2tlbkFjdGlvbixcbiAgZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbixcbiAgbG9naW5Ub2tlbkFjdGlvbixcbiAgbG9naW5Ub2tlbkZhaWx1cmVBY3Rpb24sXG4gIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uLFxuICBsb2dpbldpdGhTZXNzaW9uQWN0aW9uLFxuICBsb2dpbldpdGhTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgbG9naW5XaXRoVG9rZW5BY3Rpb24sXG4gIGxvZ2luV2l0aFRva2VuRmFpbHVyZUFjdGlvbixcbiAgbWVtYmVyTG9naW5BY3Rpb24sXG4gIG1lbWJlckxvZ2luRmFpbHVyZUFjdGlvbixcbiAgbWVtYmVyTG9naW5TdWNjZXNzQWN0aW9uLFxuICBtZW1iZXJTZW5kQ29kZUFjdGlvbixcbiAgbWVtYmVyU2VuZENvZGVGYWlsdXJlQWN0aW9uLFxuICBtZW1iZXJTZW5kQ29kZVN1Y2Nlc3NBY3Rpb24sIHJlYXV0aGVudGljYXRlVG9rZW5BY3Rpb24sXG4gIHJlYXV0aGVudGljYXRlVG9rZW5GYWlsdXJlQWN0aW9uLFxuICByZWF1dGhlbnRpY2F0ZVRva2VuU3VjY2Vzc0FjdGlvbixcbiAgc2VsZWN0UHVibGljTWVtYmVyQWN0aW9uLFxuICBzZWxlY3RQdWJsaWNNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICBzZWxlY3RQdWJsaWNNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICBzZXRDdXJyZW50VG9rZW5BY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBjb25jYXQsIGNvbmNhdE1hcCwgRU1QVFksIGV4aGF1c3RNYXAsIG1lcmdlTWFwLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgUHVibGljQXV0aGVudGljYXRpb24sIFNlYXJjaENsdWIsIFRva2VuIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEdyYW50VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRva2VuRWZmZWN0cyB7XG4gIHByaXZhdGUgYWN0aW9ucyQgPSBpbmplY3QoQWN0aW9ucyk7XG4gIHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlID0gaW5qZWN0KEF1dGhlbnRpY2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgc3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICBwcml2YXRlIGlzUHJvY2Vzc2luZ0ZhaWx1cmUgPSBmYWxzZTtcblxuICBjbGVhckN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjbGVhckN1cnJlbnRUb2tlbkFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoKSA9PiBvZihzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IG51bGx9KSkpXG4gICAgKVxuICApO1xuXG4gIGdldEN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShnZXRDdXJyZW50VG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEFzT2JzZXJ2YWJsZShTVE9SQUdFX1RPS0VOKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBUb2tlbikgPT4ge1xuICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IHRva2VufSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbnVsbH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2dpbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxvZ2luVG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRlQnlDcmVkZW50aWFscyhwYXlsb2FkLnVzZXJuYW1lLCBwYXlsb2FkLnBhc3N3b3JkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKHRva2VuOiBUb2tlbikgPT4gW1xuICAgICAgICAgICAgICBsb2dpblRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgICAgc2V0Q3VycmVudFRva2VuQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKFxuICAgICAgICAgICAgICBsb2dpblRva2VuRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSxcbiAgICAgICAgICAgICAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24oKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxvZ2luV2l0aFRva2VuJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobG9naW5XaXRoVG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHN0cmluZyB9KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVCeVRva2VuKHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKCh0b2tlbjogVG9rZW4pID0+IFtcbiAgICAgICAgICAgIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgICAgc2V0Q3VycmVudFRva2VuQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoXG4gICAgICAgICAgICBsb2dpbldpdGhUb2tlbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSksXG4gICAgICAgICAgICBjbGVhckN1cnJlbnRUb2tlbkFjdGlvbigpXG4gICAgICAgICAgKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBtZW1iZXJMb2dpbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKG1lbWJlckxvZ2luQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHtlbWFpbDogc3RyaW5nLCBjbHViSWQ6IHN0cmluZywgY29kZTogc3RyaW5nfX0pID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFB1YmxpY1Rva2VuKHBheWxvYWQuZW1haWwsIHBheWxvYWQuY29kZSwgcGF5bG9hZC5jbHViSWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgodG9rZW46IFB1YmxpY0F1dGhlbnRpY2F0aW9uKSA9PiBtZW1iZXJMb2dpblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobWVtYmVyTG9naW5GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBtZW1iZXJTZW5kQ29kZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKG1lbWJlclNlbmRDb2RlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHtlbWFpbDogc3RyaW5nLCBjbHViSWQ6IHN0cmluZyB8IG51bGx9fSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0TG9naW5Db2RlKHBheWxvYWQuZW1haWwsIHBheWxvYWQuY2x1YklkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNsdWJzOiBDb2xsZWN0aW9uPFNlYXJjaENsdWI+KSA9PiBtZW1iZXJTZW5kQ29kZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNsdWJzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKG1lbWJlclNlbmRDb2RlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmVhdXRoZW50aWNhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHJlYXV0aGVudGljYXRlVG9rZW5BY3Rpb24pLFxuICAgICAgLy8gYGV4aGF1c3RNYXBgIGVuc3VyZXMgZnVydGhlciB0b2tlbiByZWZyZXNoIGF0dGVtcHRzIGFyZSBpZ25vcmVkIHdoaWxlIG9uZSBpcyBpbiBwcm9ncmVzc1xuICAgICAgZXhoYXVzdE1hcCgoeyBwYXlsb2FkIH06IHsgcGF5bG9hZDogR3JhbnRUeXBlIHwgbnVsbCB9KSA9PlxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5yZWF1dGhlbnRpY2F0ZShwYXlsb2FkKS5waXBlKFxuICAgICAgICAgIGV4aGF1c3RNYXAoKHRva2VuOiBUb2tlbiB8IG51bGwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nRmFpbHVyZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgcmVhdXRoZW50aWNhdGVUb2tlbkZhaWx1cmVBY3Rpb24oeyBwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2UoeyBzdGF0dXM6IDQwMCB9KSB9KSxcbiAgICAgICAgICAgICAgICBjbGVhckN1cnJlbnRUb2tlbkFjdGlvbigpLFxuICAgICAgICAgICAgICAgIGNsZWFyQXV0aGVudGljYXRpb25BY3Rpb24oKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uKHsgcGF5bG9hZDogdG9rZW4gfSksXG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudFRva2VuQWN0aW9uKHsgcGF5bG9hZDogdG9rZW4gfSksXG4gICAgICAgICAgICAgICAgcmVhdXRoZW50aWNhdGVUb2tlblN1Y2Nlc3NBY3Rpb24oeyBwYXlsb2FkOiB0b2tlbiB9KVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Byb2Nlc3NpbmdGYWlsdXJlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nRmFpbHVyZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gY29uY2F0KFtcbiAgICAgICAgICAgICAgcmVhdXRoZW50aWNhdGVUb2tlbkZhaWx1cmVBY3Rpb24oeyBwYXlsb2FkOiBlcnJvciB9KSxcbiAgICAgICAgICAgICAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24oKSxcbiAgICAgICAgICAgICAgY2xlYXJBdXRoZW50aWNhdGlvbkFjdGlvbigpXG4gICAgICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdGYWlsdXJlID0gZmFsc2U7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2VsZWN0UHVibGljTWVtYmVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoc2VsZWN0UHVibGljTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHN0cmluZ30pID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmNoYW5nZVB1YmxpY1Rva2VuKHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgodG9rZW46IFB1YmxpY0F1dGhlbnRpY2F0aW9uKSA9PiBzZWxlY3RQdWJsaWNNZW1iZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHNlbGVjdFB1YmxpY01lbWJlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNlc3Npb25Ub2tlbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxvZ2luV2l0aFNlc3Npb25BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRTZXNzaW9uVG9rZW4oKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgodG9rZW46IFRva2VuIHwgbnVsbCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgbG9naW5Ub2tlblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudFRva2VuQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgICAgIGxvZ2luV2l0aFNlc3Npb25GYWlsdXJlQWN0aW9uKHtcbiAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZShcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogNDAwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjbGVhckN1cnJlbnRUb2tlbkFjdGlvbigpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsb2dpbldpdGhTZXNzaW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2V0Q3VycmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHNldEN1cnJlbnRUb2tlbkFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogVG9rZW4gfCBudWxsIH0pID0+IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0QXNPYnNlcnZhYmxlKFNUT1JBR0VfVE9LRU4sIHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgodG9rZW46IFRva2VuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5zZXRUb2tlbih0b2tlbik7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { createReducer, on } from '@ngrx/store';
2
2
  import { initialCalendarState } from '../state';
3
- import { clearMemberActivityAction, clearMemberActivityInviteAction, clearMemberOpenActivityAction, clearStoreAction, clearTeamActivityAction, createTeamActivityAction, createTeamActivityFailureAction, deleteTeamActivityInviteAction, deleteTeamActivitySuccessAction, listAllMemberOpenActivityLocationsAction, listAllMemberOpenActivityLocationsFailureAction, listAllMemberOpenActivityLocationsSuccessAction, listAllMemberOpenActivityTypesAction, listAllMemberOpenActivityTypesFailureAction, listAllMemberOpenActivityTypesSuccessAction, listMemberActivitiesAction, listMemberActivitiesFailureAction, listMemberActivitiesSuccessAction, listMemberActivityInvitesAction, listMemberActivityInvitesFailureAction, listMemberActivityInvitesSuccessAction, listMemberOpenActivitiesAction, listMemberOpenActivitiesFailureAction, listMemberOpenActivitiesSuccessAction, listMemberOpenActivityLocationsAction, listMemberOpenActivityLocationsFailureAction, listMemberOpenActivityLocationsSuccessAction, listMemberOpenActivityTypesAction, listMemberOpenActivityTypesFailureAction, listMemberOpenActivityTypesSuccessAction, listTeamActivitiesAction, listTeamActivitiesFailureAction, listTeamActivitiesSuccessAction, listTeamActivityParticipantsSuccessAction, listTeamLeaderExtraMembersSuccessAction, removeMemberOpenActivityAction, resendTeamActivityMemberInviteSuccessAction, retrieveMemberActivityAction, retrieveMemberActivityFailureAction, retrieveMemberActivityInviteAction, retrieveMemberActivityInviteFailureAction, retrieveMemberActivityInviteSuccessAction, retrieveMemberActivitySuccessAction, retrieveMemberOpenActivityAction, retrieveMemberOpenActivityFailureAction, retrieveMemberOpenActivitySuccessAction, retrieveTeamActivityAction, retrieveTeamActivityFailureAction, retrieveTeamActivityQRCodeSuccessAction, retrieveTeamActivitySettingsAction, retrieveTeamActivitySettingsFailureAction, retrieveTeamActivitySettingsSuccessAction, retrieveTeamActivitySuccessAction, retrieveTeamDefaultActivitySettingsAction, retrieveTeamDefaultActivitySettingsFailureAction, retrieveTeamDefaultActivitySettingsSuccessAction, updateMemberActivityInviteSuccessAction, updateMemberOpenActivitySuccessAction, updateTeamActivityAction, updateTeamActivityFailureAction, updateTeamActivitySuccessAction, updateTeamMemberActivityInviteSuccessAction, } from '../actions';
3
+ import { clearMemberActivityAction, clearMemberActivityInviteAction, clearMemberOpenActivityAction, clearStoreAction, clearTeamActivityAction, clearTeamActivitiesAction, createTeamActivityAction, createTeamActivityFailureAction, deleteTeamActivityInviteAction, deleteTeamActivitySuccessAction, listAllMemberOpenActivityLocationsAction, listAllMemberOpenActivityLocationsFailureAction, listAllMemberOpenActivityLocationsSuccessAction, listAllMemberOpenActivityTypesAction, listAllMemberOpenActivityTypesFailureAction, listAllMemberOpenActivityTypesSuccessAction, listMemberActivitiesAction, listMemberActivitiesFailureAction, listMemberActivitiesSuccessAction, listMemberActivityInvitesAction, listMemberActivityInvitesFailureAction, listMemberActivityInvitesSuccessAction, listMemberOpenActivitiesAction, listMemberOpenActivitiesFailureAction, listMemberOpenActivitiesSuccessAction, listMemberOpenActivityLocationsAction, listMemberOpenActivityLocationsFailureAction, listMemberOpenActivityLocationsSuccessAction, listMemberOpenActivityTypesAction, listMemberOpenActivityTypesFailureAction, listMemberOpenActivityTypesSuccessAction, listTeamActivitiesAction, listTeamActivitiesFailureAction, listTeamActivitiesSuccessAction, listTeamActivityParticipantsSuccessAction, listTeamLeaderExtraMembersSuccessAction, removeMemberOpenActivityAction, resendTeamActivityMemberInviteSuccessAction, retrieveMemberActivityAction, retrieveMemberActivityFailureAction, retrieveMemberActivityInviteAction, retrieveMemberActivityInviteFailureAction, retrieveMemberActivityInviteSuccessAction, retrieveMemberActivitySuccessAction, retrieveMemberOpenActivityAction, retrieveMemberOpenActivityFailureAction, retrieveMemberOpenActivitySuccessAction, retrieveTeamActivityAction, retrieveTeamActivityFailureAction, retrieveTeamActivityQRCodeSuccessAction, retrieveTeamActivitySettingsAction, retrieveTeamActivitySettingsFailureAction, retrieveTeamActivitySettingsSuccessAction, retrieveTeamActivitySuccessAction, retrieveTeamDefaultActivitySettingsAction, retrieveTeamDefaultActivitySettingsFailureAction, retrieveTeamDefaultActivitySettingsSuccessAction, updateMemberActivityInviteSuccessAction, updateMemberOpenActivitySuccessAction, updateTeamActivityAction, updateTeamActivityFailureAction, updateTeamActivitySuccessAction, updateTeamMemberActivityInviteSuccessAction, } from '../actions';
4
4
  import { ActivityInvite, MemberActivityInvite, OpenActivity } from '../../models';
5
5
  import { listLoadFailure, listLoadSuccess, listStartLoading, retrieveLoadFailure, retrieveLoadSuccess, retrieveStartLoading } from './reducer-helpers';
6
6
  // --- Helper Functions ---
@@ -81,7 +81,7 @@ const updateTeamActivityInvite = (state, payload) => {
81
81
  // --- Reducer ---
82
82
  export const calendarReducer = createReducer(initialCalendarState,
83
83
  // Clear Actions
84
- on(clearStoreAction, () => initialCalendarState), on(clearMemberActivityAction, (state) => ({ ...state, currentMemberActivity: undefined })), on(clearMemberActivityInviteAction, (state) => ({ ...state, currentMemberActivityInvite: undefined })), on(clearMemberOpenActivityAction, (state) => ({ ...state, currentMemberOpenActivity: undefined })), on(clearTeamActivityAction, (state) => ({ ...state, currentTeamActivity: undefined })),
84
+ on(clearStoreAction, () => initialCalendarState), on(clearMemberActivityAction, (state) => ({ ...state, currentMemberActivity: undefined })), on(clearMemberActivityInviteAction, (state) => ({ ...state, currentMemberActivityInvite: undefined })), on(clearMemberOpenActivityAction, (state) => ({ ...state, currentMemberOpenActivity: undefined })), on(clearTeamActivityAction, (state) => ({ ...state, currentTeamActivity: undefined })), on(clearTeamActivitiesAction, (state) => ({ ...state, teamEvents: undefined })),
85
85
  // Member Activity Invites
86
86
  on(retrieveMemberActivityInviteAction, state => ({ ...state, currentMemberActivityInvite: retrieveStartLoading(state.currentMemberActivityInvite) })), on(retrieveMemberActivityInviteFailureAction, (state, { payload }) => ({ ...state, currentMemberActivityInvite: retrieveLoadFailure(payload) })), on(retrieveMemberActivityInviteSuccessAction, (state, { payload }) => ({ ...state, currentMemberActivityInvite: retrieveLoadSuccess(payload) })),
87
87
  // Member Activities
@@ -474,4 +474,4 @@ on(deleteTeamActivitySuccessAction, (state, { payload }) => {
474
474
  on(createTeamActivityAction, state => ({ ...state, currentTeamActivity: retrieveStartLoading(state.currentTeamActivity) })),
475
475
  // Failure Handlers
476
476
  on(createTeamActivityFailureAction, (state, { payload }) => ({ ...state, currentTeamActivity: retrieveLoadFailure(payload) })));
477
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvcmVkdWNlcnMvY2FsZW5kYXIucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9ELE9BQU8sRUFFTCx5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLDZCQUE2QixFQUM3QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFBRSw4QkFBOEIsRUFDL0QsK0JBQStCLEVBQy9CLHdDQUF3QyxFQUN4QywrQ0FBK0MsRUFDL0MsK0NBQStDLEVBQy9DLG9DQUFvQyxFQUNwQywyQ0FBMkMsRUFDM0MsMkNBQTJDLEVBQzNDLDBCQUEwQixFQUMxQixpQ0FBaUMsRUFDakMsaUNBQWlDLEVBQ2pDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLDhCQUE4QixFQUM5QixxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyw0Q0FBNEMsRUFDNUMsNENBQTRDLEVBQzVDLGlDQUFpQyxFQUNqQyx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHlDQUF5QyxFQUN6Qyx1Q0FBdUMsRUFDdkMsOEJBQThCLEVBQzlCLDJDQUEyQyxFQUMzQyw0QkFBNEIsRUFDNUIsbUNBQW1DLEVBQ25DLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLG1DQUFtQyxFQUNuQyxnQ0FBZ0MsRUFDaEMsdUNBQXVDLEVBQ3ZDLHVDQUF1QyxFQUN2QywwQkFBMEIsRUFDMUIsaUNB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LEVBQUU7Z0JBQ0wsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUs7Z0JBQ2hDLE9BQU8sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQzthQUM5RjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUYsdUJBQXVCO0FBQ3ZCLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFM0gsbUJBQW1CO0FBQ25CLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLENBQXdCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN0SixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBDYWxlbmRhclN0YXRlLCBpbml0aWFsQ2FsZW5kYXJTdGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB7XG4gIGNsZWFyQ3VycmVudEV4dHJhTWVtYmVyQWN0aW9uLFxuICBjbGVhck1lbWJlckFjdGl2aXR5QWN0aW9uLFxuICBjbGVhck1lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICBjbGVhck1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbixcbiAgY2xlYXJTdG9yZUFjdGlvbixcbiAgY2xlYXJUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eUFjdGlvbixcbiAgY3JlYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbiwgZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICBkZWxldGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zRmFpbHVyZUFjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0FjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0aWVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdGllc0FjdGlvbixcbiAgbGlzdFRlYW1BY3Rpdml0aWVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdFRlYW1BY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50c1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbixcbiAgcmVtb3ZlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLFxuICByZXNlbmRUZWFtQWN0aXZpdHlNZW1iZXJJbnZpdGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5QWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eUFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5QWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVUZWFtTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLFxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5LFxuICBBY3Rpdml0eUludml0ZSxcbiAgQWN0aXZpdHlMb2NhdGlvbixcbiAgQWN0aXZpdHlTZXR0aW5ncyxcbiAgQWN0aXZpdHlUeXBlLFxuICBFdmVudCxcbiAgTWVtYmVyQWN0aXZpdHlJbnZpdGUsXG4gIE9wZW5BY3Rpdml0eVxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgT3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBMaXN0UmVzdWx0SW50ZXJmYWNlLFxuICBSZXRyaWV2ZVJlc3VsdEludGVyZmFjZSxcbiAgVGVhbUFjdGl2aXR5SW50ZXJmYWNlLFxuICBUZWFtQ2FsZW5kYXJFdmVudFJlc3VsdEludGVyZmFjZVxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIGxpc3RMb2FkRmFpbHVyZSxcbiAgbGlzdExvYWRTdWNjZXNzLFxuICBsaXN0U3RhcnRMb2FkaW5nLFxuICByZXRyaWV2ZUxvYWRGYWlsdXJlLFxuICByZXRyaWV2ZUxvYWRTdWNjZXNzLFxuICByZXRyaWV2ZVN0YXJ0TG9hZGluZ1xufSBmcm9tICcuL3JlZHVjZXItaGVscGVycyc7XG5cbi8vIC0tLSBIZWxwZXIgRnVuY3Rpb25zIC0tLVxuXG5jb25zdCB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZXMgPSAoaW52aXRlczogQXJyYXk8TWVtYmVyQWN0aXZpdHlJbnZpdGU+IHwgdW5kZWZpbmVkIHwgbnVsbCwgcGF5bG9hZDogQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgaWYgKCFpbnZpdGVzKSByZXR1cm4gW107XG4gIHJldHVybiBpbnZpdGVzLm1hcCgoaW52aXRlOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4ge1xuICAgIGlmIChpbnZpdGUubWVtYmVyX2lkID09PSBwYXlsb2FkLm1lbWJlci5pZCkge1xuICAgICAgcmV0dXJuIG5ldyBNZW1iZXJBY3Rpdml0eUludml0ZShcbiAgICAgICAgaW52aXRlLmlkLFxuICAgICAgICBwYXlsb2FkLmNvbW1lbnQsXG4gICAgICAgIGludml0ZS5jdXJyZW50X251bV9hdHRlbmRhbnRzLFxuICAgICAgICBwYXlsb2FkLmxhc3RfaW52aXRlLFxuICAgICAgICBwYXlsb2FkLmxlYWRlcixcbiAgICAgICAgcGF5bG9hZC5tZW1iZXIuZW1haWwsXG4gICAgICAgIHBheWxvYWQubWVtYmVyLmlkLFxuICAgICAgICBwYXlsb2FkLm1lbWJlci5uYW1lLFxuICAgICAgICBwYXlsb2FkLm5leHRfaW52aXRlLFxuICAgICAgICBwYXlsb2FkLnJlc3BvbnNlX2RhdGUsXG4gICAgICAgIHBheWxvYWQuc3RhdHVzXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gaW52aXRlO1xuICB9KTtcbn07XG5cbmNvbnN0IHVwZGF0ZUV2ZW50SW52aXRlcyA9IChldmVudHM6IEFycmF5PEV2ZW50PiwgcGF5bG9hZDogQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgcmV0dXJuIGV2ZW50cy5tYXAoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC5pbnZpdGF0aW9uX2lkID09PSBwYXlsb2FkLmlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgaW52aXRhdGlvbl9yZXNwb25zZTogcGF5bG9hZC5zdGF0dXMsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gZXZlbnQ7XG4gIH0pO1xufTtcblxuY29uc3QgdXBkYXRlSW52aXRlZE1lbWJlcnMgPSAoaW52aXRlZE1lbWJlcnM6IEFycmF5PE1lbWJlckFjdGl2aXR5SW52aXRlPiwgcGF5bG9hZDogQWN0aXZpdHlJbnZpdGUgfCBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4ge1xuICByZXR1cm4gaW52aXRlZE1lbWJlcnMubWFwKCh2YWx1ZTogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgICBpZiAodmFsdWUuaWQgPT09IHBheWxvYWQuaWQpIHtcbiAgICAgIHJldHVybiBuZXcgTWVtYmVyQWN0aXZpdHlJbnZpdGUoXG4gICAgICAgIHZhbHVlLmlkLFxuICAgICAgICBwYXlsb2FkLmNvbW1lbnQsXG4gICAgICAgIHZhbHVlLmN1cnJlbnRfbnVtX2F0dGVuZGFudHMsXG4gICAgICAgIHBheWxvYWQubGFzdF9pbnZpdGUsXG4gICAgICAgIHZhbHVlLmxlYWRlcixcbiAgICAgICAgdmFsdWUubWVtYmVyX2VtYWlsLFxuICAgICAgICB2YWx1ZS5tZW1iZXJfaWQsXG4gICAgICAgIHZhbHVlLm1lbWJlcl9uYW1lLFxuICAgICAgICBwYXlsb2FkLm5leHRfaW52aXRlLFxuICAgICAgICBwYXlsb2FkLnJlc3BvbnNlX2RhdGUsXG4gICAgICAgIHBheWxvYWQuc3RhdHVzXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSk7XG59O1xuXG5jb25zdCB1cGRhdGVPcGVuQWN0aXZpdGllcyA9IChvcGVuQWN0aXZpdGllczogQXJyYXk8T3BlbkFjdGl2aXR5PiwgcGF5bG9hZDogT3BlbkFjdGl2aXR5KSA9PiB7XG4gIHJldHVybiBvcGVuQWN0aXZpdGllcy5tYXAoKG9wZW5BY3Rpdml0eTogT3BlbkFjdGl2aXR5KSA9PiB7XG4gICAgaWYgKG9wZW5BY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5pZCkge1xuICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfVxuICAgIHJldHVybiBvcGVuQWN0aXZpdHk7XG4gIH0pO1xufTtcblxuY29uc3QgdXBkYXRlVGVhbUFjdGl2aXR5SW52aXRlID0gKHN0YXRlOiBDYWxlbmRhclN0YXRlLCBwYXlsb2FkOiBBY3Rpdml0eUludml0ZSB8IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQpIHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaW52aXRlZF9tZW1iZXJzLmZpbmRJbmRleCgodmFsdWU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiB2YWx1ZS5pZCA9PT0gcGF5bG9hZC5pZCkgIT09IC0xKSB7XG4gICAgICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LFxuICAgICAgICAgICAgICBpbnZpdGVkX21lbWJlcnM6IHVwZGF0ZUludml0ZWRNZW1iZXJzKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5Lmludml0ZWRfbWVtYmVycywgcGF5bG9hZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGFjdGl2aXR5SWQgPSBjdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaWQ7XG5cbiAgICAgIGlmIChjdXJyZW50U3RhdGUudGVhbUV2ZW50cz8udmFsdWU/LnJlc3VsdHMpIHtcbiAgICAgICAgY3VycmVudFN0YXRlLnRlYW1FdmVudHMgPSB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHMsXG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLnZhbHVlLFxuICAgICAgICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLnRlYW1FdmVudHMudmFsdWUucmVzdWx0cy5tYXAoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RXZlbnQgPSB7Li4uZXZlbnR9O1xuICAgICAgICAgICAgICBpZiAoY3VycmVudEV2ZW50LmFjdGl2aXR5X2lkID09PSBhY3Rpdml0eUlkKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEV2ZW50Lmludml0ZWRfbWVtYmVycyA9IHVwZGF0ZUludml0ZWRNZW1iZXJzKGN1cnJlbnRFdmVudC5pbnZpdGVkX21lbWJlcnMgfHwgW10sIHBheWxvYWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBjdXJyZW50RXZlbnQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnRTdGF0ZSBhcyBDYWxlbmRhclN0YXRlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RhdGU7XG59XG5cbi8vIC0tLSBSZWR1Y2VyIC0tLVxuXG5leHBvcnQgY29uc3QgY2FsZW5kYXJSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgaW5pdGlhbENhbGVuZGFyU3RhdGUsXG5cbiAgLy8gQ2xlYXIgQWN0aW9uc1xuICBvbihjbGVhclN0b3JlQWN0aW9uLCAoKSA9PiBpbml0aWFsQ2FsZW5kYXJTdGF0ZSksXG4gIG9uKGNsZWFyTWVtYmVyQWN0aXZpdHlBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eTogdW5kZWZpbmVkIH0pKSxcbiAgb24oY2xlYXJNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5SW52aXRlOiB1bmRlZmluZWQgfSkpLFxuICBvbihjbGVhck1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eTogdW5kZWZpbmVkIH0pKSxcbiAgb24oY2xlYXJUZWFtQWN0aXZpdHlBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHVuZGVmaW5lZCB9KSksXG5cbiAgLy8gTWVtYmVyIEFjdGl2aXR5IEludml0ZXNcbiAgb24ocmV0cmlldmVNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5SW52aXRlKSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5SW52aXRlOiByZXRyaWV2ZUxvYWRGYWlsdXJlPEFjdGl2aXR5SW52aXRlPihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5SW52aXRlOiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcblxuICAvLyBNZW1iZXIgQWN0aXZpdGllc1xuICBvbihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5OiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHkpIH0pKSxcbiAgb24ocmV0cmlldmVNZW1iZXJBY3Rpdml0eUZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyQWN0aXZpdHk6IHJldHJpZXZlTG9hZEZhaWx1cmU8QWN0aXZpdHk+KHBheWxvYWQpIH0pKSxcbiAgb24ocmV0cmlldmVNZW1iZXJBY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyQWN0aXZpdHk6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCkgfSkpLFxuXG4gIC8vIE1lbWJlciBPcGVuIEFjdGl2aXRpZXNcbiAgb24ocmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5OiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5jdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5KSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5RmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk6IHJldHJpZXZlTG9hZEZhaWx1cmU8T3BlbkFjdGl2aXR5PihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGxldCBuZXdTdGF0ZSA9IHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCkgfTtcblxuICAgIGlmIChuZXdTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWUucmVzdWx0ICYmIG5ld1N0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy52YWx1ZS5yZXN1bHQ/LmdldChwYXlsb2FkLm1lbWJlcl9pZCk/LmZpbmRJbmRleCgoaXRlbTogT3BlbkFjdGl2aXR5KSA9PiBpdGVtLmlkID09PSBwYXlsb2FkLmlkKSAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRBY3Rpdml0aWVzID0gbmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlLnJlc3VsdD8uZ2V0KHBheWxvYWQubWVtYmVyX2lkKT8ubWFwKChpdGVtOiBPcGVuQWN0aXZpdHkpID0+IGl0ZW0uaWQgPT09IHBheWxvYWQuaWQgPyBwYXlsb2FkIDogaXRlbSkgYXMgQXJyYXk8T3BlbkFjdGl2aXR5PjtcblxuICAgICAgbmV3U3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgICBtZW1iZXJPcGVuQWN0aXZpdGllczoge1xuICAgICAgICAgIHNlYXJjaFBhcmFtczogbmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnNlYXJjaFBhcmFtcyBhcyBPcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXNJbnRlcmZhY2UsXG4gICAgICAgICAgbWVtYmVySWRzOiBuZXdTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8ubWVtYmVySWRzIGFzIEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgICBsYXN0TG9hZGVkOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgcmVzdWx0OiBuZXdTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWUucmVzdWx0Py5zZXQocGF5bG9hZC5tZW1iZXJfaWQsIHVwZGF0ZWRBY3Rpdml0aWVzKSBhcyBNYXA8c3RyaW5nLCBBcnJheTxPcGVuQWN0aXZpdHk+PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgfSksXG5cbiAgLy8gTGlzdCBBbGwgTWVtYmVyIE9wZW4gQWN0aXZpdHkgTG9jYXRpb25zXG4gIG9uKGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBhbGxPcGVuQWN0aXZpdHlMb2NhdGlvbnM6IGxpc3RTdGFydExvYWRpbmcoc3RhdGUuYWxsT3BlbkFjdGl2aXR5TG9jYXRpb25zKSB9KSksXG4gIG9uKGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWxsT3BlbkFjdGl2aXR5TG9jYXRpb25zOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlMb2NhdGlvbj4ocGF5bG9hZCkgfSkpLFxuICBvbihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFsbE9wZW5BY3Rpdml0eUxvY2F0aW9uczogbGlzdExvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcblxuICAvLyBMaXN0IEFsbCBNZW1iZXIgT3BlbiBBY3Rpdml0eSBUeXBlc1xuICBvbihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBhbGxPcGVuQWN0aXZpdHlUeXBlczogbGlzdFN0YXJ0TG9hZGluZyhzdGF0ZS5hbGxPcGVuQWN0aXZpdHlUeXBlcykgfSkpLFxuICBvbihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWxsT3BlbkFjdGl2aXR5VHlwZXM6IGxpc3RMb2FkRmFpbHVyZTxBY3Rpdml0eVR5cGU+KHBheWxvYWQpIH0pKSxcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFsbE9wZW5BY3Rpdml0eVR5cGVzOiBsaXN0TG9hZFN1Y2Nlc3MocGF5bG9hZCkgfSkpLFxuXG4gIC8vIExpc3QgTWVtYmVyIEFjdGl2aXR5IEludml0ZXNcbiAgb24obGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc0FjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGFjdGl2aXR5SW52aXRlczogbGlzdFN0YXJ0TG9hZGluZyhzdGF0ZS5hY3Rpdml0eUludml0ZXMpIH0pKSxcbiAgb24obGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eUludml0ZXM6IGxpc3RMb2FkRmFpbHVyZTxBY3Rpdml0eUludml0ZT4ocGF5bG9hZCkgfSkpLFxuICBvbihsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFjdGl2aXR5SW52aXRlczogbGlzdExvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcblxuICAvLyBNZW1iZXIgQWN0aXZpdGllc1xuICBvbihsaXN0TWVtYmVyQWN0aXZpdGllc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJFdmVudHM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLm1lbWJlckV2ZW50cz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0aWVzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJFdmVudHM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlTG9hZEZhaWx1cmU8TWFwPHN0cmluZywgQXJyYXk8RXZlbnQ+Pj4ocGF5bG9hZC5lcnJvcilcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlckFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlckV2ZW50czoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIG1lbWJlcklkczogcGF5bG9hZC5tZW1iZXJJZHMsXG4gICAgICB2YWx1ZTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkLnJlc3VsdHMpXG4gICAgfVxuICB9KSksXG5cbiAgLy8gTWVtYmVyIE9wZW4gQWN0aXZpdGllc1xuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXRpZXM6IHtcbiAgICAgIHNlYXJjaFBhcmFtczogcGF5bG9hZC5vcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy52YWx1ZSlcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdGllczoge1xuICAgICAgc2VhcmNoUGFyYW1zOiBwYXlsb2FkLm9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtcyxcbiAgICAgIG1lbWJlcklkczogcGF5bG9hZC5tZW1iZXJJZHMsXG4gICAgICB2YWx1ZTogcmV0cmlldmVMb2FkRmFpbHVyZTxNYXA8c3RyaW5nLCBBcnJheTxPcGVuQWN0aXZpdHk+Pj4ocGF5bG9hZC5lcnJvcilcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdGllczoge1xuICAgICAgc2VhcmNoUGFyYW1zOiBwYXlsb2FkLm9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtcyxcbiAgICAgIG1lbWJlcklkczogcGF5bG9hZC5tZW1iZXJJZHMsXG4gICAgICB2YWx1ZTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkLnJlc3VsdHMpXG4gICAgfVxuICB9KSksXG5cbiAgLy8gTWVtYmVyIE9wZW4gQWN0aXZpdHkgTG9jYXRpb25zXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RTdGFydExvYWRpbmc8QWN0aXZpdHlMb2NhdGlvbj4oc3RhdGUubWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zPy52YWx1ZSlcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkRmFpbHVyZTxBY3Rpdml0eUxvY2F0aW9uPihwYXlsb2FkLmVycm9yKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdExvYWRTdWNjZXNzKHBheWxvYWQubG9jYXRpb25zKVxuICAgIH1cbiAgfSkpLFxuXG4gIC8vIE1lbWJlciBPcGVuIEFjdGl2aXR5IFR5cGVzXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdHlUeXBlczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0U3RhcnRMb2FkaW5nPEFjdGl2aXR5VHlwZT4oc3RhdGUubWVtYmVyT3BlbkFjdGl2aXR5VHlwZXM/LnZhbHVlKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eVR5cGVzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkRmFpbHVyZTxBY3Rpdml0eVR5cGU+KHBheWxvYWQuZXJyb3IpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXR5VHlwZXM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdExvYWRTdWNjZXNzKHBheWxvYWQudHlwZXMpXG4gICAgfVxuICB9KSksXG5cbiAgb24oZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlQWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUsIHtwYXlsb2FkfToge3BheWxvYWQ6IHt0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZUlkOiBzdHJpbmd9IH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0Py5hY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eUlkIHx8IHN0YXRlLnRlYW1FdmVudHM/LnZhbHVlLnJlc3VsdHMpIHtcbiAgICAgIGxldCBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAgIC4uLnN0YXRlXG4gICAgICB9O1xuXG4gICAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0Py5hY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eUlkKSB7XG4gICAgICAgIGN1cnJlbnRTdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5ID0ge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LFxuICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdCxcbiAgICAgICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQ/LmFjdGl2aXR5LFxuICAgICAgICAgICAgICBpbnZpdGVkX21lbWJlcnM6IGN1cnJlbnRTdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQ/LmFjdGl2aXR5Lmludml0ZWRfbWVtYmVycy5maWx0ZXIoYWN0aXZpdHlJbnZpdGUgPT4gYWN0aXZpdHlJbnZpdGUuaWQgIT09IHBheWxvYWQuYWN0aXZpdHlJbnZpdGVJZCkgfHwgW11cbiAgICAgICAgICAgIH0gYXMgQWN0aXZpdHlcbiAgICAgICAgICB9IGFzIFRlYW1BY3Rpdml0eUludGVyZmFjZVxuICAgICAgICB9IGFzIFJldHJpZXZlUmVzdWx0SW50ZXJmYWNlPFRlYW1BY3Rpdml0eUludGVyZmFjZT5cbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlLnRlYW1FdmVudHM/LnZhbHVlPy5yZXN1bHRzKSB7XG4gICAgICAgIGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzID0ge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUudGVhbUV2ZW50cz8udmFsdWUsXG4gICAgICAgICAgICByZXN1bHRzOiBjdXJyZW50U3RhdGUudGVhbUV2ZW50cz8udmFsdWUucmVzdWx0cy5tYXAoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZXZlbnQuYWN0aXZpdHlfaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAge1xuICAgICAgICAgICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgICAgICAgICBpbnZpdGVkX21lbWJlcnM6IGV2ZW50Lmludml0ZWRfbWVtYmVycz8uZmlsdGVyKChhY3Rpdml0eUludml0ZTogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IGFjdGl2aXR5SW52aXRlLmlkICE9PSBwYXlsb2FkLmFjdGl2aXR5SW52aXRlSWQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgICAgICAgIH0pIGFzIEFycmF5PEV2ZW50PlxuICAgICAgICAgIH0gYXMgTGlzdFJlc3VsdEludGVyZmFjZTxFdmVudD5cbiAgICAgICAgfSBhcyBUZWFtQ2FsZW5kYXJFdmVudFJlc3VsdEludGVyZmFjZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH0pLFxuXG4gIC8vIFRlYW0gQWN0aXZpdGllc1xuICBvbihsaXN0VGVhbUFjdGl2aXRpZXNBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgdGVhbUV2ZW50czoge1xuICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdFN0YXJ0TG9hZGluZyhzdGF0ZS50ZWFtRXZlbnRzPy52YWx1ZSlcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdFRlYW1BY3Rpdml0aWVzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICB0ZWFtRXZlbnRzOiB7XG4gICAgICB0ZWFtSWQ6IHBheWxvYWQudGVhbUlkLFxuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0TG9hZEZhaWx1cmU8RXZlbnQ+KHBheWxvYWQuZXJyb3IpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RUZWFtQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgdGVhbUV2ZW50czoge1xuICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdExvYWRTdWNjZXNzKHBheWxvYWQucmVzdWx0cylcbiAgICB9XG4gIH0pKSxcblxuICAvLyBUZWFtIEFjdGl2aXR5IFBhcnRpY2lwYW50c1xuICBvbihsaXN0VGVhbUFjdGl2aXR5UGFydGljaXBhbnRzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQgJiYgc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LFxuICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgICAgICBwYXJ0aWNpcGFudHM6IHBheWxvYWQucmVzdWx0c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbG9hZGluZzogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICAvLyBUZWFtIExlYWRlciBFeHRyYSBNZW1iZXJzXG4gIG9uKGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQgJiYgcGF5bG9hZC50ZWFtSWQgPT09IHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LnRlYW0uaWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgZXh0cmFNZW1iZXJzOiBwYXlsb2FkLnJlc3VsdHMsXG4gICAgICAgICAgICBleHRyYU1lbWJlcnNMb2FkZWQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0eSBBY3Rpb25zXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSkgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPFRlYW1BY3Rpdml0eUludGVyZmFjZT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlRUkNvZGVTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdCAmJiBwYXlsb2FkLmFjdGl2aXR5LmlkID09PSBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pZCAmJiBwYXlsb2FkLnRlYW1JZCA9PT0gc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQudGVhbS5pZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LFxuICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgICAgICBhY3Rpdml0eTogcGF5bG9hZC5hY3Rpdml0eVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICAvLyBUZWFtIEFjdGl2aXR5IFNldHRpbmdzXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eVNldHRpbmdzOiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5hY3Rpdml0eVNldHRpbmdzKSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlTZXR0aW5nczogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eVNldHRpbmdzPihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlTZXR0aW5nczogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gVGVhbSBEZWZhdWx0IEFjdGl2aXR5IFNldHRpbmdzXG4gIG9uKHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgbmV3VGVhbUFjdGl2aXR5OiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5uZXdUZWFtQWN0aXZpdHkpIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgbmV3VGVhbUFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPEFjdGl2aXR5PihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIG5ld1RlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gVXBkYXRlIE1lbWJlciBBY3Rpdml0eSBJbnZpdGVcbiAgb24odXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY3VycmVudE1lbWJlckFjdGl2aXR5SW52aXRlOiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpXG4gICAgfTtcblxuICAgIGlmIChjdXJyZW50U3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5Py5yZXN1bHQ/LlxuXG4gICAgICBpZCA9PT0gcGF5bG9hZC5hY3Rpdml0eS5pZCkge1xuICAgICAgY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eSA9IHtcbiAgICAgICAgLi4uY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eSxcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgICAgaW52aXRlZF9tZW1iZXJzOiB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZXMoXG4gICAgICAgICAgICBjdXJyZW50U3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5LnJlc3VsdC5pbnZpdGVkX21lbWJlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHM/LnZhbHVlPy5yZXN1bHQpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nRXZlbnRzID0gY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZS5yZXN1bHQuZ2V0KHBheWxvYWQubWVtYmVyLmlkKTtcblxuICAgICAgaWYgKGV4aXN0aW5nRXZlbnRzKSB7XG4gICAgICAgIGN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMgPSB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cyxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZSxcbiAgICAgICAgICAgIHJlc3VsdDogbmV3IE1hcChjdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzLnZhbHVlLnJlc3VsdCkuc2V0KFxuICAgICAgICAgICAgICBwYXlsb2FkLm1lbWJlci5pZCxcbiAgICAgICAgICAgICAgdXBkYXRlRXZlbnRJbnZpdGVzKGV4aXN0aW5nRXZlbnRzLCBwYXlsb2FkKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXM/LnJlc3VsdHMpIHtcbiAgICAgIGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXMgPSB7XG4gICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXMsXG4gICAgICAgIHJlc3VsdHM6IGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXMucmVzdWx0cy5tYXAoKGludml0ZTogQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgICAgICAgICBpZiAoaW52aXRlLmlkID09PSBwYXlsb2FkLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGludml0ZTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICB9KSxcblxuICAvLyBVcGRhdGUgTWVtYmVyIE9wZW4gQWN0aXZpdHlcbiAgb24odXBkYXRlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGxldCBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZClcbiAgICB9O1xuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWU/LnJlc3VsdCkge1xuICAgICAgY29uc3QgZXhpc3RpbmdPcGVuQWN0aXZpdGllcyA9IGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZS5yZXN1bHQuZ2V0KHBheWxvYWQubWVtYmVyX2lkKTtcblxuICAgICAgaWYgKGV4aXN0aW5nT3BlbkFjdGl2aXRpZXMpIHtcbiAgICAgICAgY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzID0ge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcyxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLnZhbHVlLFxuICAgICAgICAgICAgcmVzdWx0OiBuZXcgTWFwKGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZS5yZXN1bHQpLnNldChcbiAgICAgICAgICAgICAgcGF5bG9hZC5tZW1iZXJfaWQsXG4gICAgICAgICAgICAgIHVwZGF0ZU9wZW5BY3Rpdml0aWVzKGV4aXN0aW5nT3BlbkFjdGl2aXRpZXMsIHBheWxvYWQpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcz8ucmVzdWx0cykge1xuICAgICAgY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcyA9IHtcbiAgICAgICAgLi4uY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcyxcbiAgICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcy5yZXN1bHRzLm1hcCgoaW52aXRlOiBBY3Rpdml0eUludml0ZSkgPT4ge1xuICAgICAgICAgIGlmIChpbnZpdGUuYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGludml0ZWRNZW1iZXIgPSBwYXlsb2FkLmludml0ZWRfbWVtYmVycy5maW5kKChpbnZpdGVkTWVtYmVyOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gaW52aXRlZE1lbWJlci5pZCA9PT0gaW52aXRlLmlkKTtcblxuICAgICAgICAgICAgaWYgKGludml0ZWRNZW1iZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3Rpdml0eUludml0ZShcbiAgICAgICAgICAgICAgICBpbnZpdGUuaWQsXG4gICAgICAgICAgICAgICAgaW52aXRlLmFjdGl2aXR5LFxuICAgICAgICAgICAgICAgIGludml0ZWRNZW1iZXIuY29tbWVudCxcbiAgICAgICAgICAgICAgICBpbnZpdGUuY3JlYXRlZCxcbiAgICAgICAgICAgICAgICBpbnZpdGUuaGFzX3VucGFpZF9pbnZvaWNlcyxcbiAgICAgICAgICAgICAgICBpbnZpdGVkTWVtYmVyLmxhc3RfaW52aXRlIHx8ICcnIGFzIHN0cmluZyxcbiAgICAgICAgICAgICAgICBpbnZpdGUubGVhZGVyLFxuICAgICAgICAgICAgICAgIGludml0ZS5tZW1iZXIsXG4gICAgICAgICAgICAgICAgaW52aXRlZE1lbWJlci5uZXh0X2ludml0ZSxcbiAgICAgICAgICAgICAgICBpbnZpdGUucmVtaW5kZWQsXG4gICAgICAgICAgICAgICAgaW52aXRlZE1lbWJlci5yZXNwb25zZV9kYXRlLFxuICAgICAgICAgICAgICAgIGludml0ZWRNZW1iZXIuc3RhdHVzLFxuICAgICAgICAgICAgICAgIGludml0ZS50b2tlbixcbiAgICAgICAgICAgICAgICBpbnZpdGUudW5wYWlkX2ludm9pY2VzLFxuICAgICAgICAgICAgICAgIGludml0ZS51cGRhdGVkXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBpbnZpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpbnZpdGU7XG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gIH0pLFxuXG4gIC8vIFJlbW92ZSBtZW1iZXIgb3BlbiBhY3Rpdml0eVxuICBvbihyZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwgeyBwYXlsb2FkIH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nfX0pID0+IHtcbiAgICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgICAgLi4uc3RhdGVcbiAgICB9O1xuXG4gICAgaWYgKHN0YXRlLmN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk/LnJlc3VsdD8uaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCkge1xuICAgICAgY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHkgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWU/LnJlc3VsdCkge1xuICAgICAgY29uc3QgZXhpc3RpbmdPcGVuQWN0aXZpdGllcyA9IGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZS5yZXN1bHQuZ2V0KHBheWxvYWQubWVtYmVySWQpO1xuXG4gICAgICBpZiAoZXhpc3RpbmdPcGVuQWN0aXZpdGllcykge1xuICAgICAgICBjb25zdCB1cGRhdGVkT3BlbkFjdGl2aXRpZXMgPSBleGlzdGluZ09wZW5BY3Rpdml0aWVzLm1hcChcbiAgICAgICAgICAob3BlbkFjdGl2aXR5OiBPcGVuQWN0aXZpdHkpID0+IHtcbiAgICAgICAgICAgIGlmIChvcGVuQWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCAmJiBvcGVuQWN0aXZpdHkubWVtYmVyX2lkID09PSBwYXlsb2FkLm1lbWJlcklkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgT3BlbkFjdGl2aXR5KFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuYWN0aXZpdHlfZ3JvdXBfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFjdGl2aXR5X3R5cGVfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmNsdWJfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmxvY2F0aW9uX2lkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZW1iZXJfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnRlYW1faWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFjdGl2aXR5X2xvY2F0aW9uLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5hY3Rpdml0eV90eXBlX25hbWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFsbG93X21heWJlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jYWxlbmRhcl9uYW1lLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jcmVhdGVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jdXJyZW50X251bV9hdHRlbmRhbnRzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5kYXksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmRlZmF1bHRfZmVlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZW5kLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5lbmRfdGltZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZmlsZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRhdGlvbl90ZXh0LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfZmlyc3RfZGF5cyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlX2dyb3VwcyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlX2hpZGVfYmVmb3JlX3NlbnQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9sYXN0X3Jlc3BvbnNlX2RhdGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9yZW1pbmQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9yZW1pbmRfcmVjZWl2ZXJzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfc2Vjb25kX2RheXMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlZF9tZW1iZXJzLmZpbHRlcigoaW52aXRlOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gaW52aXRlLm1lbWJlcl9pZCAhPT0gcGF5bG9hZC5tZW1iZXJJZCksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmxhc3RfcmVzcG9uc2VfZGF0ZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubG9jYXRpb25fbmFtZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWF4X251bV9hdHRlbmRhbnRzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tYXhfbnVtX2F0dGVuZGFudHNfdHlwZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF9wbGFjZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF90aW1lLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZWV0X3VwX3RpbWVfZGlzcGxheSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF90aW1lX3Nob3csXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lbWJlcl9pbnZvaWNlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZW1iZXJfbmFtZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3Blbl9hY3Rpdml0eSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3B0aW9uYWxfZmVlcyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3B0aW9uYWxfZmVlX3JlcXVpcmVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5vcHRpb25hbF9mZWVfdHlwZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucmVwZWF0LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5yZXBlYXRfbnVtLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5yZXBlYXRfdG9fZGF5LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5yZXBlYXRfdHlwZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuc2hvd19vdGhlcl9pbnZpdGVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5zdGFydCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuc3RhcnRfdGltZSxcbiAgICAgICAgICAgICAgICAnd2FpdGluZycsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnRpdGxlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS51cGRhdGVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS51c2VfaW52aXRlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS51cGRhdGVfcmVwZWF0aW5nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvcGVuQWN0aXZpdHk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcyA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMsXG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZSxcbiAgICAgICAgICAgIHJlc3VsdDogbmV3IE1hcDxzdHJpbmcsIEFycmF5PE9wZW5BY3Rpdml0eT4+KGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZS5yZXN1bHQpLnNldChwYXlsb2FkLm1lbWJlcklkLCB1cGRhdGVkT3BlbkFjdGl2aXRpZXMpXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50U3RhdGVcbiAgfSksXG5cbiAgLy8gVXBkYXRlIFRlYW0gQWN0aXZpdHlcbiAgb24odXBkYXRlVGVhbUFjdGl2aXR5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSkgfSkpLFxuICBvbih1cGRhdGVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxUZWFtQWN0aXZpdHlJbnRlcmZhY2U+KHBheWxvYWQpIH0pKSxcbiAgb24odXBkYXRlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQgJiYgcGF5bG9hZC5pZCA9PT0gc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgYWN0aXZpdHk6IHBheWxvYWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gUmVzZW5kIHRlYW0gYWN0aXZpdHkgaW52aXRlXG4gIG9uKHJlc2VuZFRlYW1BY3Rpdml0eU1lbWJlckludml0ZVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwge3BheWxvYWR9OiB7cGF5bG9hZDogQWN0aXZpdHlJbnZpdGV9KSA9PiB1cGRhdGVUZWFtQWN0aXZpdHlJbnZpdGUoc3RhdGUsIHBheWxvYWQpKSxcblxuICAvLyBVcGRhdGUgVGVhbSBhY3Rpdml0eSBpbnZpdGVcbiAgb24odXBkYXRlVGVhbU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlLCB7cGF5bG9hZH06IHtwYXlsb2FkOiBNZW1iZXJBY3Rpdml0eUludml0ZX0pID0+IHVwZGF0ZVRlYW1BY3Rpdml0eUludml0ZShzdGF0ZSwgcGF5bG9hZCkpLFxuXG4gIC8vIERlbGV0ZSBUZWFtIEFjdGl2aXR5XG4gIG9uKGRlbGV0ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwge3BheWxvYWR9OiB7cGF5bG9hZDogc3RyaW5nfSkgPT4ge1xuICAgIGxldCBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlPy5yZXN1bHRzKSB7XG4gICAgICBjdXJyZW50U3RhdGUudGVhbUV2ZW50cyA9IHtcbiAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHMsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHMudmFsdWUsXG4gICAgICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLnRlYW1FdmVudHMudmFsdWUucmVzdWx0cy5maWx0ZXIoKGV2ZW50OiBFdmVudCkgPT4gZXZlbnQuaWQgIT09IHBheWxvYWQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICB9KSxcblxuICAvLyBDcmVhdGUgVGVhbSBBY3Rpdml0eVxuICBvbihjcmVhdGVUZWFtQWN0aXZpdHlBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5KSB9KSksXG5cbiAgLy8gRmFpbHVyZSBIYW5kbGVyc1xuICBvbihjcmVhdGVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxUZWFtQWN0aXZpdHlJbnRlcmZhY2U+KHBheWxvYWQpIH0pKVxuKTtcbiJdfQ==
477
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvcmVkdWNlcnMvY2FsZW5kYXIucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9ELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLDZCQUE2QixFQUM3QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIsK0JBQStCLEVBQUUsOEJBQThCLEVBQy9ELCtCQUErQixFQUMvQix3Q0FBd0MsRUFDeEMsK0NBQStDLEVBQy9DLCtDQUErQyxFQUMvQyxvQ0FBb0MsRUFDcEMsMkNBQTJDLEVBQzNDLDJDQUEyQyxFQUMzQywwQkFBMEIsRUFDMUIsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQywrQkFBK0IsRUFDL0Isc0NBQXNDLEVBQ3RDLHNDQUFzQyxFQUN0Qyw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyxxQ0FBcUMsRUFDckMsNENBQTRDLEVBQzVDLDRDQUE0QyxFQUM1QyxpQ0FBaUMsRUFDakMsd0NBQXdDLEVBQ3hDLHdDQUF3QyxFQUN4Qyx3QkFBd0IsRUFDeEIsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQix5Q0FBeUMsRUFDekMsdUNBQXVDLEVBQ3ZDLDhCQUE4QixFQUM5QiwyQ0FBMkMsRUFDM0MsNEJBQTRCLEVBQzVCLG1DQUFtQyxFQUNuQyxrQ0FBa0MsRUFDbEMseUNBQXlDLEVBQ3pDLHlDQUF5QyxFQUN6QyxtQ0FBbUMsRUFDbkMsZ0NBQWdDLEVBQ2hDLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsRUFDdkMsMEJB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Q0FBQztJQUVGLElBQUksWUFBWSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDNUMsWUFBWSxDQUFDLFVBQVUsR0FBRztZQUN4QixHQUFHLFlBQVksQ0FBQyxVQUFVO1lBQzFCLEtBQUssRUFBRTtnQkFDTCxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSztnQkFDaEMsT0FBTyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDO2FBQzlGO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRix1QkFBdUI7QUFDdkIsRUFBRSxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUUzSCxtQkFBbUI7QUFDbkIsRUFBRSxDQUFDLCtCQUErQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBd0IsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3RKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWR1Y2VyLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENhbGVuZGFyU3RhdGUsIGluaXRpYWxDYWxlbmRhclN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHtcbiAgY2xlYXJNZW1iZXJBY3Rpdml0eUFjdGlvbixcbiAgY2xlYXJNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbixcbiAgY2xlYXJNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sXG4gIGNsZWFyU3RvcmVBY3Rpb24sXG4gIGNsZWFyVGVhbUFjdGl2aXR5QWN0aW9uLFxuICBjbGVhclRlYW1BY3Rpdml0aWVzQWN0aW9uLFxuICBjcmVhdGVUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24sIGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZUFjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0FjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNTdWNjZXNzQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0aWVzQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc0FjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc1N1Y2Nlc3NBY3Rpb24sXG4gIHJlbW92ZU1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbixcbiAgcmVzZW5kVGVhbUFjdGl2aXR5TWVtYmVySW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlRUkNvZGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eUFjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlVGVhbU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgQWN0aXZpdHlJbnZpdGUsXG4gIEFjdGl2aXR5TG9jYXRpb24sXG4gIEFjdGl2aXR5U2V0dGluZ3MsXG4gIEFjdGl2aXR5VHlwZSxcbiAgRXZlbnQsXG4gIE1lbWJlckFjdGl2aXR5SW52aXRlLFxuICBPcGVuQWN0aXZpdHlcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtc0ludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgTGlzdFJlc3VsdEludGVyZmFjZSxcbiAgUmV0cmlldmVSZXN1bHRJbnRlcmZhY2UsXG4gIFRlYW1BY3Rpdml0eUludGVyZmFjZSxcbiAgVGVhbUNhbGVuZGFyRXZlbnRSZXN1bHRJbnRlcmZhY2Vcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBsaXN0TG9hZEZhaWx1cmUsXG4gIGxpc3RMb2FkU3VjY2VzcyxcbiAgbGlzdFN0YXJ0TG9hZGluZyxcbiAgcmV0cmlldmVMb2FkRmFpbHVyZSxcbiAgcmV0cmlldmVMb2FkU3VjY2VzcyxcbiAgcmV0cmlldmVTdGFydExvYWRpbmdcbn0gZnJvbSAnLi9yZWR1Y2VyLWhlbHBlcnMnO1xuXG4vLyAtLS0gSGVscGVyIEZ1bmN0aW9ucyAtLS1cblxuY29uc3QgdXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGVzID0gKGludml0ZXM6IEFycmF5PE1lbWJlckFjdGl2aXR5SW52aXRlPiB8IHVuZGVmaW5lZCB8IG51bGwsIHBheWxvYWQ6IEFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIGlmICghaW52aXRlcykgcmV0dXJuIFtdO1xuICByZXR1cm4gaW52aXRlcy5tYXAoKGludml0ZTogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgICBpZiAoaW52aXRlLm1lbWJlcl9pZCA9PT0gcGF5bG9hZC5tZW1iZXIuaWQpIHtcbiAgICAgIHJldHVybiBuZXcgTWVtYmVyQWN0aXZpdHlJbnZpdGUoXG4gICAgICAgIGludml0ZS5pZCxcbiAgICAgICAgcGF5bG9hZC5jb21tZW50LFxuICAgICAgICBpbnZpdGUuY3VycmVudF9udW1fYXR0ZW5kYW50cyxcbiAgICAgICAgcGF5bG9hZC5sYXN0X2ludml0ZSxcbiAgICAgICAgcGF5bG9hZC5sZWFkZXIsXG4gICAgICAgIHBheWxvYWQubWVtYmVyLmVtYWlsLFxuICAgICAgICBwYXlsb2FkLm1lbWJlci5pZCxcbiAgICAgICAgcGF5bG9hZC5tZW1iZXIubmFtZSxcbiAgICAgICAgcGF5bG9hZC5uZXh0X2ludml0ZSxcbiAgICAgICAgcGF5bG9hZC5yZXNwb25zZV9kYXRlLFxuICAgICAgICBwYXlsb2FkLnN0YXR1c1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGludml0ZTtcbiAgfSk7XG59O1xuXG5jb25zdCB1cGRhdGVFdmVudEludml0ZXMgPSAoZXZlbnRzOiBBcnJheTxFdmVudD4sIHBheWxvYWQ6IEFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIHJldHVybiBldmVudHMubWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQuaW52aXRhdGlvbl9pZCA9PT0gcGF5bG9hZC5pZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgIGludml0YXRpb25fcmVzcG9uc2U6IHBheWxvYWQuc3RhdHVzLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9KTtcbn07XG5cbmNvbnN0IHVwZGF0ZUludml0ZWRNZW1iZXJzID0gKGludml0ZWRNZW1iZXJzOiBBcnJheTxNZW1iZXJBY3Rpdml0eUludml0ZT4sIHBheWxvYWQ6IEFjdGl2aXR5SW52aXRlIHwgTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgcmV0dXJuIGludml0ZWRNZW1iZXJzLm1hcCgodmFsdWU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiB7XG4gICAgaWYgKHZhbHVlLmlkID09PSBwYXlsb2FkLmlkKSB7XG4gICAgICByZXR1cm4gbmV3IE1lbWJlckFjdGl2aXR5SW52aXRlKFxuICAgICAgICB2YWx1ZS5pZCxcbiAgICAgICAgcGF5bG9hZC5jb21tZW50LFxuICAgICAgICB2YWx1ZS5jdXJyZW50X251bV9hdHRlbmRhbnRzLFxuICAgICAgICBwYXlsb2FkLmxhc3RfaW52aXRlLFxuICAgICAgICB2YWx1ZS5sZWFkZXIsXG4gICAgICAgIHZhbHVlLm1lbWJlcl9lbWFpbCxcbiAgICAgICAgdmFsdWUubWVtYmVyX2lkLFxuICAgICAgICB2YWx1ZS5tZW1iZXJfbmFtZSxcbiAgICAgICAgcGF5bG9hZC5uZXh0X2ludml0ZSxcbiAgICAgICAgcGF5bG9hZC5yZXNwb25zZV9kYXRlLFxuICAgICAgICBwYXlsb2FkLnN0YXR1c1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0pO1xufTtcblxuY29uc3QgdXBkYXRlT3BlbkFjdGl2aXRpZXMgPSAob3BlbkFjdGl2aXRpZXM6IEFycmF5PE9wZW5BY3Rpdml0eT4sIHBheWxvYWQ6IE9wZW5BY3Rpdml0eSkgPT4ge1xuICByZXR1cm4gb3BlbkFjdGl2aXRpZXMubWFwKChvcGVuQWN0aXZpdHk6IE9wZW5BY3Rpdml0eSkgPT4ge1xuICAgIGlmIChvcGVuQWN0aXZpdHkuaWQgPT09IHBheWxvYWQuaWQpIHtcbiAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH1cbiAgICByZXR1cm4gb3BlbkFjdGl2aXR5O1xuICB9KTtcbn07XG5cbmNvbnN0IHVwZGF0ZVRlYW1BY3Rpdml0eUludml0ZSA9IChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwgcGF5bG9hZDogQWN0aXZpdHlJbnZpdGUgfCBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4ge1xuICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0KSB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5Lmludml0ZWRfbWVtYmVycy5maW5kSW5kZXgoKHZhbHVlOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gdmFsdWUuaWQgPT09IHBheWxvYWQuaWQpICE9PSAtMSkge1xuICAgICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LFxuICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eSxcbiAgICAgICAgICAgICAgaW52aXRlZF9tZW1iZXJzOiB1cGRhdGVJbnZpdGVkTWVtYmVycyhzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pbnZpdGVkX21lbWJlcnMsIHBheWxvYWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBhY3Rpdml0eUlkID0gY3VycmVudFN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkO1xuXG4gICAgICBpZiAoY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlPy5yZXN1bHRzKSB7XG4gICAgICAgIGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzID0ge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUudGVhbUV2ZW50cy52YWx1ZSxcbiAgICAgICAgICAgIHJlc3VsdHM6IGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLnZhbHVlLnJlc3VsdHMubWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudEV2ZW50ID0gey4uLmV2ZW50fTtcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFdmVudC5hY3Rpdml0eV9pZCA9PT0gYWN0aXZpdHlJZCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRFdmVudC5pbnZpdGVkX21lbWJlcnMgPSB1cGRhdGVJbnZpdGVkTWVtYmVycyhjdXJyZW50RXZlbnQuaW52aXRlZF9tZW1iZXJzIHx8IFtdLCBwYXlsb2FkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gY3VycmVudEV2ZW50O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjdXJyZW50U3RhdGUgYXMgQ2FsZW5kYXJTdGF0ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vLyAtLS0gUmVkdWNlciAtLS1cblxuZXhwb3J0IGNvbnN0IGNhbGVuZGFyUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gIGluaXRpYWxDYWxlbmRhclN0YXRlLFxuXG4gIC8vIENsZWFyIEFjdGlvbnNcbiAgb24oY2xlYXJTdG9yZUFjdGlvbiwgKCkgPT4gaW5pdGlhbENhbGVuZGFyU3RhdGUpLFxuICBvbihjbGVhck1lbWJlckFjdGl2aXR5QWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUpID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyQWN0aXZpdHk6IHVuZGVmaW5lZCB9KSksXG4gIG9uKGNsZWFyTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogdW5kZWZpbmVkIH0pKSxcbiAgb24oY2xlYXJNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk6IHVuZGVmaW5lZCB9KSksXG4gIG9uKGNsZWFyVGVhbUFjdGl2aXR5QWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUpID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiB1bmRlZmluZWQgfSkpLFxuICBvbihjbGVhclRlYW1BY3Rpdml0aWVzQWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUpID0+ICh7IC4uLnN0YXRlLCB0ZWFtRXZlbnRzOiB1bmRlZmluZWQgfSkpLFxuXG4gIC8vIE1lbWJlciBBY3Rpdml0eSBJbnZpdGVzXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyQWN0aXZpdHlJbnZpdGU6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZSkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eUludml0ZT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gTWVtYmVyIEFjdGl2aXRpZXNcbiAgb24ocmV0cmlldmVNZW1iZXJBY3Rpdml0eUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5KSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPEFjdGl2aXR5PihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5OiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcblxuICAvLyBNZW1iZXIgT3BlbiBBY3Rpdml0aWVzXG4gIG9uKHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eSkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPE9wZW5BY3Rpdml0eT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBsZXQgbmV3U3RhdGUgPSB7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5OiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH07XG5cbiAgICBpZiAobmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlLnJlc3VsdCAmJiBuZXdTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWUucmVzdWx0Py5nZXQocGF5bG9hZC5tZW1iZXJfaWQpPy5maW5kSW5kZXgoKGl0ZW06IE9wZW5BY3Rpdml0eSkgPT4gaXRlbS5pZCA9PT0gcGF5bG9hZC5pZCkgIT09IC0xKSB7XG4gICAgICBjb25zdCB1cGRhdGVkQWN0aXZpdGllcyA9IG5ld1N0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy52YWx1ZS5yZXN1bHQ/LmdldChwYXlsb2FkLm1lbWJlcl9pZCk/Lm1hcCgoaXRlbTogT3BlbkFjdGl2aXR5KSA9PiBpdGVtLmlkID09PSBwYXlsb2FkLmlkID8gcGF5bG9hZCA6IGl0ZW0pIGFzIEFycmF5PE9wZW5BY3Rpdml0eT47XG5cbiAgICAgIG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAgbWVtYmVyT3BlbkFjdGl2aXRpZXM6IHtcbiAgICAgICAgICBzZWFyY2hQYXJhbXM6IG5ld1N0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy5zZWFyY2hQYXJhbXMgYXMgT3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zSW50ZXJmYWNlLFxuICAgICAgICAgIG1lbWJlcklkczogbmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/Lm1lbWJlcklkcyBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgbGFzdExvYWRlZDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHJlc3VsdDogbmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlLnJlc3VsdD8uc2V0KHBheWxvYWQubWVtYmVyX2lkLCB1cGRhdGVkQWN0aXZpdGllcykgYXMgTWFwPHN0cmluZywgQXJyYXk8T3BlbkFjdGl2aXR5Pj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3U3RhdGU7XG4gIH0pLFxuXG4gIC8vIExpc3QgQWxsIE1lbWJlciBPcGVuIEFjdGl2aXR5IExvY2F0aW9uc1xuICBvbihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgYWxsT3BlbkFjdGl2aXR5TG9jYXRpb25zOiBsaXN0U3RhcnRMb2FkaW5nKHN0YXRlLmFsbE9wZW5BY3Rpdml0eUxvY2F0aW9ucykgfSkpLFxuICBvbihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFsbE9wZW5BY3Rpdml0eUxvY2F0aW9uczogbGlzdExvYWRGYWlsdXJlPEFjdGl2aXR5TG9jYXRpb24+KHBheWxvYWQpIH0pKSxcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhbGxPcGVuQWN0aXZpdHlMb2NhdGlvbnM6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gTGlzdCBBbGwgTWVtYmVyIE9wZW4gQWN0aXZpdHkgVHlwZXNcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgYWxsT3BlbkFjdGl2aXR5VHlwZXM6IGxpc3RTdGFydExvYWRpbmcoc3RhdGUuYWxsT3BlbkFjdGl2aXR5VHlwZXMpIH0pKSxcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFsbE9wZW5BY3Rpdml0eVR5cGVzOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlUeXBlPihwYXlsb2FkKSB9KSksXG4gIG9uKGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhbGxPcGVuQWN0aXZpdHlUeXBlczogbGlzdExvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcblxuICAvLyBMaXN0IE1lbWJlciBBY3Rpdml0eSBJbnZpdGVzXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eUludml0ZXM6IGxpc3RTdGFydExvYWRpbmcoc3RhdGUuYWN0aXZpdHlJbnZpdGVzKSB9KSksXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlJbnZpdGVzOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlJbnZpdGU+KHBheWxvYWQpIH0pKSxcbiAgb24obGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eUludml0ZXM6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gTWVtYmVyIEFjdGl2aXRpZXNcbiAgb24obGlzdE1lbWJlckFjdGl2aXRpZXNBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyRXZlbnRzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5tZW1iZXJFdmVudHM/LnZhbHVlKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyRXZlbnRzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZUxvYWRGYWlsdXJlPE1hcDxzdHJpbmcsIEFycmF5PEV2ZW50Pj4+KHBheWxvYWQuZXJyb3IpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJFdmVudHM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZC5yZXN1bHRzKVxuICAgIH1cbiAgfSkpLFxuXG4gIC8vIE1lbWJlciBPcGVuIEFjdGl2aXRpZXNcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0aWVzOiB7XG4gICAgICBzZWFyY2hQYXJhbXM6IHBheWxvYWQub3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXRpZXM6IHtcbiAgICAgIHNlYXJjaFBhcmFtczogcGF5bG9hZC5vcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlTG9hZEZhaWx1cmU8TWFwPHN0cmluZywgQXJyYXk8T3BlbkFjdGl2aXR5Pj4+KHBheWxvYWQuZXJyb3IpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXRpZXM6IHtcbiAgICAgIHNlYXJjaFBhcmFtczogcGF5bG9hZC5vcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZC5yZXN1bHRzKVxuICAgIH1cbiAgfSkpLFxuXG4gIC8vIE1lbWJlciBPcGVuIEFjdGl2aXR5IExvY2F0aW9uc1xuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0U3RhcnRMb2FkaW5nPEFjdGl2aXR5TG9jYXRpb24+KHN0YXRlLm1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9ucz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlMb2NhdGlvbj4ocGF5bG9hZC5lcnJvcilcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkLmxvY2F0aW9ucylcbiAgICB9XG4gIH0pKSxcblxuICAvLyBNZW1iZXIgT3BlbiBBY3Rpdml0eSBUeXBlc1xuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXR5VHlwZXM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdFN0YXJ0TG9hZGluZzxBY3Rpdml0eVR5cGU+KHN0YXRlLm1lbWJlck9wZW5BY3Rpdml0eVR5cGVzPy52YWx1ZSlcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdHlUeXBlczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlUeXBlPihwYXlsb2FkLmVycm9yKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eVR5cGVzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkLnR5cGVzKVxuICAgIH1cbiAgfSkpLFxuXG4gIG9uKGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZUFjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlLCB7cGF5bG9hZH06IHtwYXlsb2FkOiB7dGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nfSB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdD8uYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCB8fCBzdGF0ZS50ZWFtRXZlbnRzPy52YWx1ZS5yZXN1bHRzKSB7XG4gICAgICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZVxuICAgICAgfTtcblxuICAgICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdD8uYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCkge1xuICAgICAgICBjdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQsXG4gICAgICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0Py5hY3Rpdml0eSxcbiAgICAgICAgICAgICAgaW52aXRlZF9tZW1iZXJzOiBjdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0Py5hY3Rpdml0eS5pbnZpdGVkX21lbWJlcnMuZmlsdGVyKGFjdGl2aXR5SW52aXRlID0+IGFjdGl2aXR5SW52aXRlLmlkICE9PSBwYXlsb2FkLmFjdGl2aXR5SW52aXRlSWQpIHx8IFtdXG4gICAgICAgICAgICB9IGFzIEFjdGl2aXR5XG4gICAgICAgICAgfSBhcyBUZWFtQWN0aXZpdHlJbnRlcmZhY2VcbiAgICAgICAgfSBhcyBSZXRyaWV2ZVJlc3VsdEludGVyZmFjZTxUZWFtQWN0aXZpdHlJbnRlcmZhY2U+XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS50ZWFtRXZlbnRzPy52YWx1ZT8ucmVzdWx0cykge1xuICAgICAgICBjdXJyZW50U3RhdGUudGVhbUV2ZW50cyA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUudGVhbUV2ZW50cyxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlLFxuICAgICAgICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlLnJlc3VsdHMubWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmFjdGl2aXR5X2lkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIHtcbiAgICAgICAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgICAgICAgaW52aXRlZF9tZW1iZXJzOiBldmVudC5pbnZpdGVkX21lbWJlcnM/LmZpbHRlcigoYWN0aXZpdHlJbnZpdGU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiBhY3Rpdml0eUludml0ZS5pZCAhPT0gcGF5bG9hZC5hY3Rpdml0eUludml0ZUlkKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICAgICAgICB9KSBhcyBBcnJheTxFdmVudD5cbiAgICAgICAgICB9IGFzIExpc3RSZXN1bHRJbnRlcmZhY2U8RXZlbnQ+XG4gICAgICAgIH0gYXMgVGVhbUNhbGVuZGFyRXZlbnRSZXN1bHRJbnRlcmZhY2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICAvLyBUZWFtIEFjdGl2aXRpZXNcbiAgb24obGlzdFRlYW1BY3Rpdml0aWVzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIHRlYW1FdmVudHM6IHtcbiAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RTdGFydExvYWRpbmcoc3RhdGUudGVhbUV2ZW50cz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RUZWFtQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgdGVhbUV2ZW50czoge1xuICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdExvYWRGYWlsdXJlPEV2ZW50PihwYXlsb2FkLmVycm9yKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0VGVhbUFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIHRlYW1FdmVudHM6IHtcbiAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkLnJlc3VsdHMpXG4gICAgfVxuICB9KSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0eSBQYXJ0aWNpcGFudHNcbiAgb24obGlzdFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50c1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgcGFydGljaXBhbnRzOiBwYXlsb2FkLnJlc3VsdHNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gVGVhbSBMZWFkZXIgRXh0cmEgTWVtYmVyc1xuICBvbihsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHBheWxvYWQudGVhbUlkID09PSBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC50ZWFtLmlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIGV4dHJhTWVtYmVyczogcGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICAgICAgZXh0cmFNZW1iZXJzTG9hZGVkOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsb2FkaW5nOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH0pLFxuXG4gIC8vIFRlYW0gQWN0aXZpdHkgQWN0aW9uc1xuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkpIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxUZWFtQWN0aXZpdHlJbnRlcmZhY2U+KHBheWxvYWQpIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5UVJDb2RlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQgJiYgcGF5bG9hZC5hY3Rpdml0eS5pZCA9PT0gc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaWQgJiYgcGF5bG9hZC50ZWFtSWQgPT09IHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LnRlYW0uaWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgYWN0aXZpdHk6IHBheWxvYWQuYWN0aXZpdHlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0eSBTZXR0aW5nc1xuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlTZXR0aW5nczogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuYWN0aXZpdHlTZXR0aW5ncykgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFjdGl2aXR5U2V0dGluZ3M6IHJldHJpZXZlTG9hZEZhaWx1cmU8QWN0aXZpdHlTZXR0aW5ncz4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFjdGl2aXR5U2V0dGluZ3M6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCkgfSkpLFxuXG4gIC8vIFRlYW0gRGVmYXVsdCBBY3Rpdml0eSBTZXR0aW5nc1xuICBvbihyZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc0FjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIG5ld1RlYW1BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUubmV3VGVhbUFjdGl2aXR5KSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIG5ld1RlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBuZXdUZWFtQWN0aXZpdHk6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCkgfSkpLFxuXG4gIC8vIFVwZGF0ZSBNZW1iZXIgQWN0aXZpdHkgSW52aXRlXG4gIG9uKHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGxldCBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKVxuICAgIH07XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eT8ucmVzdWx0Py5cblxuICAgICAgaWQgPT09IHBheWxvYWQuYWN0aXZpdHkuaWQpIHtcbiAgICAgIGN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHkgPSB7XG4gICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHksXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgIGludml0ZWRfbWVtYmVyczogdXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGVzKFxuICAgICAgICAgICAgY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eS5yZXN1bHQuaW52aXRlZF9tZW1iZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzPy52YWx1ZT8ucmVzdWx0KSB7XG4gICAgICBjb25zdCBleGlzdGluZ0V2ZW50cyA9IGN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMudmFsdWUucmVzdWx0LmdldChwYXlsb2FkLm1lbWJlci5pZCk7XG5cbiAgICAgIGlmIChleGlzdGluZ0V2ZW50cykge1xuICAgICAgICBjdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzID0ge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMsXG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMudmFsdWUsXG4gICAgICAgICAgICByZXN1bHQ6IG5ldyBNYXAoY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZS5yZXN1bHQpLnNldChcbiAgICAgICAgICAgICAgcGF5bG9hZC5tZW1iZXIuaWQsXG4gICAgICAgICAgICAgIHVwZGF0ZUV2ZW50SW52aXRlcyhleGlzdGluZ0V2ZW50cywgcGF5bG9hZClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzPy5yZXN1bHRzKSB7XG4gICAgICBjdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzID0ge1xuICAgICAgICAuLi5jdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzLFxuICAgICAgICByZXN1bHRzOiBjdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzLnJlc3VsdHMubWFwKChpbnZpdGU6IEFjdGl2aXR5SW52aXRlKSA9PiB7XG4gICAgICAgICAgaWYgKGludml0ZS5pZCA9PT0gcGF5bG9hZC5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpbnZpdGU7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbiAgfSksXG5cbiAgLy8gVXBkYXRlIE1lbWJlciBPcGVuIEFjdGl2aXR5XG4gIG9uKHVwZGF0ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBjdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5OiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpXG4gICAgfTtcblxuICAgIGlmIChjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlPy5yZXN1bHQpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nT3BlbkFjdGl2aXRpZXMgPSBjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMudmFsdWUucmVzdWx0LmdldChwYXlsb2FkLm1lbWJlcl9pZCk7XG5cbiAgICAgIGlmIChleGlzdGluZ09wZW5BY3Rpdml0aWVzKSB7XG4gICAgICAgIGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcyA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMsXG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZSxcbiAgICAgICAgICAgIHJlc3VsdDogbmV3IE1hcChjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMudmFsdWUucmVzdWx0KS5zZXQoXG4gICAgICAgICAgICAgIHBheWxvYWQubWVtYmVyX2lkLFxuICAgICAgICAgICAgICB1cGRhdGVPcGVuQWN0aXZpdGllcyhleGlzdGluZ09wZW5BY3Rpdml0aWVzLCBwYXlsb2FkKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXM/LnJlc3VsdHMpIHtcbiAgICAgIGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXMgPSB7XG4gICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXMsXG4gICAgICAgIHJlc3VsdHM6IGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXMucmVzdWx0cy5tYXAoKGludml0ZTogQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgICAgICAgICBpZiAoaW52aXRlLmFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmlkKSB7XG4gICAgICAgICAgICBjb25zdCBpbnZpdGVkTWVtYmVyID0gcGF5bG9hZC5pbnZpdGVkX21lbWJlcnMuZmluZCgoaW52aXRlZE1lbWJlcjogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IGludml0ZWRNZW1iZXIuaWQgPT09IGludml0ZS5pZCk7XG5cbiAgICAgICAgICAgIGlmIChpbnZpdGVkTWVtYmVyKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgQWN0aXZpdHlJbnZpdGUoXG4gICAgICAgICAgICAgICAgaW52aXRlLmlkLFxuICAgICAgICAgICAgICAgIGludml0ZS5hY3Rpdml0eSxcbiAgICAgICAgICAgICAgICBpbnZpdGVkTWVtYmVyLmNvbW1lbnQsXG4gICAgICAgICAgICAgICAgaW52aXRlLmNyZWF0ZWQsXG4gICAgICAgICAgICAgICAgaW52aXRlLmhhc191bnBhaWRfaW52b2ljZXMsXG4gICAgICAgICAgICAgICAgaW52aXRlZE1lbWJlci5sYXN0X2ludml0ZSB8fCAnJyBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgaW52aXRlLmxlYWRlcixcbiAgICAgICAgICAgICAgICBpbnZpdGUubWVtYmVyLFxuICAgICAgICAgICAgICAgIGludml0ZWRNZW1iZXIubmV4dF9pbnZpdGUsXG4gICAgICAgICAgICAgICAgaW52aXRlLnJlbWluZGVkLFxuICAgICAgICAgICAgICAgIGludml0ZWRNZW1iZXIucmVzcG9uc2VfZGF0ZSxcbiAgICAgICAgICAgICAgICBpbnZpdGVkTWVtYmVyLnN0YXR1cyxcbiAgICAgICAgICAgICAgICBpbnZpdGUudG9rZW4sXG4gICAgICAgICAgICAgICAgaW52aXRlLnVucGFpZF9pbnZvaWNlcyxcbiAgICAgICAgICAgICAgICBpbnZpdGUudXBkYXRlZFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gaW52aXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaW52aXRlO1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICB9KSxcblxuICAvLyBSZW1vdmUgbWVtYmVyIG9wZW4gYWN0aXZpdHlcbiAgb24ocmVtb3ZlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUsIHsgcGF5bG9hZCB9OiB7cGF5bG9hZDoge21lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZ319KSA9PiB7XG4gICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlXG4gICAgfTtcblxuICAgIGlmIChzdGF0ZS5jdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5Py5yZXN1bHQ/LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgIGN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlPy5yZXN1bHQpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nT3BlbkFjdGl2aXRpZXMgPSBjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMudmFsdWUucmVzdWx0LmdldChwYXlsb2FkLm1lbWJlcklkKTtcblxuICAgICAgaWYgKGV4aXN0aW5nT3BlbkFjdGl2aXRpZXMpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZE9wZW5BY3Rpdml0aWVzID0gZXhpc3RpbmdPcGVuQWN0aXZpdGllcy5tYXAoXG4gICAgICAgICAgKG9wZW5BY3Rpdml0eTogT3BlbkFjdGl2aXR5KSA9PiB7XG4gICAgICAgICAgICBpZiAob3BlbkFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQgJiYgb3BlbkFjdGl2aXR5Lm1lbWJlcl9pZCA9PT0gcGF5bG9hZC5tZW1iZXJJZCkge1xuICAgICAgICAgICAgICByZXR1cm4gbmV3IE9wZW5BY3Rpdml0eShcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFjdGl2aXR5X2dyb3VwX2lkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5hY3Rpdml0eV90eXBlX2lkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jbHViX2lkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5sb2NhdGlvbl9pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVtYmVyX2lkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS50ZWFtX2lkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5hY3Rpdml0eV9sb2NhdGlvbixcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuYWN0aXZpdHlfdHlwZV9uYW1lLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5hbGxvd19tYXliZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuY2FsZW5kYXJfbmFtZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuY3JlYXRlZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuY3VycmVudF9udW1fYXR0ZW5kYW50cyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZGF5LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5kZWZhdWx0X2ZlZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmVuZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZW5kX3RpbWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmZpbGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0YXRpb25fdGV4dCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlX2ZpcnN0X2RheXMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9ncm91cHMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9oaWRlX2JlZm9yZV9zZW50LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfbGFzdF9yZXNwb25zZV9kYXRlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfcmVtaW5kLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfcmVtaW5kX3JlY2VpdmVycyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlX3NlY29uZF9kYXlzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZWRfbWVtYmVycy5maWx0ZXIoKGludml0ZTogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IGludml0ZS5tZW1iZXJfaWQgIT09IHBheWxvYWQubWVtYmVySWQpLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5sYXN0X3Jlc3BvbnNlX2RhdGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmxvY2F0aW9uX25hbWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1heF9udW1fYXR0ZW5kYW50cyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWF4X251bV9hdHRlbmRhbnRzX3R5cGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lZXRfdXBfcGxhY2UsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lZXRfdXBfdGltZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF90aW1lX2Rpc3BsYXksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lZXRfdXBfdGltZV9zaG93LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZW1iZXJfaW52b2ljZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVtYmVyX25hbWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm9wZW5fYWN0aXZpdHksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm9wdGlvbmFsX2ZlZXMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm9wdGlvbmFsX2ZlZV9yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3B0aW9uYWxfZmVlX3R5cGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnJlcGVhdCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucmVwZWF0X251bSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucmVwZWF0X3RvX2RheSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucmVwZWF0X3R5cGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnNob3dfb3RoZXJfaW52aXRlZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuc3RhcnQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnN0YXJ0X3RpbWUsXG4gICAgICAgICAgICAgICAgJ3dhaXRpbmcnLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS50aXRsZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkudXBkYXRlZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkudXNlX2ludml0ZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkudXBkYXRlX3JlcGVhdGluZ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gb3BlbkFjdGl2aXR5O1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMgPSB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMudmFsdWUsXG4gICAgICAgICAgICByZXN1bHQ6IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxPcGVuQWN0aXZpdHk+PihjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMudmFsdWUucmVzdWx0KS5zZXQocGF5bG9hZC5tZW1iZXJJZCwgdXBkYXRlZE9wZW5BY3Rpdml0aWVzKVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFN0YXRlXG4gIH0pLFxuXG4gIC8vIFVwZGF0ZSBUZWFtIEFjdGl2aXR5XG4gIG9uKHVwZGF0ZVRlYW1BY3Rpdml0eUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkpIH0pKSxcbiAgb24odXBkYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHJldHJpZXZlTG9hZEZhaWx1cmU8VGVhbUFjdGl2aXR5SW50ZXJmYWNlPihwYXlsb2FkKSB9KSksXG4gIG9uKHVwZGF0ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHBheWxvYWQuaWQgPT09IHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIGFjdGl2aXR5OiBwYXlsb2FkXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsb2FkaW5nOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH0pLFxuXG4gIC8vIFJlc2VuZCB0ZWFtIGFjdGl2aXR5IGludml0ZVxuICBvbihyZXNlbmRUZWFtQWN0aXZpdHlNZW1iZXJJbnZpdGVTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUsIHtwYXlsb2FkfToge3BheWxvYWQ6IEFjdGl2aXR5SW52aXRlfSkgPT4gdXBkYXRlVGVhbUFjdGl2aXR5SW52aXRlKHN0YXRlLCBwYXlsb2FkKSksXG5cbiAgLy8gVXBkYXRlIFRlYW0gYWN0aXZpdHkgaW52aXRlXG4gIG9uKHVwZGF0ZVRlYW1NZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwge3BheWxvYWR9OiB7cGF5bG9hZDogTWVtYmVyQWN0aXZpdHlJbnZpdGV9KSA9PiB1cGRhdGVUZWFtQWN0aXZpdHlJbnZpdGUoc3RhdGUsIHBheWxvYWQpKSxcblxuICAvLyBEZWxldGUgVGVhbSBBY3Rpdml0eVxuICBvbihkZWxldGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUsIHtwYXlsb2FkfToge3BheWxvYWQ6IHN0cmluZ30pID0+IHtcbiAgICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB1bmRlZmluZWRcbiAgICB9O1xuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzPy52YWx1ZT8ucmVzdWx0cykge1xuICAgICAgY3VycmVudFN0YXRlLnRlYW1FdmVudHMgPSB7XG4gICAgICAgIC4uLmN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLnZhbHVlLFxuICAgICAgICAgIHJlc3VsdHM6IGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLnZhbHVlLnJlc3VsdHMuZmlsdGVyKChldmVudDogRXZlbnQpID0+IGV2ZW50LmlkICE9PSBwYXlsb2FkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbiAgfSksXG5cbiAgLy8gQ3JlYXRlIFRlYW0gQWN0aXZpdHlcbiAgb24oY3JlYXRlVGVhbUFjdGl2aXR5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSkgfSkpLFxuXG4gIC8vIEZhaWx1cmUgSGFuZGxlcnNcbiAgb24oY3JlYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHJldHJpZXZlTG9hZEZhaWx1cmU8VGVhbUFjdGl2aXR5SW50ZXJmYWNlPihwYXlsb2FkKSB9KSksXG4pO1xuIl19
@@ -2,7 +2,7 @@ import { createReducer, on } from '@ngrx/store';
2
2
  import { initialUserState } from '../state';
3
3
  import { clearStoreAction, clearUserNotificationsAction, deleteCurrentUserFailureAction, deleteCurrentUserSuccessAction, getCurrentUserAction, getCurrentUserFailureAction, getCurrentUserSuccessAction, listUserNotificationsAction, listUserNotificationsFailureAction, listUserNotificationsSuccessAction, updateCurrentUserAction, updateCurrentUserFailureAction, updateCurrentUserSuccessAction } from '../actions';
4
4
  import { listLoadFailure, listLoadSuccess, listStartLoading, retrieveLoadFailure, retrieveLoadSuccess, retrieveStartLoading } from './reducer-helpers';
5
- export const userReducer = createReducer(initialUserState, on(clearStoreAction, (state) => ({ ...state, notifications: undefined })), on(getCurrentUserAction, updateCurrentUserAction, (state) => ({
5
+ export const userReducer = createReducer(initialUserState, on(clearStoreAction, (state) => ({ ...state, currentUser: undefined, notifications: undefined })), on(getCurrentUserAction, updateCurrentUserAction, (state) => ({
6
6
  ...state,
7
7
  currentUser: retrieveStartLoading(state.currentUser)
8
8
  })), on(deleteCurrentUserFailureAction, getCurrentUserFailureAction, updateCurrentUserFailureAction, (state, { payload }) => ({ ...state, currentUser: retrieveLoadFailure(payload) })), on(getCurrentUserSuccessAction, updateCurrentUserSuccessAction, (state, { payload }) => ({ ...state, currentUser: retrieveLoadSuccess(payload) })), on(deleteCurrentUserSuccessAction, (state) => ({ ...state, currentUser: undefined })), on(listUserNotificationsAction, (state) => ({
@@ -15,4 +15,4 @@ export const userReducer = createReducer(initialUserState, on(clearStoreAction,
15
15
  ...state,
16
16
  notifications: listLoadSuccess([])
17
17
  })));
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9yZWR1Y2Vycy91c2VyLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFhLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsNEJBQTRCLEVBQzVCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDL0IsTUFBTSxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3JCLE1BQU0sbUJBQW1CLENBQUM7QUFHM0IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FDdEMsZ0JBQWdCLEVBQ2hCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQyxFQUNsRixFQUFFLENBQUMsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLEdBQUcsS0FBSztJQUNSLFdBQVcsRUFBRSxvQkFBb0IsQ0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDO0NBQzNELENBQUMsQ0FBQyxFQUNILEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSwyQkFBMkIsRUFBRSw4QkFBOEIsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBQyxPQUFPLEVBRTFILEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsbUJBQW1CLENBQU8sT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQ3BFLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSw4QkFBOEIsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBQyxPQUFPLEVBRTFGLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQzlELEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQyxFQUM5RixFQUFFLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELEdBQUcsS0FBSztJQUNSLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBbUIsS0FBSyxDQUFDLGFBQWEsQ0FBQztDQUN2RSxDQUFDLENBQUMsRUFDSCxFQUFFLENBQUMsa0NBQWtDLEVBQUUsQ0FBQyxLQUFnQixFQUFFLEVBQUMsT0FBTyxFQUFpQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZHLEdBQUcsS0FBSztJQUNSLGFBQWEsRUFBRSxlQUFlLENBQW1CLE9BQU8sQ0FBQztDQUMxRCxDQUFDLENBQUMsRUFDSCxFQUFFLENBQUMsa0NBQWtDLEVBQUUsQ0FBQyxLQUFnQixFQUFFLEVBQUMsT0FBTyxFQUVqRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsRUFDNUQsRUFBRSxDQUFDLDRCQUE0QixFQUFFLDhCQUE4QixFQUFFLENBQUMsS0FBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RixHQUFHLEtBQUs7SUFDUixhQUFhLEVBQUUsZUFBZSxDQUFtQixFQUFFLENBQUM7Q0FDckQsQ0FBQyxDQUFDLENBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgaW5pdGlhbFVzZXJTdGF0ZSwgVXNlclN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHtcbiAgY2xlYXJTdG9yZUFjdGlvbixcbiAgY2xlYXJVc2VyTm90aWZpY2F0aW9uc0FjdGlvbixcbiAgZGVsZXRlQ3VycmVudFVzZXJGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVDdXJyZW50VXNlclN1Y2Nlc3NBY3Rpb24sXG4gIGdldEN1cnJlbnRVc2VyQWN0aW9uLFxuICBnZXRDdXJyZW50VXNlckZhaWx1cmVBY3Rpb24sXG4gIGdldEN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFVzZXJOb3RpZmljYXRpb25zQWN0aW9uLFxuICBsaXN0VXNlck5vdGlmaWNhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0VXNlck5vdGlmaWNhdGlvbnNTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVDdXJyZW50VXNlckFjdGlvbixcbiAgdXBkYXRlQ3VycmVudFVzZXJGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVDdXJyZW50VXNlclN1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBVc2VyLCBVc2VyTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIGxpc3RMb2FkRmFpbHVyZSxcbiAgbGlzdExvYWRTdWNjZXNzLFxuICBsaXN0U3RhcnRMb2FkaW5nLFxuICByZXRyaWV2ZUxvYWRGYWlsdXJlLFxuICByZXRyaWV2ZUxvYWRTdWNjZXNzLFxuICByZXRyaWV2ZVN0YXJ0TG9hZGluZ1xufSBmcm9tICcuL3JlZHVjZXItaGVscGVycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuZXhwb3J0IGNvbnN0IHVzZXJSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgaW5pdGlhbFVzZXJTdGF0ZSxcbiAgb24oY2xlYXJTdG9yZUFjdGlvbiwgKHN0YXRlOiBVc2VyU3RhdGUpID0+ICh7Li4uc3RhdGUsIG5vdGlmaWNhdGlvbnM6IHVuZGVmaW5lZH0pKSxcbiAgb24oZ2V0Q3VycmVudFVzZXJBY3Rpb24sIHVwZGF0ZUN1cnJlbnRVc2VyQWN0aW9uLCAoc3RhdGU6IFVzZXJTdGF0ZSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBjdXJyZW50VXNlcjogcmV0cmlldmVTdGFydExvYWRpbmc8VXNlcj4oc3RhdGUuY3VycmVudFVzZXIpXG4gIH0pKSxcbiAgb24oZGVsZXRlQ3VycmVudFVzZXJGYWlsdXJlQWN0aW9uLCBnZXRDdXJyZW50VXNlckZhaWx1cmVBY3Rpb24sIHVwZGF0ZUN1cnJlbnRVc2VyRmFpbHVyZUFjdGlvbiwgKHN0YXRlOiBVc2VyU3RhdGUsIHtwYXlsb2FkfToge1xuICAgIHBheWxvYWQ6IEh0dHBFcnJvclJlc3BvbnNlXG4gIH0pID0+ICh7Li4uc3RhdGUsIGN1cnJlbnRVc2VyOiByZXRyaWV2ZUxvYWRGYWlsdXJlPFVzZXI+KHBheWxvYWQpfSkpLFxuICBvbihnZXRDdXJyZW50VXNlclN1Y2Nlc3NBY3Rpb24sIHVwZGF0ZUN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBVc2VyU3RhdGUsIHtwYXlsb2FkfToge1xuICAgIHBheWxvYWQ6IFVzZXJcbiAgfSkgPT4gKHsuLi5zdGF0ZSwgY3VycmVudFVzZXI6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCl9KSksXG4gIG9uKGRlbGV0ZUN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBVc2VyU3RhdGUpID0+ICh7Li4uc3RhdGUsIGN1cnJlbnRVc2VyOiB1bmRlZmluZWR9KSksXG4gIG9uKGxpc3RVc2VyTm90aWZpY2F0aW9uc0FjdGlvbiwgKHN0YXRlOiBVc2VyU3RhdGUpID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbm90aWZpY2F0aW9uczogbGlzdFN0YXJ0TG9hZGluZzxVc2VyTm90aWZpY2F0aW9uPihzdGF0ZS5ub3RpZmljYXRpb25zKVxuICB9KSksXG4gIG9uKGxpc3RVc2VyTm90aWZpY2F0aW9uc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZTogVXNlclN0YXRlLCB7cGF5bG9hZH06IHsgcGF5bG9hZDogSHR0cEVycm9yUmVzcG9uc2UgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBub3RpZmljYXRpb25zOiBsaXN0TG9hZEZhaWx1cmU8VXNlck5vdGlmaWNhdGlvbj4ocGF5bG9hZClcbiAgfSkpLFxuICBvbihsaXN0VXNlck5vdGlmaWNhdGlvbnNTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IFVzZXJTdGF0ZSwge3BheWxvYWR9OiB7XG4gICAgcGF5bG9hZDogQXJyYXk8VXNlck5vdGlmaWNhdGlvbj5cbiAgfSkgPT4gKHsuLi5zdGF0ZSwgbm90aWZpY2F0aW9uczogbGlzdExvYWRTdWNjZXNzKHBheWxvYWQpfSkpLFxuICBvbihjbGVhclVzZXJOb3RpZmljYXRpb25zQWN0aW9uLCBkZWxldGVDdXJyZW50VXNlclN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogVXNlclN0YXRlKSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG5vdGlmaWNhdGlvbnM6IGxpc3RMb2FkU3VjY2VzczxVc2VyTm90aWZpY2F0aW9uPihbXSlcbiAgfSkpLFxuKTtcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9yZWR1Y2Vycy91c2VyLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFhLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsNEJBQTRCLEVBQzVCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDL0IsTUFBTSxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3JCLE1BQU0sbUJBQW1CLENBQUM7QUFHM0IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FDdEMsZ0JBQWdCLEVBQ2hCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLEVBQzFHLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkUsR0FBRyxLQUFLO0lBQ1IsV0FBVyxFQUFFLG9CQUFvQixDQUFPLEtBQUssQ0FBQyxXQUFXLENBQUM7Q0FDM0QsQ0FBQyxDQUFDLEVBQ0gsRUFBRSxDQUFDLDhCQUE4QixFQUFFLDJCQUEyQixFQUFFLDhCQUE4QixFQUFFLENBQUMsS0FBZ0IsRUFBRSxFQUFDLE9BQU8sRUFFMUgsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBTyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsRUFDcEUsRUFBRSxDQUFDLDJCQUEyQixFQUFFLDhCQUE4QixFQUFFLENBQUMsS0FBZ0IsRUFBRSxFQUFDLE9BQU8sRUFFMUYsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsRUFDOUQsRUFBRSxDQUFDLDhCQUE4QixFQUFFLENBQUMsS0FBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLEVBQzlGLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckQsR0FBRyxLQUFLO0lBQ1IsYUFBYSxFQUFFLGdCQUFnQixDQUFtQixLQUFLLENBQUMsYUFBYSxDQUFDO0NBQ3ZFLENBQUMsQ0FBQyxFQUNILEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBQyxPQUFPLEVBQWlDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkcsR0FBRyxLQUFLO0lBQ1IsYUFBYSxFQUFFLGVBQWUsQ0FBbUIsT0FBTyxDQUFDO0NBQzFELENBQUMsQ0FBQyxFQUNILEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBQyxPQUFPLEVBRWpFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUM1RCxFQUFFLENBQUMsNEJBQTRCLEVBQUUsOEJBQThCLEVBQUUsQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLEdBQUcsS0FBSztJQUNSLGFBQWEsRUFBRSxlQUFlLENBQW1CLEVBQUUsQ0FBQztDQUNyRCxDQUFDLENBQUMsQ0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBpbml0aWFsVXNlclN0YXRlLCBVc2VyU3RhdGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5pbXBvcnQge1xuICBjbGVhclN0b3JlQWN0aW9uLFxuICBjbGVhclVzZXJOb3RpZmljYXRpb25zQWN0aW9uLFxuICBkZWxldGVDdXJyZW50VXNlckZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvbixcbiAgZ2V0Q3VycmVudFVzZXJBY3Rpb24sXG4gIGdldEN1cnJlbnRVc2VyRmFpbHVyZUFjdGlvbixcbiAgZ2V0Q3VycmVudFVzZXJTdWNjZXNzQWN0aW9uLFxuICBsaXN0VXNlck5vdGlmaWNhdGlvbnNBY3Rpb24sXG4gIGxpc3RVc2VyTm90aWZpY2F0aW9uc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RVc2VyTm90aWZpY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUN1cnJlbnRVc2VyQWN0aW9uLFxuICB1cGRhdGVDdXJyZW50VXNlckZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IFVzZXIsIFVzZXJOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgbGlzdExvYWRGYWlsdXJlLFxuICBsaXN0TG9hZFN1Y2Nlc3MsXG4gIGxpc3RTdGFydExvYWRpbmcsXG4gIHJldHJpZXZlTG9hZEZhaWx1cmUsXG4gIHJldHJpZXZlTG9hZFN1Y2Nlc3MsXG4gIHJldHJpZXZlU3RhcnRMb2FkaW5nXG59IGZyb20gJy4vcmVkdWNlci1oZWxwZXJzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5leHBvcnQgY29uc3QgdXNlclJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICBpbml0aWFsVXNlclN0YXRlLFxuICBvbihjbGVhclN0b3JlQWN0aW9uLCAoc3RhdGU6IFVzZXJTdGF0ZSkgPT4gKHsuLi5zdGF0ZSwgY3VycmVudFVzZXI6IHVuZGVmaW5lZCwgbm90aWZpY2F0aW9uczogdW5kZWZpbmVkfSkpLFxuICBvbihnZXRDdXJyZW50VXNlckFjdGlvbiwgdXBkYXRlQ3VycmVudFVzZXJBY3Rpb24sIChzdGF0ZTogVXNlclN0YXRlKSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGN1cnJlbnRVc2VyOiByZXRyaWV2ZVN0YXJ0TG9hZGluZzxVc2VyPihzdGF0ZS5jdXJyZW50VXNlcilcbiAgfSkpLFxuICBvbihkZWxldGVDdXJyZW50VXNlckZhaWx1cmVBY3Rpb24sIGdldEN1cnJlbnRVc2VyRmFpbHVyZUFjdGlvbiwgdXBkYXRlQ3VycmVudFVzZXJGYWlsdXJlQWN0aW9uLCAoc3RhdGU6IFVzZXJTdGF0ZSwge3BheWxvYWR9OiB7XG4gICAgcGF5bG9hZDogSHR0cEVycm9yUmVzcG9uc2VcbiAgfSkgPT4gKHsuLi5zdGF0ZSwgY3VycmVudFVzZXI6IHJldHJpZXZlTG9hZEZhaWx1cmU8VXNlcj4ocGF5bG9hZCl9KSksXG4gIG9uKGdldEN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvbiwgdXBkYXRlQ3VycmVudFVzZXJTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IFVzZXJTdGF0ZSwge3BheWxvYWR9OiB7XG4gICAgcGF5bG9hZDogVXNlclxuICB9KSA9PiAoey4uLnN0YXRlLCBjdXJyZW50VXNlcjogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKX0pKSxcbiAgb24oZGVsZXRlQ3VycmVudFVzZXJTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IFVzZXJTdGF0ZSkgPT4gKHsuLi5zdGF0ZSwgY3VycmVudFVzZXI6IHVuZGVmaW5lZH0pKSxcbiAgb24obGlzdFVzZXJOb3RpZmljYXRpb25zQWN0aW9uLCAoc3RhdGU6IFVzZXJTdGF0ZSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBub3RpZmljYXRpb25zOiBsaXN0U3RhcnRMb2FkaW5nPFVzZXJOb3RpZmljYXRpb24+KHN0YXRlLm5vdGlmaWNhdGlvbnMpXG4gIH0pKSxcbiAgb24obGlzdFVzZXJOb3RpZmljYXRpb25zRmFpbHVyZUFjdGlvbiwgKHN0YXRlOiBVc2VyU3RhdGUsIHtwYXlsb2FkfTogeyBwYXlsb2FkOiBIdHRwRXJyb3JSZXNwb25zZSB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG5vdGlmaWNhdGlvbnM6IGxpc3RMb2FkRmFpbHVyZTxVc2VyTm90aWZpY2F0aW9uPihwYXlsb2FkKVxuICB9KSksXG4gIG9uKGxpc3RVc2VyTm90aWZpY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogVXNlclN0YXRlLCB7cGF5bG9hZH06IHtcbiAgICBwYXlsb2FkOiBBcnJheTxVc2VyTm90aWZpY2F0aW9uPlxuICB9KSA9PiAoey4uLnN0YXRlLCBub3RpZmljYXRpb25zOiBsaXN0TG9hZFN1Y2Nlc3MocGF5bG9hZCl9KSksXG4gIG9uKGNsZWFyVXNlck5vdGlmaWNhdGlvbnNBY3Rpb24sIGRlbGV0ZUN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBVc2VyU3RhdGUpID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbm90aWZpY2F0aW9uczogbGlzdExvYWRTdWNjZXNzPFVzZXJOb3RpZmljYXRpb24+KFtdKVxuICB9KSksXG4pO1xuIl19