@myclub_se/data-access 3.7.10 → 3.7.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/esm2022/lib/api-models/api-invoice/api-payment-attempt-create.mjs +1 -8
  2. package/esm2022/lib/authentication/authentication.interceptor.mjs +6 -8
  3. package/esm2022/lib/authentication/authentication.service.mjs +8 -11
  4. package/esm2022/lib/authentication/guards/authenticated.guard.mjs +4 -6
  5. package/esm2022/lib/authentication/guards/handle-grant-token.guard.mjs +4 -7
  6. package/esm2022/lib/data-access.module.mjs +6 -6
  7. package/esm2022/lib/maintenance/maintenance.interceptor.mjs +4 -5
  8. package/esm2022/lib/models/activity-extra-member.mjs +1 -8
  9. package/esm2022/lib/models/activity-invite.mjs +1 -23
  10. package/esm2022/lib/models/activity-location-group.mjs +1 -7
  11. package/esm2022/lib/models/activity-location-part.mjs +1 -3
  12. package/esm2022/lib/models/activity-location-tag.mjs +1 -6
  13. package/esm2022/lib/models/activity-location.mjs +1 -11
  14. package/esm2022/lib/models/activity-participant.mjs +1 -8
  15. package/esm2022/lib/models/activity-question-connection.mjs +1 -8
  16. package/esm2022/lib/models/activity-question-response.mjs +1 -3
  17. package/esm2022/lib/models/activity-question.mjs +1 -8
  18. package/esm2022/lib/models/activity-rule-relation.mjs +1 -9
  19. package/esm2022/lib/models/activity-rule.mjs +1 -8
  20. package/esm2022/lib/models/activity-settings.mjs +1 -18
  21. package/esm2022/lib/models/activity-type.mjs +1 -9
  22. package/esm2022/lib/models/activity-waiting-list-entry.mjs +1 -16
  23. package/esm2022/lib/models/activity.mjs +1 -82
  24. package/esm2022/lib/models/app-settings.mjs +1 -5
  25. package/esm2022/lib/models/auth/auth-member.mjs +3 -7
  26. package/esm2022/lib/models/auth/auth-section.mjs +1 -6
  27. package/esm2022/lib/models/auth/auth-team-section.mjs +1 -3
  28. package/esm2022/lib/models/auth/auth-team.mjs +1 -6
  29. package/esm2022/lib/models/auth/auth.mjs +1 -17
  30. package/esm2022/lib/models/authentication.mjs +1 -3
  31. package/esm2022/lib/models/bookable-item.mjs +1 -11
  32. package/esm2022/lib/models/bookable-part.mjs +1 -3
  33. package/esm2022/lib/models/bookable-tag.mjs +1 -6
  34. package/esm2022/lib/models/booking-calendar-application-time.mjs +1 -33
  35. package/esm2022/lib/models/booking-calendar-slot-session.mjs +1 -35
  36. package/esm2022/lib/models/booking-calendar-slot-validate-copy-result.mjs +1 -5
  37. package/esm2022/lib/models/booking-calendar-slot.mjs +1 -26
  38. package/esm2022/lib/models/booking-calendar.mjs +1 -33
  39. package/esm2022/lib/models/booking-settings.mjs +1 -8
  40. package/esm2022/lib/models/booking-slot-filter.mjs +1 -12
  41. package/esm2022/lib/models/calendar-event.mjs +1 -16
  42. package/esm2022/lib/models/calendar.mjs +1 -6
  43. package/esm2022/lib/models/card/card-deal.mjs +1 -6
  44. package/esm2022/lib/models/card/card-logo-urls.mjs +1 -9
  45. package/esm2022/lib/models/card/card-logo.mjs +1 -4
  46. package/esm2022/lib/models/card/card-member-ticket.mjs +1 -7
  47. package/esm2022/lib/models/card/card-theme.mjs +1 -6
  48. package/esm2022/lib/models/card/card-ticket-location.mjs +1 -5
  49. package/esm2022/lib/models/card/card-ticket.mjs +1 -17
  50. package/esm2022/lib/models/card/card.mjs +1 -9
  51. package/esm2022/lib/models/card/home-team.mjs +1 -4
  52. package/esm2022/lib/models/card/member-card.mjs +1 -11
  53. package/esm2022/lib/models/card/search-member-card.mjs +1 -5
  54. package/esm2022/lib/models/card/selected-field.mjs +1 -3
  55. package/esm2022/lib/models/club-image.mjs +1 -14
  56. package/esm2022/lib/models/club-section.mjs +1 -3
  57. package/esm2022/lib/models/club.mjs +1 -3
  58. package/esm2022/lib/models/collection.mjs +1 -5
  59. package/esm2022/lib/models/contact.mjs +1 -19
  60. package/esm2022/lib/models/databank-category.mjs +1 -7
  61. package/esm2022/lib/models/databank-item.mjs +1 -7
  62. package/esm2022/lib/models/directory.mjs +1 -10
  63. package/esm2022/lib/models/email.mjs +1 -4
  64. package/esm2022/lib/models/event.mjs +1 -28
  65. package/esm2022/lib/models/external-link.mjs +1 -3
  66. package/esm2022/lib/models/feature-flags.mjs +1 -14
  67. package/esm2022/lib/models/file-object.mjs +1 -10
  68. package/esm2022/lib/models/general-image.mjs +1 -4
  69. package/esm2022/lib/models/group-role.mjs +1 -7
  70. package/esm2022/lib/models/guest.mjs +1 -5
  71. package/esm2022/lib/models/image-urls.mjs +1 -6
  72. package/esm2022/lib/models/invoice/member-fee.mjs +1 -6
  73. package/esm2022/lib/models/invoice/member-invoice-row.mjs +1 -14
  74. package/esm2022/lib/models/invoice/member-invoice.mjs +1 -24
  75. package/esm2022/lib/models/invoice/payment-attempt.mjs +1 -10
  76. package/esm2022/lib/models/invoice/payment-order-row.mjs +1 -3
  77. package/esm2022/lib/models/invoice/payment-order.mjs +1 -18
  78. package/esm2022/lib/models/invoice/payment-types/credit-card.mjs +1 -12
  79. package/esm2022/lib/models/invoice/payment-types/giro.mjs +1 -7
  80. package/esm2022/lib/models/invoice/payment-types/swish.mjs +1 -14
  81. package/esm2022/lib/models/invoice/payment-types/zimpler.mjs +1 -8
  82. package/esm2022/lib/models/invoice/search-member-invoice.mjs +1 -10
  83. package/esm2022/lib/models/invoice/swish-qr-code.mjs +1 -2
  84. package/esm2022/lib/models/invoice/unpaid-member-invoice.mjs +1 -5
  85. package/esm2022/lib/models/leader-activity.mjs +1 -12
  86. package/esm2022/lib/models/member/member-attribute.mjs +1 -12
  87. package/esm2022/lib/models/member/member-contact.mjs +1 -6
  88. package/esm2022/lib/models/member/member-function.mjs +1 -6
  89. package/esm2022/lib/models/member/member-validation-settings.mjs +1 -9
  90. package/esm2022/lib/models/member/member.mjs +1 -27
  91. package/esm2022/lib/models/member/other-member-field.mjs +1 -4
  92. package/esm2022/lib/models/member/other-member.mjs +1 -9
  93. package/esm2022/lib/models/member/search-member.mjs +1 -17
  94. package/esm2022/lib/models/member-activity-invite.mjs +1 -12
  95. package/esm2022/lib/models/member-public-form-field-option.mjs +1 -5
  96. package/esm2022/lib/models/member-public-form-field.mjs +1 -12
  97. package/esm2022/lib/models/member-public-form.mjs +1 -26
  98. package/esm2022/lib/models/member-team-through.mjs +1 -10
  99. package/esm2022/lib/models/member-team.mjs +1 -10
  100. package/esm2022/lib/models/member-type.mjs +1 -4
  101. package/esm2022/lib/models/mypages-menu-item.mjs +1 -4
  102. package/esm2022/lib/models/news.mjs +1 -20
  103. package/esm2022/lib/models/open-activity.mjs +3 -79
  104. package/esm2022/lib/models/optional-fee.mjs +2 -7
  105. package/esm2022/lib/models/overbooked-bookable-item.mjs +1 -6
  106. package/esm2022/lib/models/overbooked-location.mjs +1 -6
  107. package/esm2022/lib/models/partner.mjs +1 -5
  108. package/esm2022/lib/models/public-authentication.mjs +1 -3
  109. package/esm2022/lib/models/registration-qr-code.mjs +1 -8
  110. package/esm2022/lib/models/retrieve-2fa.mjs +1 -3
  111. package/esm2022/lib/models/saved-search.mjs +1 -3
  112. package/esm2022/lib/models/search-attribute.mjs +1 -5
  113. package/esm2022/lib/models/search-club.mjs +1 -10
  114. package/esm2022/lib/models/search-team.mjs +1 -9
  115. package/esm2022/lib/models/section.mjs +1 -3
  116. package/esm2022/lib/models/swish-incident.mjs +1 -11
  117. package/esm2022/lib/models/token.mjs +1 -4
  118. package/esm2022/lib/models/user-notification.mjs +1 -9
  119. package/esm2022/lib/models/user.mjs +1 -13
  120. package/esm2022/lib/services/activity.service.mjs +4 -7
  121. package/esm2022/lib/services/api.service.mjs +4 -6
  122. package/esm2022/lib/services/auth.service.mjs +4 -5
  123. package/esm2022/lib/services/bookable.service.mjs +4 -5
  124. package/esm2022/lib/services/booking-calendar.service.mjs +22 -6
  125. package/esm2022/lib/services/club.service.mjs +4 -5
  126. package/esm2022/lib/services/constant.service.mjs +4 -5
  127. package/esm2022/lib/services/databank.service.mjs +4 -5
  128. package/esm2022/lib/services/email.service.mjs +4 -5
  129. package/esm2022/lib/services/external-link.service.mjs +4 -5
  130. package/esm2022/lib/services/feature-flags.service.mjs +4 -5
  131. package/esm2022/lib/services/file.service.mjs +4 -5
  132. package/esm2022/lib/services/invoice/invoice.service.mjs +4 -5
  133. package/esm2022/lib/services/invoice/payment-attempt.service.mjs +4 -5
  134. package/esm2022/lib/services/invoice/payment-order.service.mjs +4 -5
  135. package/esm2022/lib/services/leader-notification.service.mjs +4 -5
  136. package/esm2022/lib/services/maintenance-mode.service.mjs +8 -7
  137. package/esm2022/lib/services/member-card.service.mjs +4 -5
  138. package/esm2022/lib/services/member-fee.service.mjs +4 -5
  139. package/esm2022/lib/services/member-public-form.service.mjs +4 -5
  140. package/esm2022/lib/services/member.service.mjs +4 -5
  141. package/esm2022/lib/services/news.service.mjs +4 -5
  142. package/esm2022/lib/services/registration-qr-code.service.mjs +4 -5
  143. package/esm2022/lib/services/saved-search.service.mjs +4 -5
  144. package/esm2022/lib/services/section.service.mjs +4 -5
  145. package/esm2022/lib/services/storage.service.mjs +5 -6
  146. package/esm2022/lib/services/swish-incident.service.mjs +4 -5
  147. package/esm2022/lib/services/team.service.mjs +4 -5
  148. package/esm2022/lib/services/token.service.mjs +4 -5
  149. package/esm2022/lib/services/user-notification.service.mjs +4 -5
  150. package/esm2022/lib/services/user.service.mjs +4 -5
  151. package/esm2022/lib/store/actions/booking.actions.mjs +7 -1
  152. package/esm2022/lib/store/effects/activity.effects.mjs +358 -355
  153. package/esm2022/lib/store/effects/auth.effects.mjs +121 -119
  154. package/esm2022/lib/store/effects/booking.effects.mjs +139 -134
  155. package/esm2022/lib/store/effects/calendar.effects.mjs +61 -59
  156. package/esm2022/lib/store/effects/club-info.effects.mjs +17 -15
  157. package/esm2022/lib/store/effects/constant.effects.mjs +78 -76
  158. package/esm2022/lib/store/effects/databank.effects.mjs +23 -21
  159. package/esm2022/lib/store/effects/email.effects.mjs +16 -14
  160. package/esm2022/lib/store/effects/external-link.effects.mjs +11 -9
  161. package/esm2022/lib/store/effects/file.effects.mjs +92 -90
  162. package/esm2022/lib/store/effects/invoice.effects.mjs +176 -174
  163. package/esm2022/lib/store/effects/member-card.effects.mjs +73 -71
  164. package/esm2022/lib/store/effects/member-fee.effects.mjs +9 -7
  165. package/esm2022/lib/store/effects/member.effects.mjs +41 -39
  166. package/esm2022/lib/store/effects/mixins/extra-members-mixin.mjs +4 -2
  167. package/esm2022/lib/store/effects/news.effects.mjs +47 -45
  168. package/esm2022/lib/store/effects/public-form.effects.mjs +24 -22
  169. package/esm2022/lib/store/effects/registration-qr-code.effects.mjs +14 -12
  170. package/esm2022/lib/store/effects/saved-search.effects.mjs +9 -7
  171. package/esm2022/lib/store/effects/swish-incidents.effects.mjs +11 -9
  172. package/esm2022/lib/store/effects/team.effects.mjs +82 -79
  173. package/esm2022/lib/store/effects/token.effects.mjs +93 -91
  174. package/esm2022/lib/store/effects/user.effects.mjs +35 -35
  175. package/fesm2022/myclub_se-data-access.mjs +1771 -2857
  176. package/fesm2022/myclub_se-data-access.mjs.map +1 -1
  177. package/lib/services/booking-calendar.service.d.ts +3 -0
  178. package/lib/store/actions/booking.actions.d.ts +24 -0
  179. package/lib/store/effects/booking.effects.d.ts +5 -0
  180. package/package.json +1 -1
@@ -8,87 +8,90 @@ import { ExtraMembersMixin } from './mixins/extra-members-mixin';
8
8
  import { LeaderNotificationService } from '../../services';
9
9
  import * as i0 from "@angular/core";
10
10
  export class TeamEffects extends ExtraMembersMixin {
11
- actions$ = inject(Actions);
12
- leaderNotificationService = inject(LeaderNotificationService);
13
- deleteTeamMember$ = createEffect(() => this.actions$
14
- .pipe(ofType(deleteTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.deleteTeamLeaderTeamMember(payload.teamId, payload.id)
15
- .pipe(map((success) => {
16
- if (success) {
17
- return deleteTeamLeaderMemberSuccessAction({ payload: { teamId: payload.teamId, id: payload.id } });
18
- }
19
- else {
20
- return deleteTeamLeaderMemberFailureAction({
21
- payload: new HttpErrorResponse({ status: 400 })
11
+ constructor() {
12
+ super(...arguments);
13
+ this.actions$ = inject(Actions);
14
+ this.leaderNotificationService = inject(LeaderNotificationService);
15
+ this.deleteTeamMember$ = createEffect(() => this.actions$
16
+ .pipe(ofType(deleteTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.deleteTeamLeaderTeamMember(payload.teamId, payload.id)
17
+ .pipe(map((success) => {
18
+ if (success) {
19
+ return deleteTeamLeaderMemberSuccessAction({ payload: { teamId: payload.teamId, id: payload.id } });
20
+ }
21
+ else {
22
+ return deleteTeamLeaderMemberFailureAction({
23
+ payload: new HttpErrorResponse({ status: 400 })
24
+ });
25
+ }
26
+ }), catchError((error) => of(deleteTeamLeaderMemberFailureAction({ payload: error })))))));
27
+ this.listGenerallyAvailableTeams$ = createEffect(() => this.actions$
28
+ .pipe(ofType(listGenerallyAvailableTeamsAction), exhaustMap(({ payload }) => this.teamService.getGenerallyAvailableTeams(payload.clubId, payload.memberIds ?? [])
29
+ .pipe(map((teams) => listGenerallyAvailableTeamsSuccessAction({ payload: teams.toArray() })), catchError((error) => of(listGenerallyAvailableTeamsFailureAction({ payload: error })))))));
30
+ // switchMap (not exhaustMap): on a context switch a request for the PREVIOUS team
31
+ // can still be in flight when the new team's request is dispatched — the latest
32
+ // dispatch must win (and cancel the stale one), or the new context shows the old
33
+ // team's notifications.
34
+ this.listLeaderNotifications$ = createEffect(() => this.actions$
35
+ .pipe(ofType(listLeaderNotificationsAction), switchMap(({ payload }) => this.leaderNotificationService.getLeaderNotifications(payload)
36
+ .pipe(map((activities) => listLeaderNotificationsSuccessAction({ payload: activities.toArray() })), catchError((error) => of(listLeaderNotificationsFailureAction({ payload: error })))))));
37
+ this.listMemberTeams$ = createEffect(() => this.actions$
38
+ .pipe(ofType(listMemberTeamsAction), mergeMap(({ payload }) => forkJoin(payload.map((id) => this.teamService.getMemberTeams(id)
39
+ .pipe(map((teams) => ({ id, teams: teams.toArray() })), catchError((error) => of({ id, error }))))).pipe(mergeMap((results) => {
40
+ const resultMap = new Map();
41
+ const errors = results.filter(result => result.error);
42
+ if (errors.length) {
43
+ return of(listMemberTeamsFailureAction({ payload: errors[0].error }));
44
+ }
45
+ results.forEach(result => {
46
+ if (result.teams) {
47
+ resultMap.set(result.id, result.teams);
48
+ }
22
49
  });
23
- }
24
- }), catchError((error) => of(deleteTeamLeaderMemberFailureAction({ payload: error })))))));
25
- listGenerallyAvailableTeams$ = createEffect(() => this.actions$
26
- .pipe(ofType(listGenerallyAvailableTeamsAction), exhaustMap(({ payload }) => this.teamService.getGenerallyAvailableTeams(payload.clubId, payload.memberIds ?? [])
27
- .pipe(map((teams) => listGenerallyAvailableTeamsSuccessAction({ payload: teams.toArray() })), catchError((error) => of(listGenerallyAvailableTeamsFailureAction({ payload: error })))))));
28
- // switchMap (not exhaustMap): on a context switch a request for the PREVIOUS team
29
- // can still be in flight when the new team's request is dispatched — the latest
30
- // dispatch must win (and cancel the stale one), or the new context shows the old
31
- // team's notifications.
32
- listLeaderNotifications$ = createEffect(() => this.actions$
33
- .pipe(ofType(listLeaderNotificationsAction), switchMap(({ payload }) => this.leaderNotificationService.getLeaderNotifications(payload)
34
- .pipe(map((activities) => listLeaderNotificationsSuccessAction({ payload: activities.toArray() })), catchError((error) => of(listLeaderNotificationsFailureAction({ payload: error })))))));
35
- listMemberTeams$ = createEffect(() => this.actions$
36
- .pipe(ofType(listMemberTeamsAction), mergeMap(({ payload }) => forkJoin(payload.map((id) => this.teamService.getMemberTeams(id)
37
- .pipe(map((teams) => ({ id, teams: teams.toArray() })), catchError((error) => of({ id, error }))))).pipe(mergeMap((results) => {
38
- const resultMap = new Map();
39
- const errors = results.filter(result => result.error);
40
- if (errors.length) {
41
- return of(listMemberTeamsFailureAction({ payload: errors[0].error }));
42
- }
43
- results.forEach(result => {
44
- if (result.teams) {
45
- resultMap.set(result.id, result.teams);
50
+ return of(listMemberTeamsSuccessAction({ payload: resultMap }));
51
+ })))));
52
+ this.listMemberLeaderExtraMembers$ = createEffect(() => this.actions$
53
+ .pipe(ofType(listMemberLeaderExtraMembersAction), exhaustMap(({ payload }) => this.memberLeaderGetAllExtraMembers(payload.memberId, payload.id, payload.q)
54
+ .pipe(map((extraMembers) => listMemberLeaderExtraMembersSuccessAction({ payload: extraMembers })), catchError((error) => of(listMemberLeaderExtraMembersFailureAction({ payload: error })))))));
55
+ this.listMemberLeaderMembers$ = createEffect(() => this.actions$
56
+ .pipe(ofType(listMemberLeaderMembersAction), exhaustMap(({ payload }) => this.memberLeaderGetaAllMembers(payload.memberId, payload.id, payload.q)
57
+ .pipe(map((members) => listMemberLeaderMembersSuccessAction({ payload: members })), catchError((error) => of(listMemberLeaderMembersFailureAction({ payload: error })))))));
58
+ this.listTeamLeaderExtraMembers$ = createEffect(() => this.actions$
59
+ .pipe(ofType(listTeamLeaderExtraMembersAction), exhaustMap(({ payload }) => this.teamLeaderGetAllExtraMembers(payload.teamId, payload.q)
60
+ .pipe(map((extraMembers) => listTeamLeaderExtraMembersSuccessAction({
61
+ payload: {
62
+ teamId: payload.teamId,
63
+ results: extraMembers
46
64
  }
47
- });
48
- return of(listMemberTeamsSuccessAction({ payload: resultMap }));
49
- })))));
50
- listMemberLeaderExtraMembers$ = createEffect(() => this.actions$
51
- .pipe(ofType(listMemberLeaderExtraMembersAction), exhaustMap(({ payload }) => this.memberLeaderGetAllExtraMembers(payload.memberId, payload.id, payload.q)
52
- .pipe(map((extraMembers) => listMemberLeaderExtraMembersSuccessAction({ payload: extraMembers })), catchError((error) => of(listMemberLeaderExtraMembersFailureAction({ payload: error })))))));
53
- listMemberLeaderMembers$ = createEffect(() => this.actions$
54
- .pipe(ofType(listMemberLeaderMembersAction), exhaustMap(({ payload }) => this.memberLeaderGetaAllMembers(payload.memberId, payload.id, payload.q)
55
- .pipe(map((members) => listMemberLeaderMembersSuccessAction({ payload: members })), catchError((error) => of(listMemberLeaderMembersFailureAction({ payload: error })))))));
56
- listTeamLeaderExtraMembers$ = createEffect(() => this.actions$
57
- .pipe(ofType(listTeamLeaderExtraMembersAction), exhaustMap(({ payload }) => this.teamLeaderGetAllExtraMembers(payload.teamId, payload.q)
58
- .pipe(map((extraMembers) => listTeamLeaderExtraMembersSuccessAction({
59
- payload: {
60
- teamId: payload.teamId,
61
- results: extraMembers
62
- }
63
- })), catchError((error) => of(listTeamLeaderExtraMembersFailureAction({ payload: error })))))));
64
- listTeamLeaderMembers$ = createEffect(() => this.actions$
65
- .pipe(ofType(listTeamLeaderMembersAction), exhaustMap(({ payload }) => this.teamLeaderGetAllMembers(payload.teamId, payload.q)
66
- .pipe(map((members) => listTeamLeaderMembersSuccessAction({ payload: members })), catchError((error) => of(listTeamLeaderMembersFailureAction({ payload: error })))))));
67
- retrieveMemberLeaderGroup$ = createEffect(() => this.actions$
68
- .pipe(ofType(retrieveMemberLeaderGroupAction), exhaustMap(({ payload }) => this.teamService.getMemberTeam(payload.memberId, payload.id)
69
- .pipe(map((group) => retrieveMemberLeaderGroupSuccessAction({ payload: group })), catchError((error) => of(retrieveMemberLeaderGroupFailureAction({ payload: error })))))));
70
- retrieveMemberLeaderExtraMember$ = createEffect(() => this.actions$
71
- .pipe(ofType(retrieveMemberLeaderExtraMemberAction), exhaustMap(({ payload }) => this.teamService.getMemberTeamExtraMember(payload.memberId, payload.teamId, payload.id)
72
- .pipe(map((member) => retrieveMemberLeaderExtraMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveMemberLeaderExtraMemberFailureAction({ payload: error })))))));
73
- retrieveMemberLeaderMember$ = createEffect(() => this.actions$
74
- .pipe(ofType(retrieveMemberLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.getMemberTeamMember(payload.memberId, payload.teamId, payload.id)
75
- .pipe(map((member) => retrieveMemberLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveMemberLeaderMemberFailureAction({ payload: error })))))));
76
- retrieveTeamLeaderGroup$ = createEffect(() => this.actions$
77
- .pipe(ofType(retrieveTeamLeaderGroupAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeam(payload)
78
- .pipe(map((group) => retrieveTeamLeaderGroupSuccessAction({ payload: group })), catchError((error) => of(retrieveTeamLeaderGroupFailureAction({ payload: error })))))));
79
- retrieveTeamLeaderExtraMember$ = createEffect(() => this.actions$
80
- .pipe(ofType(retrieveTeamLeaderExtraMemberAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeamExtraMember(payload.teamId, payload.id)
81
- .pipe(map((member) => retrieveTeamLeaderExtraMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveTeamLeaderExtraMemberFailureAction({ payload: error })))))));
82
- retrieveTeamLeaderMember$ = createEffect(() => this.actions$
83
- .pipe(ofType(retrieveTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeamMember(payload.teamId, payload.id)
84
- .pipe(map((member) => retrieveTeamLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveTeamLeaderMemberFailureAction({ payload: error })))))));
85
- updateTeamLeaderMember$ = createEffect(() => this.actions$
86
- .pipe(ofType(updateTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.updateTeamLeaderTeamMember(payload.teamId, payload.id, payload.member)
87
- .pipe(map((member) => updateTeamLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(updateTeamLeaderMemberFailureAction({ payload: error })))))));
88
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TeamEffects, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
89
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TeamEffects });
65
+ })), catchError((error) => of(listTeamLeaderExtraMembersFailureAction({ payload: error })))))));
66
+ this.listTeamLeaderMembers$ = createEffect(() => this.actions$
67
+ .pipe(ofType(listTeamLeaderMembersAction), exhaustMap(({ payload }) => this.teamLeaderGetAllMembers(payload.teamId, payload.q)
68
+ .pipe(map((members) => listTeamLeaderMembersSuccessAction({ payload: members })), catchError((error) => of(listTeamLeaderMembersFailureAction({ payload: error })))))));
69
+ this.retrieveMemberLeaderGroup$ = createEffect(() => this.actions$
70
+ .pipe(ofType(retrieveMemberLeaderGroupAction), exhaustMap(({ payload }) => this.teamService.getMemberTeam(payload.memberId, payload.id)
71
+ .pipe(map((group) => retrieveMemberLeaderGroupSuccessAction({ payload: group })), catchError((error) => of(retrieveMemberLeaderGroupFailureAction({ payload: error })))))));
72
+ this.retrieveMemberLeaderExtraMember$ = createEffect(() => this.actions$
73
+ .pipe(ofType(retrieveMemberLeaderExtraMemberAction), exhaustMap(({ payload }) => this.teamService.getMemberTeamExtraMember(payload.memberId, payload.teamId, payload.id)
74
+ .pipe(map((member) => retrieveMemberLeaderExtraMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveMemberLeaderExtraMemberFailureAction({ payload: error })))))));
75
+ this.retrieveMemberLeaderMember$ = createEffect(() => this.actions$
76
+ .pipe(ofType(retrieveMemberLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.getMemberTeamMember(payload.memberId, payload.teamId, payload.id)
77
+ .pipe(map((member) => retrieveMemberLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveMemberLeaderMemberFailureAction({ payload: error })))))));
78
+ this.retrieveTeamLeaderGroup$ = createEffect(() => this.actions$
79
+ .pipe(ofType(retrieveTeamLeaderGroupAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeam(payload)
80
+ .pipe(map((group) => retrieveTeamLeaderGroupSuccessAction({ payload: group })), catchError((error) => of(retrieveTeamLeaderGroupFailureAction({ payload: error })))))));
81
+ this.retrieveTeamLeaderExtraMember$ = createEffect(() => this.actions$
82
+ .pipe(ofType(retrieveTeamLeaderExtraMemberAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeamExtraMember(payload.teamId, payload.id)
83
+ .pipe(map((member) => retrieveTeamLeaderExtraMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveTeamLeaderExtraMemberFailureAction({ payload: error })))))));
84
+ this.retrieveTeamLeaderMember$ = createEffect(() => this.actions$
85
+ .pipe(ofType(retrieveTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeamMember(payload.teamId, payload.id)
86
+ .pipe(map((member) => retrieveTeamLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveTeamLeaderMemberFailureAction({ payload: error })))))));
87
+ this.updateTeamLeaderMember$ = createEffect(() => this.actions$
88
+ .pipe(ofType(updateTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.updateTeamLeaderTeamMember(payload.teamId, payload.id, payload.member)
89
+ .pipe(map((member) => updateTeamLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(updateTeamLeaderMemberFailureAction({ payload: error })))))));
90
+ }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TeamEffects, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
92
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TeamEffects }); }
90
93
  }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TeamEffects, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TeamEffects, decorators: [{
92
95
  type: Injectable
93
96
  }] });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhbS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL3RlYW0uZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUNMLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLGdDQUFnQyxFQUNoQyx1Q0FBdUMsRUFDdkMsdUNBQXVDLEVBQ3ZDLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsa0NBQWtDLEVBQ2xDLHFDQUFxQyxFQUNyQyw0Q0FBNEMsRUFDNUMsNENBQTRDLEVBQzVDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLGdDQUFnQyxFQUNoQyx1Q0FBdUMsRUFDdkMsdUNBQXVDLEVBQ3ZDLG1DQUFtQyxFQUNuQywwQ0FBMEMsRUFDMUMsMENBQTBDLEVBQzFDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLDhCQUE4QixFQUM5QixxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsbUNBQW1DLEVBQ3BDLE1BQU0sWUFBWSxDQUFDO0FBQ3BC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Q0YsQ0FDRixDQUNGLENBQUM7dUdBbk9TLFdBQVc7MkdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEFjdGl2aXR5RXh0cmFNZW1iZXIsIENvbGxlY3Rpb24sIExlYWRlckFjdGl2aXR5LCBNZW1iZXJUZWFtLCBNZW1iZXJUZWFtVGhyb3VnaCwgU2VhcmNoVGVhbSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBkZWxldGVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uLFxuICBkZWxldGVUZWFtTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlVGVhbUxlYWRlck1lbWJlclN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RHZW5lcmFsbHlBdmFpbGFibGVUZWFtc0FjdGlvbixcbiAgbGlzdEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zRmFpbHVyZUFjdGlvbixcbiAgbGlzdEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdExlYWRlck5vdGlmaWNhdGlvbnNBY3Rpb24sXG4gIGxpc3RMZWFkZXJOb3RpZmljYXRpb25zRmFpbHVyZUFjdGlvbixcbiAgbGlzdExlYWRlck5vdGlmaWNhdGlvbnNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJzQWN0aW9uLFxuICBsaXN0TWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlckxlYWRlckV4dHJhTWVtYmVyc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJMZWFkZXJNZW1iZXJzQWN0aW9uLFxuICBsaXN0TWVtYmVyTGVhZGVyTWVtYmVyc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJMZWFkZXJNZW1iZXJzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlclRlYW1zQWN0aW9uLFxuICBsaXN0TWVtYmVyVGVhbXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyVGVhbXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc0FjdGlvbixcbiAgbGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtTGVhZGVyTWVtYmVyc0FjdGlvbixcbiAgbGlzdFRlYW1MZWFkZXJNZW1iZXJzRmFpbHVyZUFjdGlvbixcbiAgbGlzdFRlYW1MZWFkZXJNZW1iZXJzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJFeHRyYU1lbWJlckFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJFeHRyYU1lbWJlckZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlckdyb3VwQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlckdyb3VwRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJHcm91cFN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyTWVtYmVyQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlck1lbWJlckZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyRXh0cmFNZW1iZXJBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyRXh0cmFNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJHcm91cEFjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyR3JvdXBGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJHcm91cFN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlck1lbWJlckFjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlVGVhbUxlYWRlck1lbWJlckFjdGlvbixcbiAgdXBkYXRlVGVhbUxlYWRlck1lbWJlckZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZVRlYW1MZWFkZXJNZW1iZXJTdWNjZXNzQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgZm9ya0pvaW4sIG1lcmdlTWFwLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV4dHJhTWVtYmVyc01peGluIH0gZnJvbSAnLi9taXhpbnMvZXh0cmEtbWVtYmVycy1taXhpbic7XG5pbXBvcnQgeyBMZWFkZXJOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUZWFtRWZmZWN0cyBleHRlbmRzIEV4dHJhTWVtYmVyc01peGluIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBsZWFkZXJOb3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KExlYWRlck5vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gIGRlbGV0ZVRlYW1NZW1iZXIkICA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoZGVsZXRlVGVhbUxlYWRlck1lbWJlckFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7dGVhbUlkOiBzdHJpbmcsIGlkOiBzdHJpbmd9fSkgPT4gdGhpcy50ZWFtU2VydmljZS5kZWxldGVUZWFtTGVhZGVyVGVhbU1lbWJlcihwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5pZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlVGVhbUxlYWRlck1lbWJlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHt0ZWFtSWQ6IHBheWxvYWQudGVhbUlkLCBpZDogcGF5bG9hZC5pZH19KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgcGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVUZWFtTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHtjbHViSWQ6IHN0cmluZywgbWVtYmVySWRzPzogQXJyYXk8c3RyaW5nPn19KSA9PlxuICAgICAgICB0aGlzLnRlYW1TZXJ2aWNlLmdldEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zKHBheWxvYWQuY2x1YklkLCBwYXlsb2FkLm1lbWJlcklkcyA/PyBbXSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgodGVhbXM6IENvbGxlY3Rpb248U2VhcmNoVGVhbT4pID0+IGxpc3RHZW5lcmFsbHlBdmFpbGFibGVUZWFtc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRlYW1zLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICAvLyBzd2l0Y2hNYXAgKG5vdCBleGhhdXN0TWFwKTogb24gYSBjb250ZXh0IHN3aXRjaCBhIHJlcXVlc3QgZm9yIHRoZSBQUkVWSU9VUyB0ZWFtXG4gIC8vIGNhbiBzdGlsbCBiZSBpbiBmbGlnaHQgd2hlbiB0aGUgbmV3IHRlYW0ncyByZXF1ZXN0IGlzIGRpc3BhdGNoZWQg4oCUIHRoZSBsYXRlc3RcbiAgLy8gZGlzcGF0Y2ggbXVzdCB3aW4gKGFuZCBjYW5jZWwgdGhlIHN0YWxlIG9uZSksIG9yIHRoZSBuZXcgY29udGV4dCBzaG93cyB0aGUgb2xkXG4gIC8vIHRlYW0ncyBub3RpZmljYXRpb25zLlxuICBsaXN0TGVhZGVyTm90aWZpY2F0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RMZWFkZXJOb3RpZmljYXRpb25zQWN0aW9uKSxcbiAgICAgIHN3aXRjaE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDogc3RyaW5nfSkgPT5cbiAgICAgICAgdGhpcy5sZWFkZXJOb3RpZmljYXRpb25TZXJ2aWNlLmdldExlYWRlck5vdGlmaWNhdGlvbnMocGF5bG9hZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdGllczogQ29sbGVjdGlvbjxMZWFkZXJBY3Rpdml0eT4pID0+IGxpc3RMZWFkZXJOb3RpZmljYXRpb25zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdGllcy50b0FycmF5KCl9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RMZWFkZXJOb3RpZmljYXRpb25zRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyVGVhbXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyVGVhbXNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IEFycmF5PHN0cmluZz59KSA9PlxuICAgICAgICBmb3JrSm9pbihwYXlsb2FkLm1hcCgoaWQ6IHN0cmluZykgPT4gdGhpcy50ZWFtU2VydmljZS5nZXRNZW1iZXJUZWFtcyhpZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgodGVhbXM6IENvbGxlY3Rpb248U2VhcmNoVGVhbT4pID0+ICh7aWQsIHRlYW1zOiB0ZWFtcy50b0FycmF5KCl9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSlcbiAgICAgICAgICApXG4gICAgICAgICkpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdHM6IEFycmF5PHtpZDogc3RyaW5nLCBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlLCB0ZWFtcz86IEFycmF5PFNlYXJjaFRlYW0+fT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxTZWFyY2hUZWFtPj4oKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJUZWFtc0ZhaWx1cmVBY3Rpb24oeyBwYXlsb2FkOiBlcnJvcnNbMF0uZXJyb3IgYXMgSHR0cEVycm9yUmVzcG9uc2UgfSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHRzLmZvckVhY2gocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC50ZWFtcykge1xuICAgICAgICAgICAgICAgIHJlc3VsdE1hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQudGVhbXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJUZWFtc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHJlc3VsdE1hcH0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHsgcGF5bG9hZCB9OiB7IHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgaWQ6IHN0cmluZywgcTogc3RyaW5nIH0gfSkgPT5cbiAgICAgICAgdGhpcy5tZW1iZXJMZWFkZXJHZXRBbGxFeHRyYU1lbWJlcnMocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pZCwgcGF5bG9hZC5xKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChleHRyYU1lbWJlcnM6IEFycmF5PEFjdGl2aXR5RXh0cmFNZW1iZXI+KSA9PiBsaXN0TWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbih7IHBheWxvYWQ6IGV4dHJhTWVtYmVycyB9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNGYWlsdXJlQWN0aW9uKHsgcGF5bG9hZDogZXJyb3IgfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlckxlYWRlck1lbWJlcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyTGVhZGVyTWVtYmVyc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgaWQ6IHN0cmluZywgcTogc3RyaW5nfX0pID0+XG4gICAgICAgIHRoaXMubWVtYmVyTGVhZGVyR2V0YUFsbE1lbWJlcnMocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pZCwgcGF5bG9hZC5xKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChtZW1iZXJzOiBBcnJheTxNZW1iZXJUZWFtVGhyb3VnaD4pID0+IGxpc3RNZW1iZXJMZWFkZXJNZW1iZXJzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyc30pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdE1lbWJlckxlYWRlck1lbWJlcnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgcTogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy50ZWFtTGVhZGVyR2V0QWxsRXh0cmFNZW1iZXJzKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLnEpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGV4dHJhTWVtYmVyczogQXJyYXk8QWN0aXZpdHlFeHRyYU1lbWJlcj4pID0+IGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbih7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICB0ZWFtSWQ6IHBheWxvYWQudGVhbUlkLFxuICAgICAgICAgICAgICAgIHJlc3VsdHM6IGV4dHJhTWVtYmVyc1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0VGVhbUxlYWRlck1lbWJlcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0VGVhbUxlYWRlck1lbWJlcnNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgcTogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy50ZWFtTGVhZGVyR2V0QWxsTWVtYmVycyhwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5xKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChtZW1iZXJzOiBBcnJheTxNZW1iZXJUZWFtVGhyb3VnaD4pID0+IGxpc3RUZWFtTGVhZGVyTWVtYmVyc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG1lbWJlcnN9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RUZWFtTGVhZGVyTWVtYmVyc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJHcm91cCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy50ZWFtU2VydmljZS5nZXRNZW1iZXJUZWFtKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuaWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGdyb3VwOiBNZW1iZXJUZWFtKSA9PiByZXRyaWV2ZU1lbWJlckxlYWRlckdyb3VwU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogZ3JvdXB9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlckxlYWRlckV4dHJhTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHttZW1iZXJJZDogc3RyaW5nLCB0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldE1lbWJlclRlYW1FeHRyYU1lbWJlcihwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5pZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChtZW1iZXI6IEFjdGl2aXR5RXh0cmFNZW1iZXIpID0+IHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBtZW1iZXJ9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckxlYWRlckV4dHJhTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlckxlYWRlck1lbWJlckFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgdGVhbUlkOiBzdHJpbmcsIGlkOiBzdHJpbmd9fSkgPT4gdGhpcy50ZWFtU2VydmljZS5nZXRNZW1iZXJUZWFtTWVtYmVyKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKG1lbWJlcjogTWVtYmVyVGVhbVRocm91Z2gpID0+IHJldHJpZXZlTWVtYmVyTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1MZWFkZXJHcm91cCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbUxlYWRlckdyb3VwQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBzdHJpbmcgfSkgPT4gdGhpcy50ZWFtU2VydmljZS5nZXRUZWFtTGVhZGVyVGVhbShwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGdyb3VwOiBNZW1iZXJUZWFtKSA9PiByZXRyaWV2ZVRlYW1MZWFkZXJHcm91cFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGdyb3VwfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtTGVhZGVyR3JvdXBGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1MZWFkZXJFeHRyYU1lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldFRlYW1MZWFkZXJUZWFtRXh0cmFNZW1iZXIocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuaWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgobWVtYmVyOiBBY3Rpdml0eUV4dHJhTWVtYmVyKSA9PiByZXRyaWV2ZVRlYW1MZWFkZXJFeHRyYU1lbWJlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG1lbWJlcn0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldFRlYW1MZWFkZXJUZWFtTWVtYmVyKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKG1lbWJlcjogTWVtYmVyVGVhbVRocm91Z2gpID0+IHJldHJpZXZlVGVhbUxlYWRlck1lbWJlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG1lbWJlcn0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbUxlYWRlck1lbWJlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVRlYW1MZWFkZXJNZW1iZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZSh1cGRhdGVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZywgbWVtYmVyOiBNZW1iZXJUZWFtVGhyb3VnaH19KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLnVwZGF0ZVRlYW1MZWFkZXJUZWFtTWVtYmVyKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkLCBwYXlsb2FkLm1lbWJlcilcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChtZW1iZXI6IE1lbWJlclRlYW1UaHJvdWdoKSA9PiB1cGRhdGVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlVGVhbUxlYWRlck1lbWJlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhbS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL3RlYW0uZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUNMLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLGdDQUFnQyxFQUNoQyx1Q0FBdUMsRUFDdkMsdUNBQXVDLEVBQ3ZDLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsa0NBQWtDLEVBQ2xDLHFDQUFxQyxFQUNyQyw0Q0FBNEMsRUFDNUMsNENBQTRDLEVBQzVDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLGdDQUFnQyxFQUNoQyx1Q0FBdUMsRUFDdkMsdUNBQXVDLEVBQ3ZDLG1DQUFtQyxFQUNuQywwQ0FBMEMsRUFDMUMsMENBQTBDLEVBQzFDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLDhCQUE4QixFQUM5QixxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsbUNBQW1DLEVBQ3BDLE1BQU0sWUFBWSxDQUFDO0FBQ3BC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QyxDQUFDLENBQ3BHLENBQ0YsQ0FDRixDQUNGLENBQUM7S0FDSDsrR0FwT1ksV0FBVzttSEFBWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgQWN0aXZpdHlFeHRyYU1lbWJlciwgQ29sbGVjdGlvbiwgTGVhZGVyQWN0aXZpdHksIE1lbWJlclRlYW0sIE1lbWJlclRlYW1UaHJvdWdoLCBTZWFyY2hUZWFtIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJBY3Rpb24sXG4gIGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zQWN0aW9uLFxuICBsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TGVhZGVyTm90aWZpY2F0aW9uc0FjdGlvbixcbiAgbGlzdExlYWRlck5vdGlmaWNhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TGVhZGVyTm90aWZpY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNBY3Rpb24sXG4gIGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckxlYWRlck1lbWJlcnNBY3Rpb24sXG4gIGxpc3RNZW1iZXJMZWFkZXJNZW1iZXJzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlckxlYWRlck1lbWJlcnNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyVGVhbXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJUZWFtc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJUZWFtc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1MZWFkZXJNZW1iZXJzQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlck1lbWJlcnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlck1lbWJlcnNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlckV4dHJhTWVtYmVyQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlckV4dHJhTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJFeHRyYU1lbWJlclN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlckdyb3VwU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXJBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJFeHRyYU1lbWJlckFjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyRXh0cmFNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJFeHRyYU1lbWJlclN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlckdyb3VwQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJHcm91cEZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlckdyb3VwU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uLFxuICB1cGRhdGVUZWFtTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlVGVhbUxlYWRlck1lbWJlclN1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBmb3JrSm9pbiwgbWVyZ2VNYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRXh0cmFNZW1iZXJzTWl4aW4gfSBmcm9tICcuL21peGlucy9leHRyYS1tZW1iZXJzLW1peGluJztcbmltcG9ydCB7IExlYWRlck5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlYW1FZmZlY3RzIGV4dGVuZHMgRXh0cmFNZW1iZXJzTWl4aW4ge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGxlYWRlck5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoTGVhZGVyTm90aWZpY2F0aW9uU2VydmljZSk7XG5cbiAgZGVsZXRlVGVhbU1lbWJlciQgID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShkZWxldGVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmRlbGV0ZVRlYW1MZWFkZXJUZWFtTWVtYmVyKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDoge3RlYW1JZDogcGF5bG9hZC50ZWFtSWQsIGlkOiBwYXlsb2FkLmlkfX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uKHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge2NsdWJJZDogc3RyaW5nLCBtZW1iZXJJZHM/OiBBcnJheTxzdHJpbmc+fX0pID0+XG4gICAgICAgIHRoaXMudGVhbVNlcnZpY2UuZ2V0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXMocGF5bG9hZC5jbHViSWQsIHBheWxvYWQubWVtYmVySWRzID8/IFtdKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKCh0ZWFtczogQ29sbGVjdGlvbjxTZWFyY2hUZWFtPikgPT4gbGlzdEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdGVhbXMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIC8vIHN3aXRjaE1hcCAobm90IGV4aGF1c3RNYXApOiBvbiBhIGNvbnRleHQgc3dpdGNoIGEgcmVxdWVzdCBmb3IgdGhlIFBSRVZJT1VTIHRlYW1cbiAgLy8gY2FuIHN0aWxsIGJlIGluIGZsaWdodCB3aGVuIHRoZSBuZXcgdGVhbSdzIHJlcXVlc3QgaXMgZGlzcGF0Y2hlZCDigJQgdGhlIGxhdGVzdFxuICAvLyBkaXNwYXRjaCBtdXN0IHdpbiAoYW5kIGNhbmNlbCB0aGUgc3RhbGUgb25lKSwgb3IgdGhlIG5ldyBjb250ZXh0IHNob3dzIHRoZSBvbGRcbiAgLy8gdGVhbSdzIG5vdGlmaWNhdGlvbnMuXG4gIGxpc3RMZWFkZXJOb3RpZmljYXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdExlYWRlck5vdGlmaWNhdGlvbnNBY3Rpb24pLFxuICAgICAgc3dpdGNoTWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiBzdHJpbmd9KSA9PlxuICAgICAgICB0aGlzLmxlYWRlck5vdGlmaWNhdGlvblNlcnZpY2UuZ2V0TGVhZGVyTm90aWZpY2F0aW9ucyhwYXlsb2FkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChhY3Rpdml0aWVzOiBDb2xsZWN0aW9uPExlYWRlckFjdGl2aXR5PikgPT4gbGlzdExlYWRlck5vdGlmaWNhdGlvbnNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhY3Rpdml0aWVzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdExlYWRlck5vdGlmaWNhdGlvbnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJUZWFtcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJUZWFtc0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDogQXJyYXk8c3RyaW5nPn0pID0+XG4gICAgICAgIGZvcmtKb2luKHBheWxvYWQubWFwKChpZDogc3RyaW5nKSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldE1lbWJlclRlYW1zKGlkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKCh0ZWFtczogQ29sbGVjdGlvbjxTZWFyY2hUZWFtPikgPT4gKHtpZCwgdGVhbXM6IHRlYW1zLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgIClcbiAgICAgICAgKSkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0czogQXJyYXk8e2lkOiBzdHJpbmcsIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2UsIHRlYW1zPzogQXJyYXk8U2VhcmNoVGVhbT59PikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PFNlYXJjaFRlYW0+PigpO1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlclRlYW1zRmFpbHVyZUFjdGlvbih7IHBheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZSB9KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzdWx0LnRlYW1zKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0TWFwLnNldChyZXN1bHQuaWQsIHJlc3VsdC50ZWFtcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlclRlYW1zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcmVzdWx0TWFwfSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlckxlYWRlckV4dHJhTWVtYmVycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoeyBwYXlsb2FkIH06IHsgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpZDogc3RyaW5nLCBxOiBzdHJpbmcgfSB9KSA9PlxuICAgICAgICB0aGlzLm1lbWJlckxlYWRlckdldEFsbEV4dHJhTWVtYmVycyhwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmlkLCBwYXlsb2FkLnEpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGV4dHJhTWVtYmVyczogQXJyYXk8QWN0aXZpdHlFeHRyYU1lbWJlcj4pID0+IGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNTdWNjZXNzQWN0aW9uKHsgcGF5bG9hZDogZXh0cmFNZW1iZXJzIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdE1lbWJlckxlYWRlckV4dHJhTWVtYmVyc0ZhaWx1cmVBY3Rpb24oeyBwYXlsb2FkOiBlcnJvciB9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyTGVhZGVyTWVtYmVycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJMZWFkZXJNZW1iZXJzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHttZW1iZXJJZDogc3RyaW5nLCBpZDogc3RyaW5nLCBxOiBzdHJpbmd9fSkgPT5cbiAgICAgICAgdGhpcy5tZW1iZXJMZWFkZXJHZXRhQWxsTWVtYmVycyhwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmlkLCBwYXlsb2FkLnEpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG1lbWJlcnM6IEFycmF5PE1lbWJlclRlYW1UaHJvdWdoPikgPT4gbGlzdE1lbWJlckxlYWRlck1lbWJlcnNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBtZW1iZXJzfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0TWVtYmVyTGVhZGVyTWVtYmVyc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBxOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLnRlYW1MZWFkZXJHZXRBbGxFeHRyYU1lbWJlcnMocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQucSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZXh0cmFNZW1iZXJzOiBBcnJheTxBY3Rpdml0eUV4dHJhTWVtYmVyPikgPT4gbGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNTdWNjZXNzQWN0aW9uKHtcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICAgICAgICAgICAgcmVzdWx0czogZXh0cmFNZW1iZXJzXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RUZWFtTGVhZGVyTWVtYmVycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RUZWFtTGVhZGVyTWVtYmVyc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBxOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLnRlYW1MZWFkZXJHZXRBbGxNZW1iZXJzKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLnEpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG1lbWJlcnM6IEFycmF5PE1lbWJlclRlYW1UaHJvdWdoPikgPT4gbGlzdFRlYW1MZWFkZXJNZW1iZXJzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyc30pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdFRlYW1MZWFkZXJNZW1iZXJzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckxlYWRlckdyb3VwJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJMZWFkZXJHcm91cEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkOiBzdHJpbmcsIGlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldE1lbWJlclRlYW0ocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZ3JvdXA6IE1lbWJlclRlYW0pID0+IHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBncm91cH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJMZWFkZXJHcm91cEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJFeHRyYU1lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge21lbWJlcklkOiBzdHJpbmcsIHRlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nfX0pID0+IHRoaXMudGVhbVNlcnZpY2UuZ2V0TWVtYmVyVGVhbUV4dHJhTWVtYmVyKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKG1lbWJlcjogQWN0aXZpdHlFeHRyYU1lbWJlcikgPT4gcmV0cmlldmVNZW1iZXJMZWFkZXJFeHRyYU1lbWJlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG1lbWJlcn0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckxlYWRlck1lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyTGVhZGVyTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHttZW1iZXJJZDogc3RyaW5nLCB0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldE1lbWJlclRlYW1NZW1iZXIocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuaWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgobWVtYmVyOiBNZW1iZXJUZWFtVGhyb3VnaCkgPT4gcmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBtZW1iZXJ9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckxlYWRlck1lbWJlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlVGVhbUxlYWRlckdyb3VwJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVUZWFtTGVhZGVyR3JvdXBBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHN0cmluZyB9KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldFRlYW1MZWFkZXJUZWFtKHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoZ3JvdXA6IE1lbWJlclRlYW0pID0+IHJldHJpZXZlVGVhbUxlYWRlckdyb3VwU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogZ3JvdXB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVRlYW1MZWFkZXJHcm91cEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVUZWFtTGVhZGVyRXh0cmFNZW1iZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge3RlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nfX0pID0+IHRoaXMudGVhbVNlcnZpY2UuZ2V0VGVhbUxlYWRlclRlYW1FeHRyYU1lbWJlcihwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5pZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChtZW1iZXI6IEFjdGl2aXR5RXh0cmFNZW1iZXIpID0+IHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtTGVhZGVyRXh0cmFNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1MZWFkZXJNZW1iZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVRlYW1MZWFkZXJNZW1iZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge3RlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nfX0pID0+IHRoaXMudGVhbVNlcnZpY2UuZ2V0VGVhbUxlYWRlclRlYW1NZW1iZXIocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuaWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgobWVtYmVyOiBNZW1iZXJUZWFtVGhyb3VnaCkgPT4gcmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlVGVhbUxlYWRlck1lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHVwZGF0ZVRlYW1MZWFkZXJNZW1iZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge3RlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nLCBtZW1iZXI6IE1lbWJlclRlYW1UaHJvdWdofX0pID0+IHRoaXMudGVhbVNlcnZpY2UudXBkYXRlVGVhbUxlYWRlclRlYW1NZW1iZXIocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuaWQsIHBheWxvYWQubWVtYmVyKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKG1lbWJlcjogTWVtYmVyVGVhbVRocm91Z2gpID0+IHVwZGF0ZVRlYW1MZWFkZXJNZW1iZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBtZW1iZXJ9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVUZWFtTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
2
  import { Actions, createEffect, ofType } from '@ngrx/effects';
3
- import { AuthenticationService } from '../../authentication';
3
+ import { AuthenticationService } from '../../authentication/authentication.service';
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
6
  import { concat, EMPTY, exhaustMap, mergeMap, of, switchMap } from 'rxjs';
@@ -8,99 +8,101 @@ 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
- actions$ = inject(Actions);
12
- authenticationService = inject(AuthenticationService);
13
- storageService = inject(StorageService);
14
- isProcessingFailure = false;
15
- clearCurrent$ = createEffect(() => this.actions$
16
- .pipe(ofType(clearCurrentTokenAction), mergeMap(() => of(setCurrentTokenAction({ payload: null })))));
17
- getCurrent$ = createEffect(() => this.actions$
18
- .pipe(ofType(getCurrentTokenAction), exhaustMap(() => this.storageService.getAsObservable(STORAGE_TOKEN)
19
- .pipe(map((token) => {
20
- if (token) {
21
- return setCurrentTokenAction({ payload: token });
22
- }
23
- return getCurrentTokenSuccessAction({ payload: null });
24
- })))));
25
- login$ = createEffect(() => this.actions$
26
- .pipe(ofType(loginTokenAction), exhaustMap(({ payload }) => this.authenticationService.authenticateByCredentials(payload.username, payload.password, payload.totpCode)
27
- .pipe(mergeMap((token) => [
28
- loginTokenSuccessAction({ payload: token }),
29
- setCurrentTokenAction({ payload: token }),
30
- ]), catchError((error) => of(loginTokenFailureAction({ payload: error }), clearCurrentTokenAction()))))));
31
- loginWithToken$ = createEffect(() => this.actions$
32
- .pipe(ofType(loginWithTokenAction), exhaustMap(({ payload }) => this.authenticationService.authenticateByToken(payload)
33
- .pipe(mergeMap((token) => [
34
- loginTokenSuccessAction({ payload: token }),
35
- setCurrentTokenAction({ payload: token }),
36
- ]), catchError((error) => of(loginWithTokenFailureAction({ payload: error }), clearCurrentTokenAction()))))));
37
- memberLogin$ = createEffect(() => this.actions$
38
- .pipe(ofType(memberLoginAction), exhaustMap(({ payload }) => this.authenticationService.getPublicToken(payload.email, payload.code, payload.clubId)
39
- .pipe(map((token) => memberLoginSuccessAction({ payload: token })), catchError((error) => of(memberLoginFailureAction({ payload: error })))))));
40
- memberSendCode$ = createEffect(() => this.actions$
41
- .pipe(ofType(memberSendCodeAction), exhaustMap(({ payload }) => this.authenticationService.getLoginCode(payload.email, payload.clubId)
42
- .pipe(map((clubs) => memberSendCodeSuccessAction({ payload: clubs.toArray() })), catchError((error) => of(memberSendCodeFailureAction({ payload: error })))))));
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) => {
11
+ constructor() {
12
+ this.actions$ = inject(Actions);
13
+ this.authenticationService = inject(AuthenticationService);
14
+ this.storageService = inject(StorageService);
46
15
  this.isProcessingFailure = false;
47
- if (!token) {
48
- return [
49
- reauthenticateTokenFailureAction({ payload: new HttpErrorResponse({ status: 400 }) }),
16
+ this.clearCurrent$ = createEffect(() => this.actions$
17
+ .pipe(ofType(clearCurrentTokenAction), mergeMap(() => of(setCurrentTokenAction({ payload: null })))));
18
+ this.getCurrent$ = createEffect(() => this.actions$
19
+ .pipe(ofType(getCurrentTokenAction), exhaustMap(() => this.storageService.getAsObservable(STORAGE_TOKEN)
20
+ .pipe(map((token) => {
21
+ if (token) {
22
+ return setCurrentTokenAction({ payload: token });
23
+ }
24
+ return getCurrentTokenSuccessAction({ payload: null });
25
+ })))));
26
+ this.login$ = createEffect(() => this.actions$
27
+ .pipe(ofType(loginTokenAction), exhaustMap(({ payload }) => this.authenticationService.authenticateByCredentials(payload.username, payload.password, payload.totpCode)
28
+ .pipe(mergeMap((token) => [
29
+ loginTokenSuccessAction({ payload: token }),
30
+ setCurrentTokenAction({ payload: token }),
31
+ ]), catchError((error) => of(loginTokenFailureAction({ payload: error }), clearCurrentTokenAction()))))));
32
+ this.loginWithToken$ = createEffect(() => this.actions$
33
+ .pipe(ofType(loginWithTokenAction), exhaustMap(({ payload }) => this.authenticationService.authenticateByToken(payload)
34
+ .pipe(mergeMap((token) => [
35
+ loginTokenSuccessAction({ payload: token }),
36
+ setCurrentTokenAction({ payload: token }),
37
+ ]), catchError((error) => of(loginWithTokenFailureAction({ payload: error }), clearCurrentTokenAction()))))));
38
+ this.memberLogin$ = createEffect(() => this.actions$
39
+ .pipe(ofType(memberLoginAction), exhaustMap(({ payload }) => this.authenticationService.getPublicToken(payload.email, payload.code, payload.clubId)
40
+ .pipe(map((token) => memberLoginSuccessAction({ payload: token })), catchError((error) => of(memberLoginFailureAction({ payload: error })))))));
41
+ this.memberSendCode$ = createEffect(() => this.actions$
42
+ .pipe(ofType(memberSendCodeAction), exhaustMap(({ payload }) => this.authenticationService.getLoginCode(payload.email, payload.clubId)
43
+ .pipe(map((clubs) => memberSendCodeSuccessAction({ payload: clubs.toArray() })), catchError((error) => of(memberSendCodeFailureAction({ payload: error })))))));
44
+ this.reauthenticate$ = createEffect(() => this.actions$.pipe(ofType(reauthenticateTokenAction),
45
+ // `exhaustMap` ensures further token refresh attempts are ignored while one is in progress
46
+ exhaustMap(({ payload }) => this.authenticationService.reauthenticate(payload).pipe(exhaustMap((token) => {
47
+ this.isProcessingFailure = false;
48
+ if (!token) {
49
+ return [
50
+ reauthenticateTokenFailureAction({ payload: new HttpErrorResponse({ status: 400 }) }),
51
+ clearCurrentTokenAction(),
52
+ clearAuthenticationAction()
53
+ ];
54
+ }
55
+ else {
56
+ return [
57
+ loginTokenSuccessAction({ payload: token }),
58
+ setCurrentTokenAction({ payload: token }),
59
+ reauthenticateTokenSuccessAction({ payload: token })
60
+ ];
61
+ }
62
+ }), catchError((error) => {
63
+ if (this.isProcessingFailure) {
64
+ return EMPTY;
65
+ }
66
+ this.isProcessingFailure = true;
67
+ return concat([
68
+ reauthenticateTokenFailureAction({ payload: error }),
50
69
  clearCurrentTokenAction(),
51
70
  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
- })))));
74
- selectPublicMember$ = createEffect(() => this.actions$
75
- .pipe(ofType(selectPublicMemberAction), exhaustMap(({ payload }) => this.authenticationService.changePublicToken(payload)
76
- .pipe(map((token) => selectPublicMemberSuccessAction({ payload: token })), catchError((error) => of(selectPublicMemberFailureAction({ payload: error })))))));
77
- sessionToken$ = createEffect(() => this.actions$
78
- .pipe(ofType(loginWithSessionAction), exhaustMap(() => this.authenticationService.getSessionToken()
79
- .pipe(mergeMap((token) => {
80
- if (token) {
81
- return [
82
- loginTokenSuccessAction({ payload: token }),
83
- setCurrentTokenAction({ payload: token }),
84
- ];
85
- }
86
- else {
87
- return of(loginWithSessionFailureAction({
88
- payload: new HttpErrorResponse({
89
- status: 400
90
- })
91
- }), clearCurrentTokenAction());
92
- }
93
- }), catchError((error) => of(loginWithSessionFailureAction({ payload: error })))))));
94
- setCurrent$ = createEffect(() => this.actions$
95
- .pipe(ofType(setCurrentTokenAction), switchMap(({ payload }) => this.storageService.setAsObservable(STORAGE_TOKEN, payload)
96
- .pipe(map((token) => {
97
- this.authenticationService.setToken(token);
98
- return getCurrentTokenSuccessAction({ payload: token });
99
- })))));
100
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TokenEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
101
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TokenEffects });
71
+ ]).pipe(finalize(() => {
72
+ this.isProcessingFailure = false;
73
+ }));
74
+ })))));
75
+ this.selectPublicMember$ = createEffect(() => this.actions$
76
+ .pipe(ofType(selectPublicMemberAction), exhaustMap(({ payload }) => this.authenticationService.changePublicToken(payload)
77
+ .pipe(map((token) => selectPublicMemberSuccessAction({ payload: token })), catchError((error) => of(selectPublicMemberFailureAction({ payload: error })))))));
78
+ this.sessionToken$ = createEffect(() => this.actions$
79
+ .pipe(ofType(loginWithSessionAction), exhaustMap(() => this.authenticationService.getSessionToken()
80
+ .pipe(mergeMap((token) => {
81
+ if (token) {
82
+ return [
83
+ loginTokenSuccessAction({ payload: token }),
84
+ setCurrentTokenAction({ payload: token }),
85
+ ];
86
+ }
87
+ else {
88
+ return of(loginWithSessionFailureAction({
89
+ payload: new HttpErrorResponse({
90
+ status: 400
91
+ })
92
+ }), clearCurrentTokenAction());
93
+ }
94
+ }), catchError((error) => of(loginWithSessionFailureAction({ payload: error })))))));
95
+ this.setCurrent$ = createEffect(() => this.actions$
96
+ .pipe(ofType(setCurrentTokenAction), switchMap(({ payload }) => this.storageService.setAsObservable(STORAGE_TOKEN, payload)
97
+ .pipe(map((token) => {
98
+ this.authenticationService.setToken(token);
99
+ return getCurrentTokenSuccessAction({ payload: token });
100
+ })))));
101
+ }
102
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
103
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenEffects }); }
102
104
  }
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TokenEffects, decorators: [{
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenEffects, decorators: [{
104
106
  type: Injectable
105
107
  }] });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy90b2tlbi5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHFCQUFxQixFQUN0QixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSXpELE1BQU0sT0FBTyxZQUFZO0lBQ2YsUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixxQkFBcUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN0RCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUVwQyxhQUFhLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQzdDLElBQUksQ0FDSCxNQUFNLENBQUMsdUJBQXVCLENBQUMsRUFDL0IsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDM0QsQ0FDRixDQUFDO0lBRUYsV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtTQUMzQyxJQUFJLENBQ0gsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEVBQzdCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7U0FDaEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO1FBQ25CLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLHFCQUFxQixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU8sNEJBQTRCLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQTtJQUN0RCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUFDO0lBRUYsTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtTQUN0QyxJQUFJLENBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQ3hCLFVBQVUsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUVqQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDN0csSUFBSSxDQUNILFFBQVEsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFLENBQUM7UUFDekIsdUJBQXVCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUM7UUFDekMscUJBQXFCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUM7S0FDeEMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FDekMsdUJBQXVCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsRUFDekMsdUJBQXVCLEVBQUUsQ0FDMUIsQ0FBQyxDQUNILENBQ0osQ0FDRixDQUNGLENBQUM7SUFFRixlQUFlLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQy9DLElBQUksQ0FDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsRUFDNUIsVUFBVSxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7U0FDbkcsSUFBSSxDQUNILFFBQVEsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFLENBQUM7UUFDekIsdUJBQXVCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUM7UUFDekMscUJBQXFCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUM7S0FDeEMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FDekMsMkJBQTJCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsRUFDN0MsdUJBQXVC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amVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbic7XG5pbXBvcnQgeyBTVE9SQUdFX1RPS0VOLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIGNsZWFyQXV0aGVudGljYXRpb25BY3Rpb24sXG4gIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uLFxuICBnZXRDdXJyZW50VG9rZW5BY3Rpb24sXG4gIGdldEN1cnJlbnRUb2tlblN1Y2Nlc3NBY3Rpb24sXG4gIGxvZ2luVG9rZW5BY3Rpb24sXG4gIGxvZ2luVG9rZW5GYWlsdXJlQWN0aW9uLFxuICBsb2dpblRva2VuU3VjY2Vzc0FjdGlvbixcbiAgbG9naW5XaXRoU2Vzc2lvbkFjdGlvbixcbiAgbG9naW5XaXRoU2Vzc2lvbkZhaWx1cmVBY3Rpb24sXG4gIGxvZ2luV2l0aFRva2VuQWN0aW9uLFxuICBsb2dpbldpdGhUb2tlbkZhaWx1cmVBY3Rpb24sXG4gIG1lbWJlckxvZ2luQWN0aW9uLFxuICBtZW1iZXJMb2dpbkZhaWx1cmVBY3Rpb24sXG4gIG1lbWJlckxvZ2luU3VjY2Vzc0FjdGlvbixcbiAgbWVtYmVyU2VuZENvZGVBY3Rpb24sXG4gIG1lbWJlclNlbmRDb2RlRmFpbHVyZUFjdGlvbixcbiAgbWVtYmVyU2VuZENvZGVTdWNjZXNzQWN0aW9uLFxuICByZWF1dGhlbnRpY2F0ZVRva2VuQWN0aW9uLFxuICByZWF1dGhlbnRpY2F0ZVRva2VuRmFpbHVyZUFjdGlvbixcbiAgcmVhdXRoZW50aWNhdGVUb2tlblN1Y2Nlc3NBY3Rpb24sXG4gIHNlbGVjdFB1YmxpY01lbWJlckFjdGlvbixcbiAgc2VsZWN0UHVibGljTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgc2VsZWN0UHVibGljTWVtYmVyU3VjY2Vzc0FjdGlvbixcbiAgc2V0Q3VycmVudFRva2VuQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgY29uY2F0LCBFTVBUWSwgZXhoYXVzdE1hcCwgbWVyZ2VNYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbGxlY3Rpb24sIFB1YmxpY0F1dGhlbnRpY2F0aW9uLCBTZWFyY2hDbHViLCBUb2tlbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBHcmFudFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUb2tlbkVmZmVjdHMge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZSA9IGluamVjdChBdXRoZW50aWNhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KFN0b3JhZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpc1Byb2Nlc3NpbmdGYWlsdXJlID0gZmFsc2U7XG5cbiAgY2xlYXJDdXJyZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gb2Yoc2V0Q3VycmVudFRva2VuQWN0aW9uKHtwYXlsb2FkOiBudWxsfSkpKVxuICAgIClcbiAgKTtcblxuICBnZXRDdXJyZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoZ2V0Q3VycmVudFRva2VuQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRBc09ic2VydmFibGUoU1RPUkFHRV9UT0tFTilcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCh0b2tlbjogVG9rZW4pID0+IHtcbiAgICAgICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudFRva2VuQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRUb2tlblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG51bGx9KVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9naW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsb2dpblRva2VuQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgdG90cENvZGU/OiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVCeUNyZWRlbnRpYWxzKHBheWxvYWQudXNlcm5hbWUsIHBheWxvYWQucGFzc3dvcmQsIHBheWxvYWQudG90cENvZGUpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgodG9rZW46IFRva2VuKSA9PiBbXG4gICAgICAgICAgICAgIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgICAgICBzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoXG4gICAgICAgICAgICAgIGxvZ2luVG9rZW5GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pLFxuICAgICAgICAgICAgICBjbGVhckN1cnJlbnRUb2tlbkFjdGlvbigpXG4gICAgICAgICAgICApKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9naW5XaXRoVG9rZW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsb2dpbldpdGhUb2tlbkFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogc3RyaW5nIH0pID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmF1dGhlbnRpY2F0ZUJ5VG9rZW4ocGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHRva2VuOiBUb2tlbikgPT4gW1xuICAgICAgICAgICAgbG9naW5Ub2tlblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgICBzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihcbiAgICAgICAgICAgIGxvZ2luV2l0aFRva2VuRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSxcbiAgICAgICAgICAgIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uKClcbiAgICAgICAgICApKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIG1lbWJlckxvZ2luJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobWVtYmVyTG9naW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge2VtYWlsOiBzdHJpbmcsIGNsdWJJZDogc3RyaW5nLCBjb2RlOiBzdHJpbmd9fSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0UHVibGljVG9rZW4ocGF5bG9hZC5lbWFpbCwgcGF5bG9hZC5jb2RlLCBwYXlsb2FkLmNsdWJJZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCh0b2tlbjogUHVibGljQXV0aGVudGljYXRpb24pID0+IG1lbWJlckxvZ2luU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihtZW1iZXJMb2dpbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIG1lbWJlclNlbmRDb2RlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobWVtYmVyU2VuZENvZGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge2VtYWlsOiBzdHJpbmcsIGNsdWJJZDogc3RyaW5nIHwgbnVsbH19KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRMb2dpbkNvZGUocGF5bG9hZC5lbWFpbCwgcGF5bG9hZC5jbHViSWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY2x1YnM6IENvbGxlY3Rpb248U2VhcmNoQ2x1Yj4pID0+IG1lbWJlclNlbmRDb2RlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY2x1YnMudG9BcnJheSgpfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobWVtYmVyU2VuZENvZGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZWF1dGhlbnRpY2F0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUocmVhdXRoZW50aWNhdGVUb2tlbkFjdGlvbiksXG4gICAgICAvLyBgZXhoYXVzdE1hcGAgZW5zdXJlcyBmdXJ0aGVyIHRva2VuIHJlZnJlc2ggYXR0ZW1wdHMgYXJlIGlnbm9yZWQgd2hpbGUgb25lIGlzIGluIHByb2dyZXNzXG4gICAgICBleGhhdXN0TWFwKCh7IHBheWxvYWQgfTogeyBwYXlsb2FkOiBHcmFudFR5cGUgfCBudWxsIH0pID0+XG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLnJlYXV0aGVudGljYXRlKHBheWxvYWQpLnBpcGUoXG4gICAgICAgICAgZXhoYXVzdE1hcCgodG9rZW46IFRva2VuIHwgbnVsbCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdGYWlsdXJlID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICByZWF1dGhlbnRpY2F0ZVRva2VuRmFpbHVyZUFjdGlvbih7IHBheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7IHN0YXR1czogNDAwIH0pIH0pLFxuICAgICAgICAgICAgICAgIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uKCksXG4gICAgICAgICAgICAgICAgY2xlYXJBdXRoZW50aWNhdGlvbkFjdGlvbigpXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgbG9naW5Ub2tlblN1Y2Nlc3NBY3Rpb24oeyBwYXlsb2FkOiB0b2tlbiB9KSxcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50VG9rZW5BY3Rpb24oeyBwYXlsb2FkOiB0b2tlbiB9KSxcbiAgICAgICAgICAgICAgICByZWF1dGhlbnRpY2F0ZVRva2VuU3VjY2Vzc0FjdGlvbih7IHBheWxvYWQ6IHRva2VuIH0pXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUHJvY2Vzc2luZ0ZhaWx1cmUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdGYWlsdXJlID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBjb25jYXQoW1xuICAgICAgICAgICAgICByZWF1dGhlbnRpY2F0ZVRva2VuRmFpbHVyZUFjdGlvbih7IHBheWxvYWQ6IGVycm9yIH0pLFxuICAgICAgICAgICAgICBjbGVhckN1cnJlbnRUb2tlbkFjdGlvbigpLFxuICAgICAgICAgICAgICBjbGVhckF1dGhlbnRpY2F0aW9uQWN0aW9uKClcbiAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZhaWx1cmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzZWxlY3RQdWJsaWNNZW1iZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShzZWxlY3RQdWJsaWNNZW1iZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDogc3RyaW5nfSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY2hhbmdlUHVibGljVG9rZW4ocGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCh0b2tlbjogUHVibGljQXV0aGVudGljYXRpb24pID0+IHNlbGVjdFB1YmxpY01lbWJlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoc2VsZWN0UHVibGljTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2Vzc2lvblRva2VuJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobG9naW5XaXRoU2Vzc2lvbkFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFNlc3Npb25Ub2tlbigpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKCh0b2tlbjogVG9rZW4gfCBudWxsKSA9PiB7XG4gICAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBsb2dpblRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICAgICAgbG9naW5XaXRoU2Vzc2lvbkZhaWx1cmVBY3Rpb24oe1xuICAgICAgICAgICAgICAgICAgcGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiA0MDBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uKClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxvZ2luV2l0aFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzZXRDdXJyZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoc2V0Q3VycmVudFRva2VuQWN0aW9uKSxcbiAgICAgIHN3aXRjaE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IFRva2VuIHwgbnVsbCB9KSA9PiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEFzT2JzZXJ2YWJsZShTVE9SQUdFX1RPS0VOLCBwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBUb2tlbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2Uuc2V0VG9rZW4odG9rZW4pO1xuICAgICAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRUb2tlblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy90b2tlbi5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHFCQUFxQixFQUN0QixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixF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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNUT1JBR0VfVE9LRU4sIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgY2xlYXJBdXRoZW50aWNhdGlvbkFjdGlvbixcbiAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24sXG4gIGdldEN1cnJlbnRUb2tlbkFjdGlvbixcbiAgZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbixcbiAgbG9naW5Ub2tlbkFjdGlvbixcbiAgbG9naW5Ub2tlbkZhaWx1cmVBY3Rpb24sXG4gIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uLFxuICBsb2dpbldpdGhTZXNzaW9uQWN0aW9uLFxuICBsb2dpbldpdGhTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgbG9naW5XaXRoVG9rZW5BY3Rpb24sXG4gIGxvZ2luV2l0aFRva2VuRmFpbHVyZUFjdGlvbixcbiAgbWVtYmVyTG9naW5BY3Rpb24sXG4gIG1lbWJlckxvZ2luRmFpbHVyZUFjdGlvbixcbiAgbWVtYmVyTG9naW5TdWNjZXNzQWN0aW9uLFxuICBtZW1iZXJTZW5kQ29kZUFjdGlvbixcbiAgbWVtYmVyU2VuZENvZGVGYWlsdXJlQWN0aW9uLFxuICBtZW1iZXJTZW5kQ29kZVN1Y2Nlc3NBY3Rpb24sXG4gIHJlYXV0aGVudGljYXRlVG9rZW5BY3Rpb24sXG4gIHJlYXV0aGVudGljYXRlVG9rZW5GYWlsdXJlQWN0aW9uLFxuICByZWF1dGhlbnRpY2F0ZVRva2VuU3VjY2Vzc0FjdGlvbixcbiAgc2VsZWN0UHVibGljTWVtYmVyQWN0aW9uLFxuICBzZWxlY3RQdWJsaWNNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICBzZWxlY3RQdWJsaWNNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICBzZXRDdXJyZW50VG9rZW5BY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBjb25jYXQsIEVNUFRZLCBleGhhdXN0TWFwLCBtZXJnZU1hcCwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgUHVibGljQXV0aGVudGljYXRpb24sIFNlYXJjaENsdWIsIFRva2VuIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEdyYW50VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRva2VuRWZmZWN0cyB7XG4gIHByaXZhdGUgYWN0aW9ucyQgPSBpbmplY3QoQWN0aW9ucyk7XG4gIHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlID0gaW5qZWN0KEF1dGhlbnRpY2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgc3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICBwcml2YXRlIGlzUHJvY2Vzc2luZ0ZhaWx1cmUgPSBmYWxzZTtcblxuICBjbGVhckN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjbGVhckN1cnJlbnRUb2tlbkFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoKSA9PiBvZihzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IG51bGx9KSkpXG4gICAgKVxuICApO1xuXG4gIGdldEN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShnZXRDdXJyZW50VG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEFzT2JzZXJ2YWJsZShTVE9SQUdFX1RPS0VOKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBUb2tlbikgPT4ge1xuICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IHRva2VufSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbnVsbH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2dpbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxvZ2luVG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCB0b3RwQ29kZT86IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmF1dGhlbnRpY2F0ZUJ5Q3JlZGVudGlhbHMocGF5bG9hZC51c2VybmFtZSwgcGF5bG9hZC5wYXNzd29yZCwgcGF5bG9hZC50b3RwQ29kZSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKCh0b2tlbjogVG9rZW4pID0+IFtcbiAgICAgICAgICAgICAgbG9naW5Ub2tlblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgICAgIHNldEN1cnJlbnRUb2tlbkFjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihcbiAgICAgICAgICAgICAgbG9naW5Ub2tlbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSksXG4gICAgICAgICAgICAgIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uKClcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2dpbldpdGhUb2tlbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxvZ2luV2l0aFRva2VuQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBzdHJpbmcgfSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRlQnlUb2tlbihwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgodG9rZW46IFRva2VuKSA9PiBbXG4gICAgICAgICAgICBsb2dpblRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgIHNldEN1cnJlbnRUb2tlbkFjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKFxuICAgICAgICAgICAgbG9naW5XaXRoVG9rZW5GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pLFxuICAgICAgICAgICAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24oKVxuICAgICAgICAgICkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbWVtYmVyTG9naW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShtZW1iZXJMb2dpbkFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7ZW1haWw6IHN0cmluZywgY2x1YklkOiBzdHJpbmcsIGNvZGU6IHN0cmluZ319KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRQdWJsaWNUb2tlbihwYXlsb2FkLmVtYWlsLCBwYXlsb2FkLmNvZGUsIHBheWxvYWQuY2x1YklkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBQdWJsaWNBdXRoZW50aWNhdGlvbikgPT4gbWVtYmVyTG9naW5TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKG1lbWJlckxvZ2luRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbWVtYmVyU2VuZENvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShtZW1iZXJTZW5kQ29kZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7ZW1haWw6IHN0cmluZywgY2x1YklkOiBzdHJpbmcgfCBudWxsfX0pID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldExvZ2luQ29kZShwYXlsb2FkLmVtYWlsLCBwYXlsb2FkLmNsdWJJZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjbHViczogQ29sbGVjdGlvbjxTZWFyY2hDbHViPikgPT4gbWVtYmVyU2VuZENvZGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjbHVicy50b0FycmF5KCl9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihtZW1iZXJTZW5kQ29kZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJlYXV0aGVudGljYXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShyZWF1dGhlbnRpY2F0ZVRva2VuQWN0aW9uKSxcbiAgICAgIC8vIGBleGhhdXN0TWFwYCBlbnN1cmVzIGZ1cnRoZXIgdG9rZW4gcmVmcmVzaCBhdHRlbXB0cyBhcmUgaWdub3JlZCB3aGlsZSBvbmUgaXMgaW4gcHJvZ3Jlc3NcbiAgICAgIGV4aGF1c3RNYXAoKHsgcGF5bG9hZCB9OiB7IHBheWxvYWQ6IEdyYW50VHlwZSB8IG51bGwgfSkgPT5cbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UucmVhdXRoZW50aWNhdGUocGF5bG9hZCkucGlwZShcbiAgICAgICAgICBleGhhdXN0TWFwKCh0b2tlbjogVG9rZW4gfCBudWxsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZhaWx1cmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHJlYXV0aGVudGljYXRlVG9rZW5GYWlsdXJlQWN0aW9uKHsgcGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHsgc3RhdHVzOiA0MDAgfSkgfSksXG4gICAgICAgICAgICAgICAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24oKSxcbiAgICAgICAgICAgICAgICBjbGVhckF1dGhlbnRpY2F0aW9uQWN0aW9uKClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBsb2dpblRva2VuU3VjY2Vzc0FjdGlvbih7IHBheWxvYWQ6IHRva2VuIH0pLFxuICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUb2tlbkFjdGlvbih7IHBheWxvYWQ6IHRva2VuIH0pLFxuICAgICAgICAgICAgICAgIHJlYXV0aGVudGljYXRlVG9rZW5TdWNjZXNzQWN0aW9uKHsgcGF5bG9hZDogdG9rZW4gfSlcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQcm9jZXNzaW5nRmFpbHVyZSkge1xuICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZhaWx1cmUgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGNvbmNhdChbXG4gICAgICAgICAgICAgIHJlYXV0aGVudGljYXRlVG9rZW5GYWlsdXJlQWN0aW9uKHsgcGF5bG9hZDogZXJyb3IgfSksXG4gICAgICAgICAgICAgIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uKCksXG4gICAgICAgICAgICAgIGNsZWFyQXV0aGVudGljYXRpb25BY3Rpb24oKVxuICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nRmFpbHVyZSA9IGZhbHNlO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNlbGVjdFB1YmxpY01lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHNlbGVjdFB1YmxpY01lbWJlckFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiBzdHJpbmd9KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jaGFuZ2VQdWJsaWNUb2tlbihwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBQdWJsaWNBdXRoZW50aWNhdGlvbikgPT4gc2VsZWN0UHVibGljTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihzZWxlY3RQdWJsaWNNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzZXNzaW9uVG9rZW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsb2dpbldpdGhTZXNzaW9uQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0U2Vzc2lvblRva2VuKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHRva2VuOiBUb2tlbiB8IG51bGwpID0+IHtcbiAgICAgICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUb2tlbkFjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgICBsb2dpbldpdGhTZXNzaW9uRmFpbHVyZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgICBwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2UoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDQwMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24oKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobG9naW5XaXRoU2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNldEN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShzZXRDdXJyZW50VG9rZW5BY3Rpb24pLFxuICAgICAgc3dpdGNoTWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogVG9rZW4gfCBudWxsIH0pID0+IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0QXNPYnNlcnZhYmxlKFNUT1JBR0VfVE9LRU4sIHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgodG9rZW46IFRva2VuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5zZXRUb2tlbih0b2tlbik7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=