@myclub_se/data-access 3.5.2 → 3.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/api-models/api-bookable-item.mjs +1 -1
- package/esm2022/lib/api-models/api-booking-calendar.mjs +1 -1
- package/esm2022/lib/api-models/index.mjs +1 -2
- package/esm2022/lib/authentication/authentication.service.mjs +5 -1
- package/esm2022/lib/models/bookable-item.mjs +2 -5
- package/esm2022/lib/models/booking-calendar.mjs +10 -10
- package/esm2022/lib/models/booking-slot-filter.mjs +4 -9
- package/esm2022/lib/models/index.mjs +1 -2
- package/esm2022/lib/services/bookable.service.mjs +2 -88
- package/esm2022/lib/services/factories/bookable-item-factory.mjs +2 -2
- package/esm2022/lib/services/factories/booking-calendar-factory.mjs +3 -3
- package/esm2022/lib/services/factories/index.mjs +1 -2
- package/esm2022/lib/store/actions/booking.actions.mjs +1 -19
- package/esm2022/lib/store/effects/booking.effects.mjs +2 -13
- package/esm2022/lib/store/reducers/booking.reducers.mjs +2 -11
- package/esm2022/lib/store/selectors/booking.selectors.mjs +1 -2
- package/esm2022/lib/store/state/booking.state.mjs +1 -2
- package/fesm2022/myclub_se-data-access.mjs +19 -179
- package/fesm2022/myclub_se-data-access.mjs.map +1 -1
- package/lib/api-models/api-bookable-item.d.ts +0 -1
- package/lib/api-models/api-booking-calendar.d.ts +2 -2
- package/lib/api-models/index.d.ts +0 -1
- package/lib/authentication/authentication.service.d.ts +4 -0
- package/lib/models/bookable-item.d.ts +1 -3
- package/lib/models/booking-calendar.d.ts +4 -4
- package/lib/models/booking-slot-filter.d.ts +1 -2
- package/lib/models/index.d.ts +0 -1
- package/lib/services/bookable.service.d.ts +1 -12
- package/lib/services/factories/index.d.ts +0 -1
- package/lib/store/actions/booking.actions.d.ts +1 -65
- package/lib/store/effects/booking.effects.d.ts +1 -28
- package/lib/store/selectors/booking.selectors.d.ts +0 -1
- package/lib/store/state/booking.state.d.ts +1 -2
- package/package.json +1 -1
- package/esm2022/lib/api-models/api-bookable-group.mjs +0 -2
- package/esm2022/lib/models/bookable-group.mjs +0 -27
- package/esm2022/lib/services/factories/bookable-group-factory.mjs +0 -6
- package/lib/api-models/api-bookable-group.d.ts +0 -9
- package/lib/models/bookable-group.d.ts +0 -18
- package/lib/services/factories/bookable-group-factory.d.ts +0 -3
|
@@ -1,30 +1,24 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { Role, } from '../models';
|
|
3
|
-
import {
|
|
3
|
+
import { bookableItemFactory, bookablePartFactory, bookableTagFactory, } from './factories';
|
|
4
4
|
import { invalidRoleError } from "./constants";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "./api.service";
|
|
7
7
|
const CLUB_BOOKABLES_PATH = ':clubId/activities/bookables/';
|
|
8
8
|
const CLUB_BOOKABLE_PATH = ':clubId/activities/bookables/:bookableId/';
|
|
9
|
-
const CLUB_BOOKABLE_GROUPS_PATH = ':clubId/activities/bookables/groups/';
|
|
10
|
-
const CLUB_BOOKABLE_GROUP_PATH = ':clubId/activities/bookables/groups/:groupId/';
|
|
11
9
|
const CLUB_BOOKABLE_TAGS_PATH = ':clubId/activities/bookables/tags/';
|
|
12
10
|
const CLUB_BOOKABLE_TAG_PATH = ':clubId/activities/bookables/tags/:tagId/';
|
|
13
11
|
const CLUB_BOOKABLE_PARTS_PATH = ':clubId/activities/bookables/:bookableId/parts/';
|
|
14
12
|
const SECTION_BOOKABLES_PATH = ':sectionId/activities/bookables/';
|
|
15
13
|
const SECTION_BOOKABLE_PATH = ':sectionId/activities/bookables/:bookableId/';
|
|
16
|
-
const SECTION_BOOKABLE_GROUPS_PATH = ':sectionId/activities/bookables/groups/';
|
|
17
|
-
const SECTION_BOOKABLE_GROUP_PATH = ':sectionId/activities/bookables/groups/:groupId/';
|
|
18
14
|
const SECTION_BOOKABLE_TAGS_PATH = ':sectionId/activities/bookables/tags/';
|
|
19
15
|
const SECTION_BOOKABLE_TAG_PATH = ':sectionId/activities/bookables/tags/:tagId/';
|
|
20
16
|
const SECTION_BOOKABLE_PARTS_PATH = ':sectionId/activities/bookables/:bookableId/parts/';
|
|
21
17
|
const TEAM_BOOKABLES_PATH = ':teamId/activities/bookables/';
|
|
22
|
-
const TEAM_BOOKABLE_GROUPS_PATH = ':teamId/activities/bookables/groups/';
|
|
23
18
|
const TEAM_BOOKABLE_TAGS_PATH = ':teamId/activities/bookables/tags/';
|
|
24
19
|
const TEAM_BOOKABLE_PARTS_PATH = ':teamId/activities/bookables/:bookableId/parts/';
|
|
25
20
|
const MEMBER_BOOKABLES_PATH = ':memberId/activities/bookables/';
|
|
26
21
|
const MEMBER_BOOKABLE_PATH = ':memberId/activities/bookables/:bookableId/';
|
|
27
|
-
const MEMBER_BOOKABLE_GROUPS_PATH = ':memberId/activities/bookables/groups/';
|
|
28
22
|
const MEMBER_BOOKABLE_TAGS_PATH = ':memberId/activities/bookables/tags/';
|
|
29
23
|
const MEMBER_BOOKABLE_PARTS_PATH = ':memberId/activities/bookables/:bookableId/parts/';
|
|
30
24
|
export class BookableService {
|
|
@@ -134,86 +128,6 @@ export class BookableService {
|
|
|
134
128
|
}, bookableItem);
|
|
135
129
|
}
|
|
136
130
|
// endregion
|
|
137
|
-
// region Bookable Groups
|
|
138
|
-
getBookableGroups(role, itemId) {
|
|
139
|
-
switch (role) {
|
|
140
|
-
case Role.ClubAdmin:
|
|
141
|
-
return this.getClubBookableGroups(itemId);
|
|
142
|
-
case Role.SectionAdmin:
|
|
143
|
-
return this.getSectionBookableGroups(itemId);
|
|
144
|
-
case Role.TeamAdmin:
|
|
145
|
-
return this.getTeamBookableGroups(itemId);
|
|
146
|
-
case Role.MemberAdmin:
|
|
147
|
-
return this.getMemberBookableGroups(itemId);
|
|
148
|
-
default:
|
|
149
|
-
throw invalidRoleError;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
getClubBookableGroups(clubId) {
|
|
153
|
-
return this.apiService
|
|
154
|
-
.getCollection(bookableGroupFactory, Role.ClubAdmin, CLUB_BOOKABLE_GROUPS_PATH, { clubId }, { params: { limit: 'null' } });
|
|
155
|
-
}
|
|
156
|
-
getSectionBookableGroups(sectionId) {
|
|
157
|
-
return this.apiService
|
|
158
|
-
.getCollection(bookableGroupFactory, Role.SectionAdmin, SECTION_BOOKABLE_GROUPS_PATH, { sectionId }, { params: { limit: 'null' } });
|
|
159
|
-
}
|
|
160
|
-
getTeamBookableGroups(teamId) {
|
|
161
|
-
return this.apiService
|
|
162
|
-
.getCollection(bookableGroupFactory, Role.TeamAdmin, TEAM_BOOKABLE_GROUPS_PATH, { teamId }, { params: { limit: 'null' } });
|
|
163
|
-
}
|
|
164
|
-
getMemberBookableGroups(memberId) {
|
|
165
|
-
return this.apiService
|
|
166
|
-
.getCollection(bookableGroupFactory, Role.MemberAdmin, MEMBER_BOOKABLE_GROUPS_PATH, { memberId }, { params: { limit: 'null' } });
|
|
167
|
-
}
|
|
168
|
-
updateBookableGroup(role, clubOrSectionOrTeamId, bookableGroup) {
|
|
169
|
-
switch (role) {
|
|
170
|
-
case Role.ClubAdmin:
|
|
171
|
-
return this.updateClubBookableGroup(clubOrSectionOrTeamId, bookableGroup);
|
|
172
|
-
case Role.SectionAdmin:
|
|
173
|
-
return this.updateSectionBookableGroup(clubOrSectionOrTeamId, bookableGroup);
|
|
174
|
-
default:
|
|
175
|
-
throw invalidRoleError;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
updateClubBookableGroup(clubId, bookableGroup) {
|
|
179
|
-
return this.apiService
|
|
180
|
-
.updateResource(bookableGroupFactory, Role.ClubAdmin, CLUB_BOOKABLE_GROUP_PATH, {
|
|
181
|
-
clubId,
|
|
182
|
-
groupId: bookableGroup.id,
|
|
183
|
-
}, bookableGroup);
|
|
184
|
-
}
|
|
185
|
-
updateSectionBookableGroup(sectionId, bookableGroup) {
|
|
186
|
-
return this.apiService
|
|
187
|
-
.updateResource(bookableGroupFactory, Role.SectionAdmin, SECTION_BOOKABLE_GROUP_PATH, {
|
|
188
|
-
sectionId,
|
|
189
|
-
groupId: bookableGroup.id,
|
|
190
|
-
}, bookableGroup);
|
|
191
|
-
}
|
|
192
|
-
createBookableGroup(role, clubOrSectionOrTeamId, bookableGroup) {
|
|
193
|
-
switch (role) {
|
|
194
|
-
case Role.ClubAdmin:
|
|
195
|
-
return this.createClubBookableGroup(clubOrSectionOrTeamId, bookableGroup);
|
|
196
|
-
case Role.SectionAdmin:
|
|
197
|
-
return this.createSectionBookableGroup(clubOrSectionOrTeamId, bookableGroup);
|
|
198
|
-
default:
|
|
199
|
-
throw invalidRoleError;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
createClubBookableGroup(clubId, bookableGroup) {
|
|
203
|
-
delete bookableGroup.id;
|
|
204
|
-
return this.apiService
|
|
205
|
-
.postResource(bookableGroupFactory, Role.ClubAdmin, CLUB_BOOKABLE_GROUPS_PATH, {
|
|
206
|
-
clubId,
|
|
207
|
-
}, bookableGroup);
|
|
208
|
-
}
|
|
209
|
-
createSectionBookableGroup(sectionId, bookableGroup) {
|
|
210
|
-
delete bookableGroup.id;
|
|
211
|
-
return this.apiService
|
|
212
|
-
.postResource(bookableGroupFactory, Role.SectionAdmin, SECTION_BOOKABLE_GROUPS_PATH, {
|
|
213
|
-
sectionId,
|
|
214
|
-
}, bookableGroup);
|
|
215
|
-
}
|
|
216
|
-
// endregion
|
|
217
131
|
// region Bookable Tags
|
|
218
132
|
getBookableTags(role, itemId) {
|
|
219
133
|
switch (role) {
|
|
@@ -368,4 +282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
368
282
|
providedIn: 'root'
|
|
369
283
|
}]
|
|
370
284
|
}], ctorParameters: () => [{ type: i1.ApiService }] });
|
|
371
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2FibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc2VydmljZXMvYm9va2FibGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBMkMsSUFBSSxHQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsR0FBRSxNQUFNLGFBQWEsQ0FBQztBQUNoSCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxhQUFhLENBQUM7OztBQUU3QyxNQUFNLG1CQUFtQixHQUFHLCtCQUErQixDQUFDO0FBQzVELE1BQU0sa0JBQWtCLEdBQUcsMkNBQTJDLENBQUM7QUFDdkUsTUFBTSx5QkFBeUIsR0FBRyxzQ0FBc0MsQ0FBQztBQUN6RSxNQUFNLHdCQUF3QixHQUFHLCtDQUErQyxDQUFDO0FBQ2pGLE1BQU0sdUJBQXVCLEdBQUcsb0NBQW9DLENBQUM7QUFDckUsTUFBTSxzQkFBc0IsR0FBRywyQ0FBMkMsQ0FBQztBQUMzRSxNQUFNLHdCQUF3QixHQUFHLGlEQUFpRCxDQUFDO0FBRW5GLE1BQU0sc0JBQXNCLEdBQUcsa0NBQWtDLENBQUM7QUFDbEUsTUFBTSxxQkFBcUIsR0FBRyw4Q0FBOEMsQ0FBQztBQUM3RSxNQUFNLDRCQUE0QixHQUFHLHlDQUF5QyxDQUFDO0FBQy9FLE1BQU0sMkJBQTJCLEdBQUcsa0RBQWtELENBQUM7QUFDdkYsTUFBTSwwQkFBMEIsR0FBRyx1Q0FBdUMsQ0FBQztBQUMzRSxNQUFNLHlCQUF5QixHQUFHLDhDQUE4QyxDQUFDO0FBQ2pGLE1BQU0sMkJBQTJCLEdBQUcsb0RBQW9ELENBQUM7QUFFekYsTUFBTSxtQkFBbUIsR0FBRywrQkFBK0IsQ0FBQztB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QztJQUNOLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxTQUFpQixFQUFFLFVBQWtCO1FBQzNELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLG1CQUFtQixFQUNuQixJQUFJLENBQUMsWUFBWSxFQUNqQiwyQkFBMkIsRUFDM0IsRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFDLEVBQ3ZCLEVBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBYyxFQUFFLFVBQWtCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLG1CQUFtQixFQUNuQixJQUFJLENBQUMsU0FBUyxFQUNkLHdCQUF3QixFQUN4QixFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsRUFDcEIsRUFBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUFnQixFQUFFLFVBQWtCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLG1CQUFtQixFQUNuQixJQUFJLENBQUMsV0FBVyxFQUNoQiwwQkFBMEIsRUFDMUIsRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLEVBQ3RCLEVBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO3VHQXBrQlUsZUFBZTsyR0FBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBcGlTZXJ2aWNlfSBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7Qm9va2FibGVHcm91cCwgQm9va2FibGVJdGVtLCBCb29rYWJsZVRhZywgUm9sZSx9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge2Jvb2thYmxlR3JvdXBGYWN0b3J5LCBib29rYWJsZUl0ZW1GYWN0b3J5LCBib29rYWJsZVBhcnRGYWN0b3J5LCBib29rYWJsZVRhZ0ZhY3RvcnksfSBmcm9tICcuL2ZhY3Rvcmllcyc7XG5pbXBvcnQge2ludmFsaWRSb2xlRXJyb3J9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDTFVCX0JPT0tBQkxFU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvJztcbmNvbnN0IENMVUJfQk9PS0FCTEVfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvYm9va2FibGVzLzpib29rYWJsZUlkLyc7XG5jb25zdCBDTFVCX0JPT0tBQkxFX0dST1VQU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvZ3JvdXBzLyc7XG5jb25zdCBDTFVCX0JPT0tBQkxFX0dST1VQX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy9ncm91cHMvOmdyb3VwSWQvJztcbmNvbnN0IENMVUJfQk9PS0FCTEVfVEFHU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvdGFncy8nO1xuY29uc3QgQ0xVQl9CT09LQUJMRV9UQUdfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvYm9va2FibGVzL3RhZ3MvOnRhZ0lkLyc7XG5jb25zdCBDTFVCX0JPT0tBQkxFX1BBUlRTX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy86Ym9va2FibGVJZC9wYXJ0cy8nO1xuXG5jb25zdCBTRUNUSU9OX0JPT0tBQkxFU19QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvJztcbmNvbnN0IFNFQ1RJT05fQk9PS0FCTEVfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvYm9va2FibGVzLzpib29rYWJsZUlkLyc7XG5jb25zdCBTRUNUSU9OX0JPT0tBQkxFX0dST1VQU19QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvZ3JvdXBzLyc7XG5jb25zdCBTRUNUSU9OX0JPT0tBQkxFX0dST1VQX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy9ncm91cHMvOmdyb3VwSWQvJztcbmNvbnN0IFNFQ1RJT05fQk9PS0FCTEVfVEFHU19QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvdGFncy8nO1xuY29uc3QgU0VDVElPTl9CT09LQUJMRV9UQUdfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvYm9va2FibGVzL3RhZ3MvOnRhZ0lkLyc7XG5jb25zdCBTRUNUSU9OX0JPT0tBQkxFX1BBUlRTX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy86Ym9va2FibGVJZC9wYXJ0cy8nO1xuXG5jb25zdCBURUFNX0JPT0tBQkxFU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvJztcbmNvbnN0IFRFQU1fQk9PS0FCTEVfR1JPVVBTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy9ncm91cHMvJztcbmNvbnN0IFRFQU1fQk9PS0FCTEVfVEFHU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvdGFncy8nO1xuY29uc3QgVEVBTV9CT09LQUJMRV9QQVJUU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvOmJvb2thYmxlSWQvcGFydHMvJztcblxuY29uc3QgTUVNQkVSX0JPT0tBQkxFU19QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy8nO1xuY29uc3QgTUVNQkVSX0JPT0tBQkxFX1BBVEggPSAnOm1lbWJlcklkL2FjdGl2aXRpZXMvYm9va2FibGVzLzpib29rYWJsZUlkLyc7XG5jb25zdCBNRU1CRVJfQk9PS0FCTEVfR1JPVVBTX1BBVEggPSAnOm1lbWJlcklkL2FjdGl2aXRpZXMvYm9va2FibGVzL2dyb3Vwcy8nO1xuY29uc3QgTUVNQkVSX0JPT0tBQkxFX1RBR1NfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy9ib29rYWJsZXMvdGFncy8nO1xuY29uc3QgTUVNQkVSX0JPT0tBQkxFX1BBUlRTX1BBVEggPSAnOm1lbWJlcklkL2FjdGl2aXRpZXMvYm9va2FibGVzLzpib29rYWJsZUlkL3BhcnRzLyc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQm9va2FibGVTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlKSB7XG4gIH1cblxuICAvLyByZWdpb24gQm9va2FibGUgSXRlbXNcblxuICBnZXRCb29rYWJsZUl0ZW1zKHJvbGU6IFJvbGUsIGl0ZW1JZDogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDbHViQm9va2FibGVJdGVtcyhpdGVtSWQpO1xuICAgICAgY2FzZSBSb2xlLlNlY3Rpb25BZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbkJvb2thYmxlSXRlbXMoaXRlbUlkKTtcbiAgICAgIGNhc2UgUm9sZS5UZWFtQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRlYW1Cb29rYWJsZUl0ZW1zKGl0ZW1JZClcbiAgICAgIGNhc2UgUm9sZS5NZW1iZXJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVtYmVyQm9va2FibGVJdGVtcyhpdGVtSWQpXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBpbnZhbGlkUm9sZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGdldFRlYW1Cb29rYWJsZUl0ZW1zKHRlYW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlSXRlbUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tBQkxFU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlckJvb2thYmxlSXRlbXMobWVtYmVySWQ6IHN0cmluZywgZGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGVuZERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCcsIGhhc19hdmFpbGFibGVfc2Vzc2lvbnM6ICd0cnVlJ307XG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5J10gPSBkYXRlXG4gICAgfVxuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5X19ndGUnXSA9IHN0YXJ0RGF0ZVxuICAgIH1cbiAgICBpZiAoZW5kRGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2x0ZSddID0gZW5kRGF0ZVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2FibGVJdGVtRmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0JPT0tBQkxFU19QQVRILFxuICAgICAgICB7bWVtYmVySWR9LFxuICAgICAgICB7cGFyYW1zOiBwYXJhbXN9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0TWVtYmVyQm9va2FibGVJdGVtc0ZvckRhdGVSYW5nZShtZW1iZXJJZDogc3RyaW5nLCB3ZWVrU3RhcnQ6IHN0cmluZywgd2Vla0VuZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgbGltaXQ6ICdudWxsJyxcbiAgICAgIGhhc19hdmFpbGFibGVfc2Vzc2lvbnM6ICd0cnVlJyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZUl0ZW1GYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQk9PS0FCTEVTX1BBVEgsXG4gICAgICAgIHttZW1iZXJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHBhcmFtc31cbiAgICAgICk7XG4gIH1cblxuICBnZXRDbHViQm9va2FibGVJdGVtcyhjbHViSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZUl0ZW1GYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LQUJMRVNfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRTZWN0aW9uQm9va2FibGVJdGVtcyhzZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZUl0ZW1GYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9CT09LQUJMRVNfUEFUSCxcbiAgICAgICAge3NlY3Rpb25JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRNZW1iZXJCb29rYWJsZUl0ZW0obWVtYmVySWQ6IHN0cmluZywgYm9va2FibGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBib29rYWJsZUl0ZW1GYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQk9PS0FCTEVfUEFUSCxcbiAgICAgICAge21lbWJlcklkLCBib29rYWJsZUlkfSxcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVCb29rYWJsZUl0ZW0ocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIGJvb2thYmxlSXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+KSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHViQm9va2FibGVJdGVtKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYm9va2FibGVJdGVtKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVNlY3Rpb25Cb29rYWJsZUl0ZW0oY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBib29rYWJsZUl0ZW0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDbHViQm9va2FibGVJdGVtKGNsdWJJZDogc3RyaW5nLCBib29rYWJsZUl0ZW06IFBhcnRpYWw8Qm9va2FibGVJdGVtPikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYm9va2FibGVJdGVtRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0FCTEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICBib29rYWJsZUlkOiBib29rYWJsZUl0ZW0uaWQgYXMgc3RyaW5nLFxuICAgICAgICB9LFxuICAgICAgICBib29rYWJsZUl0ZW1cbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVTZWN0aW9uQm9va2FibGVJdGVtKHNlY3Rpb25JZDogc3RyaW5nLCBib29rYWJsZUl0ZW06IFBhcnRpYWw8Qm9va2FibGVJdGVtPikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYm9va2FibGVJdGVtRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQk9PS0FCTEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHNlY3Rpb25JZCxcbiAgICAgICAgICBib29rYWJsZUlkOiBib29rYWJsZUl0ZW0uaWQgYXMgc3RyaW5nLFxuICAgICAgICB9LFxuICAgICAgICBib29rYWJsZUl0ZW1cbiAgICAgICk7XG4gIH1cblxuICBjcmVhdGVCb29rYWJsZUl0ZW0ocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIGJvb2thYmxlSXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+KSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVDbHViQm9va2FibGVJdGVtKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYm9va2FibGVJdGVtKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNlY3Rpb25Cb29rYWJsZUl0ZW0oY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBib29rYWJsZUl0ZW0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVDbHViQm9va2FibGVJdGVtKGNsdWJJZDogc3RyaW5nLCBib29rYWJsZUl0ZW06IFBhcnRpYWw8Qm9va2FibGVJdGVtPikge1xuICAgIGRlbGV0ZSBib29rYWJsZUl0ZW0uaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYm9va2FibGVJdGVtRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0FCTEVTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGJvb2thYmxlSXRlbSxcbiAgICAgICk7XG4gIH1cblxuICBjcmVhdGVTZWN0aW9uQm9va2FibGVJdGVtKHNlY3Rpb25JZDogc3RyaW5nLCBib29rYWJsZUl0ZW06IFBhcnRpYWw8Qm9va2FibGVJdGVtPikge1xuICAgIGRlbGV0ZSBib29rYWJsZUl0ZW0uaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYm9va2FibGVJdGVtRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQk9PS0FCTEVTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGJvb2thYmxlSXRlbVxuICAgICAgKTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBCb29rYWJsZSBHcm91cHNcblxuICBnZXRCb29rYWJsZUdyb3Vwcyhyb2xlOiBSb2xlLCBpdGVtSWQ6IHN0cmluZykge1xuICAgIHN3aXRjaCAocm9sZSkge1xuICAgICAgY2FzZSBSb2xlLkNsdWJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2x1YkJvb2thYmxlR3JvdXBzKGl0ZW1JZCk7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWN0aW9uQm9va2FibGVHcm91cHMoaXRlbUlkKTtcbiAgICAgIGNhc2UgUm9sZS5UZWFtQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRlYW1Cb29rYWJsZUdyb3VwcyhpdGVtSWQpO1xuICAgICAgY2FzZSBSb2xlLk1lbWJlckFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZW1iZXJCb29rYWJsZUdyb3VwcyhpdGVtSWQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICBnZXRDbHViQm9va2FibGVHcm91cHMoY2x1YklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2FibGVHcm91cEZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tBQkxFX0dST1VQU19QQVRILFxuICAgICAgICB7Y2x1YklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25Cb29rYWJsZUdyb3VwcyhzZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZUdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQk9PS0FCTEVfR1JPVVBTX1BBVEgsXG4gICAgICAgIHtzZWN0aW9uSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUJvb2thYmxlR3JvdXBzKHRlYW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlR3JvdXBGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9CT09LQUJMRV9HUk9VUFNfUEFUSCxcbiAgICAgICAge3RlYW1JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRNZW1iZXJCb29rYWJsZUdyb3VwcyhtZW1iZXJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlR3JvdXBGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQk9PS0FCTEVfR1JPVVBTX1BBVEgsXG4gICAgICAgIHttZW1iZXJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVCb29rYWJsZUdyb3VwKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBib29rYWJsZUdyb3VwOiBQYXJ0aWFsPEJvb2thYmxlR3JvdXA+KSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHViQm9va2FibGVHcm91cChjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGJvb2thYmxlR3JvdXApO1xuICAgICAgY2FzZSBSb2xlLlNlY3Rpb25BZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlU2VjdGlvbkJvb2thYmxlR3JvdXAoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBib29rYWJsZUdyb3VwKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IGludmFsaWRSb2xlRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ2x1YkJvb2thYmxlR3JvdXAoY2x1YklkOiBzdHJpbmcsIGJvb2thYmxlR3JvdXA6IFBhcnRpYWw8Qm9va2FibGVHcm91cD4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGJvb2thYmxlR3JvdXBGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LQUJMRV9HUk9VUF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIGdyb3VwSWQ6IGJvb2thYmxlR3JvdXAuaWQgYXMgc3RyaW5nLFxuICAgICAgICB9LFxuICAgICAgICBib29rYWJsZUdyb3VwLFxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVNlY3Rpb25Cb29rYWJsZUdyb3VwKHNlY3Rpb25JZDogc3RyaW5nLCBib29rYWJsZUdyb3VwOiBQYXJ0aWFsPEJvb2thYmxlR3JvdXA+KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBib29rYWJsZUdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQk9PS0FCTEVfR1JPVVBfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHNlY3Rpb25JZCxcbiAgICAgICAgICBncm91cElkOiBib29rYWJsZUdyb3VwLmlkIGFzIHN0cmluZyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9va2FibGVHcm91cFxuICAgICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUJvb2thYmxlR3JvdXAocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIGJvb2thYmxlR3JvdXA6IFBhcnRpYWw8Qm9va2FibGVHcm91cD4pIHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgUm9sZS5DbHViQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNsdWJCb29rYWJsZUdyb3VwKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYm9va2FibGVHcm91cCk7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTZWN0aW9uQm9va2FibGVHcm91cChjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGJvb2thYmxlR3JvdXApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVDbHViQm9va2FibGVHcm91cChjbHViSWQ6IHN0cmluZywgYm9va2FibGVHcm91cDogUGFydGlhbDxCb29rYWJsZUdyb3VwPikge1xuICAgIGRlbGV0ZSBib29rYWJsZUdyb3VwLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGJvb2thYmxlR3JvdXBGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LQUJMRV9HUk9VUFNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgfSxcbiAgICAgICAgYm9va2FibGVHcm91cCxcbiAgICAgICk7XG4gIH1cblxuICBjcmVhdGVTZWN0aW9uQm9va2FibGVHcm91cChzZWN0aW9uSWQ6IHN0cmluZywgYm9va2FibGVHcm91cDogUGFydGlhbDxCb29rYWJsZUdyb3VwPikge1xuICAgIGRlbGV0ZSBib29rYWJsZUdyb3VwLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGJvb2thYmxlR3JvdXBGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9CT09LQUJMRV9HUk9VUFNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHNlY3Rpb25JZCxcbiAgICAgICAgfSxcbiAgICAgICAgYm9va2FibGVHcm91cFxuICAgICAgKTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBCb29rYWJsZSBUYWdzXG5cbiAgZ2V0Qm9va2FibGVUYWdzKHJvbGU6IFJvbGUsIGl0ZW1JZDogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDbHViQm9va2FibGVUYWdzKGl0ZW1JZCk7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWN0aW9uQm9va2FibGVUYWdzKGl0ZW1JZCk7XG4gICAgICBjYXNlIFJvbGUuVGVhbUFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUZWFtQm9va2FibGVUYWdzKGl0ZW1JZCk7XG4gICAgICBjYXNlIFJvbGUuTWVtYmVyQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldE1lbWJlckJvb2thYmxlVGFncyhpdGVtSWQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICBnZXRDbHViQm9va2FibGVUYWdzKGNsdWJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0FCTEVfVEFHU19QQVRILFxuICAgICAgICB7Y2x1YklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25Cb29rYWJsZVRhZ3Moc2VjdGlvbklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2FibGVUYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9CT09LQUJMRV9UQUdTX1BBVEgsXG4gICAgICAgIHtzZWN0aW9uSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUJvb2thYmxlVGFncyh0ZWFtSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZVRhZ0ZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tBQkxFX1RBR1NfUEFUSCxcbiAgICAgICAge3RlYW1JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRNZW1iZXJCb29rYWJsZVRhZ3MobWVtYmVySWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZVRhZ0ZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9CT09LQUJMRV9UQUdTX1BBVEgsXG4gICAgICAgIHttZW1iZXJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBjcmVhdGVCb29rYWJsZVRhZyhyb2xlOiBSb2xlLCBpdGVtSWQ6IHN0cmluZywgdGFnOiBQYXJ0aWFsPEJvb2thYmxlVGFnPikge1xuICAgIHN3aXRjaCAocm9sZSkge1xuICAgICAgY2FzZSBSb2xlLkNsdWJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2x1YkJvb2thYmxlVGFnKGl0ZW1JZCwgdGFnKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNlY3Rpb25Cb29rYWJsZVRhZyhpdGVtSWQsIHRhZyk7XG4gICAgICBjYXNlIFJvbGUuVGVhbUFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUZWFtQm9va2FibGVUYWcoaXRlbUlkLCB0YWcpO1xuICAgICAgY2FzZSBSb2xlLk1lbWJlckFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNZW1iZXJCb29rYWJsZVRhZyhpdGVtSWQsIHRhZyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBpbnZhbGlkUm9sZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUNsdWJCb29rYWJsZVRhZyhjbHViSWQ6IHN0cmluZywgdGFnOiBQYXJ0aWFsPEJvb2thYmxlVGFnPikge1xuICAgIGRlbGV0ZSB0YWcuaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYm9va2FibGVUYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LQUJMRV9UQUdTX1BBVEgsXG4gICAgICAgIHtjbHViSWR9LFxuICAgICAgICB0YWcsXG4gICAgICApXG4gIH1cblxuICBjcmVhdGVTZWN0aW9uQm9va2FibGVUYWcoc2VjdGlvbklkOiBzdHJpbmcsIHRhZzogUGFydGlhbDxCb29rYWJsZVRhZz4pIHtcbiAgICBkZWxldGUgdGFnLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGJvb2thYmxlVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQk9PS0FCTEVfVEFHU19QQVRILFxuICAgICAgICB7c2VjdGlvbklkfSxcbiAgICAgICAgdGFnLFxuICAgICAgKVxuICB9XG5cbiAgY3JlYXRlVGVhbUJvb2thYmxlVGFnKHRlYW1JZDogc3RyaW5nLCB0YWc6IFBhcnRpYWw8Qm9va2FibGVUYWc+KSB7XG4gICAgZGVsZXRlIHRhZy5pZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBib29rYWJsZVRhZ0ZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tBQkxFX1RBR1NfUEFUSCxcbiAgICAgICAge3RlYW1JZH0sXG4gICAgICAgIHRhZyxcbiAgICAgIClcbiAgfVxuXG4gIGNyZWF0ZU1lbWJlckJvb2thYmxlVGFnKG1lbWJlcklkOiBzdHJpbmcsIHRhZzogUGFydGlhbDxCb29rYWJsZVRhZz4pIHtcbiAgICBkZWxldGUgdGFnLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGJvb2thYmxlVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0JPT0tBQkxFX1RBR1NfUEFUSCxcbiAgICAgICAge21lbWJlcklkfSxcbiAgICAgICAgdGFnLFxuICAgICAgKVxuICB9XG5cbiAgdXBkYXRlQm9va2FibGVUYWcocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIHRhZzogUGFydGlhbDxCb29rYWJsZVRhZz4pIHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgUm9sZS5DbHViQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUNsdWJCb29rYWJsZVRhZyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZyk7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVTZWN0aW9uQm9va2FibGVUYWcoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWcpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDbHViQm9va2FibGVUYWcoY2x1YklkOiBzdHJpbmcsIHRhZzogUGFydGlhbDxCb29rYWJsZVRhZz4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGJvb2thYmxlVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0FCTEVfVEFHX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgdGFnSWQ6IHRhZy5pZCBhcyBzdHJpbmcsXG4gICAgICAgIH0sXG4gICAgICAgIHRhZyxcbiAgICAgIClcbiAgfVxuXG4gIHVwZGF0ZVNlY3Rpb25Cb29rYWJsZVRhZyhzZWN0aW9uSWQ6IHN0cmluZywgdGFnOiBQYXJ0aWFsPEJvb2thYmxlVGFnPikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYm9va2FibGVUYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9CT09LQUJMRV9UQUdfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHNlY3Rpb25JZCxcbiAgICAgICAgICB0YWdJZDogdGFnLmlkIGFzIHN0cmluZyxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnLFxuICAgICAgKVxuICB9XG5cbiAgZGVsZXRlQm9va2FibGVUYWcocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIHRhZzogQm9va2FibGVUYWcpIHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgUm9sZS5DbHViQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmRlbGV0ZUNsdWJCb29rYWJsZVRhZyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZyk7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5kZWxldGVTZWN0aW9uQm9va2FibGVUYWcoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWcpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICBkZWxldGVDbHViQm9va2FibGVUYWcoY2x1YklkOiBzdHJpbmcsIHRhZzogQm9va2FibGVUYWcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tBQkxFX1RBR19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIHRhZ0lkOiB0YWcuaWQsXG4gICAgICAgIH0sXG4gICAgICApXG4gIH1cblxuICBkZWxldGVTZWN0aW9uQm9va2FibGVUYWcoc2VjdGlvbklkOiBzdHJpbmcsIHRhZzogQm9va2FibGVUYWcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0JPT0tBQkxFX1RBR19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkLFxuICAgICAgICAgIHRhZ0lkOiB0YWcuaWQsXG4gICAgICAgIH0sXG4gICAgICApXG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gQm9va2FibGUgUGFydHNcblxuICBnZXRCb29rYWJsZVBhcnRzKHJvbGU6IFJvbGUsIGl0ZW1JZDogc3RyaW5nLCBib29rYWJsZUlkOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgUm9sZS5DbHViQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldENsdWJCb29rYWJsZVBhcnRzKGl0ZW1JZCwgYm9va2FibGVJZCk7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWN0aW9uQm9va2FibGVQYXJ0cyhpdGVtSWQsIGJvb2thYmxlSWQpO1xuICAgICAgY2FzZSBSb2xlLlRlYW1BZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUJvb2thYmxlUGFydHMoaXRlbUlkLCBib29rYWJsZUlkKTtcbiAgICAgIGNhc2UgUm9sZS5NZW1iZXJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVtYmVyQm9va2FibGVQYXJ0cyhpdGVtSWQsIGJvb2thYmxlSWQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICBnZXRDbHViQm9va2FibGVQYXJ0cyhjbHViSWQ6IHN0cmluZywgYm9va2FibGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlUGFydEZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tBQkxFX1BBUlRTX1BBVEgsXG4gICAgICAgIHtjbHViSWQsIGJvb2thYmxlSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0U2VjdGlvbkJvb2thYmxlUGFydHMoc2VjdGlvbklkOiBzdHJpbmcsIGJvb2thYmxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZVBhcnRGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9CT09LQUJMRV9QQVJUU19QQVRILFxuICAgICAgICB7c2VjdGlvbklkLCBib29rYWJsZUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFRlYW1Cb29rYWJsZVBhcnRzKHRlYW1JZDogc3RyaW5nLCBib29rYWJsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2FibGVQYXJ0RmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQk9PS0FCTEVfUEFSVFNfUEFUSCxcbiAgICAgICAge3RlYW1JZCwgYm9va2FibGVJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRNZW1iZXJCb29rYWJsZVBhcnRzKG1lbWJlcklkOiBzdHJpbmcsIGJvb2thYmxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZVBhcnRGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQk9PS0FCTEVfUEFSVFNfUEFUSCxcbiAgICAgICAge21lbWJlcklkLCBib29rYWJsZUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2FibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc2VydmljZXMvYm9va2FibGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBNEIsSUFBSSxHQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsR0FBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxhQUFhLENBQUM7OztBQUU3QyxNQUFNLG1CQUFtQixHQUFHLCtCQUErQixDQUFDO0FBQzVELE1BQU0sa0JBQWtCLEdBQUcsMkNBQTJDLENBQUM7QUFDdkUsTUFBTSx1QkFBdUIsR0FBRyxvQ0FBb0MsQ0FBQztBQUNyRSxNQUFNLHNCQUFzQixHQUFHLDJDQUEyQyxDQUFDO0FBQzNFLE1BQU0sd0JBQXdCLEdBQUcsaURBQWlELENBQUM7QUFFbkYsTUFBTSxzQkFBc0IsR0FBRyxrQ0FBa0MsQ0FBQztBQUNsRSxNQUFNLHFCQUFxQixHQUFHLDhDQUE4QyxDQUFDO0FBQzdFLE1BQU0sMEJBQTBCLEdBQUcsdUNBQXVDLENBQUM7QUFDM0UsTUFBTSx5QkFBeUIsR0FBRyw4Q0FBOEMsQ0FBQztBQUNqRixNQUFNLDJCQUEyQixHQUFHLG9EQUFvRCxDQUFDO0FBRXpGLE1BQU0sbUJBQW1CLEdBQUcsK0JBQStCLENBQUM7QUFDNUQsTUFBTSx1QkFBdUIsR0FBRyxvQ0FBb0MsQ0FBQztBQUNyRSxNQUFNLHdCQUF3QixHQUFHLGlEQUFpRCxDQUFDO0FBRW5GLE1BQU0scUJBQXFCLEdBQUcsaUNBQWlDLENBQUM7QUFDaEUsTUFBTSxvQkFBb0IsR0FBRyw2Q0FBNkMsQ0FBQztBQUMzRSxNQUFNLHlC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QiwyQkFBMkIsRUFDM0IsRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFDLEVBQ3ZCLEVBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBYyxFQUFFLFVBQWtCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLG1CQUFtQixFQUNuQixJQUFJLENBQUMsU0FBUyxFQUNkLHdCQUF3QixFQUN4QixFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsRUFDcEIsRUFBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUFnQixFQUFFLFVBQWtCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLG1CQUFtQixFQUNuQixJQUFJLENBQUMsV0FBVyxFQUNoQiwwQkFBMEIsRUFDMUIsRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLEVBQ3RCLEVBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO3VHQXZiVSxlQUFlOzJHQUFmLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FwaVNlcnZpY2V9IGZyb20gJy4vYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHtCb29rYWJsZUl0ZW0sIEJvb2thYmxlVGFnLCBSb2xlLH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7Ym9va2FibGVJdGVtRmFjdG9yeSwgYm9va2FibGVQYXJ0RmFjdG9yeSwgYm9va2FibGVUYWdGYWN0b3J5LH0gZnJvbSAnLi9mYWN0b3JpZXMnO1xuaW1wb3J0IHtpbnZhbGlkUm9sZUVycm9yfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ0xVQl9CT09LQUJMRVNfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvYm9va2FibGVzLyc7XG5jb25zdCBDTFVCX0JPT0tBQkxFX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy86Ym9va2FibGVJZC8nO1xuY29uc3QgQ0xVQl9CT09LQUJMRV9UQUdTX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy90YWdzLyc7XG5jb25zdCBDTFVCX0JPT0tBQkxFX1RBR19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvdGFncy86dGFnSWQvJztcbmNvbnN0IENMVUJfQk9PS0FCTEVfUEFSVFNfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvYm9va2FibGVzLzpib29rYWJsZUlkL3BhcnRzLyc7XG5cbmNvbnN0IFNFQ1RJT05fQk9PS0FCTEVTX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy8nO1xuY29uc3QgU0VDVElPTl9CT09LQUJMRV9QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvOmJvb2thYmxlSWQvJztcbmNvbnN0IFNFQ1RJT05fQk9PS0FCTEVfVEFHU19QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvdGFncy8nO1xuY29uc3QgU0VDVElPTl9CT09LQUJMRV9UQUdfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvYm9va2FibGVzL3RhZ3MvOnRhZ0lkLyc7XG5jb25zdCBTRUNUSU9OX0JPT0tBQkxFX1BBUlRTX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy86Ym9va2FibGVJZC9wYXJ0cy8nO1xuXG5jb25zdCBURUFNX0JPT0tBQkxFU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvJztcbmNvbnN0IFRFQU1fQk9PS0FCTEVfVEFHU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvdGFncy8nO1xuY29uc3QgVEVBTV9CT09LQUJMRV9QQVJUU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9ib29rYWJsZXMvOmJvb2thYmxlSWQvcGFydHMvJztcblxuY29uc3QgTUVNQkVSX0JPT0tBQkxFU19QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy8nO1xuY29uc3QgTUVNQkVSX0JPT0tBQkxFX1BBVEggPSAnOm1lbWJlcklkL2FjdGl2aXRpZXMvYm9va2FibGVzLzpib29rYWJsZUlkLyc7XG5jb25zdCBNRU1CRVJfQk9PS0FCTEVfVEFHU19QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzL2Jvb2thYmxlcy90YWdzLyc7XG5jb25zdCBNRU1CRVJfQk9PS0FCTEVfUEFSVFNfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy9ib29rYWJsZXMvOmJvb2thYmxlSWQvcGFydHMvJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCb29rYWJsZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UpIHtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBCb29rYWJsZSBJdGVtc1xuXG4gIGdldEJvb2thYmxlSXRlbXMocm9sZTogUm9sZSwgaXRlbUlkOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgUm9sZS5DbHViQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldENsdWJCb29rYWJsZUl0ZW1zKGl0ZW1JZCk7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWN0aW9uQm9va2FibGVJdGVtcyhpdGVtSWQpO1xuICAgICAgY2FzZSBSb2xlLlRlYW1BZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUJvb2thYmxlSXRlbXMoaXRlbUlkKVxuICAgICAgY2FzZSBSb2xlLk1lbWJlckFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZW1iZXJCb29rYWJsZUl0ZW1zKGl0ZW1JZClcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IGludmFsaWRSb2xlRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGVhbUJvb2thYmxlSXRlbXModGVhbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2FibGVJdGVtRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQk9PS0FCTEVTX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0TWVtYmVyQm9va2FibGVJdGVtcyhtZW1iZXJJZDogc3RyaW5nLCBkYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJywgaGFzX2F2YWlsYWJsZV9zZXNzaW9uczogJ3RydWUnfTtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXknXSA9IGRhdGVcbiAgICB9XG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2d0ZSddID0gc3RhcnREYXRlXG4gICAgfVxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fbHRlJ10gPSBlbmREYXRlXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZUl0ZW1GYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQk9PS0FCTEVTX1BBVEgsXG4gICAgICAgIHttZW1iZXJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHBhcmFtc31cbiAgICAgICk7XG4gIH1cblxuICBnZXRNZW1iZXJCb29rYWJsZUl0ZW1zRm9yRGF0ZVJhbmdlKG1lbWJlcklkOiBzdHJpbmcsIHdlZWtTdGFydDogc3RyaW5nLCB3ZWVrRW5kOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICBsaW1pdDogJ251bGwnLFxuICAgICAgaGFzX2F2YWlsYWJsZV9zZXNzaW9uczogJ3RydWUnLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlSXRlbUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9CT09LQUJMRVNfUEFUSCxcbiAgICAgICAge21lbWJlcklkfSxcbiAgICAgICAge3BhcmFtczogcGFyYW1zfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldENsdWJCb29rYWJsZUl0ZW1zKGNsdWJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlSXRlbUZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tBQkxFU19QQVRILFxuICAgICAgICB7Y2x1YklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25Cb29rYWJsZUl0ZW1zKHNlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlSXRlbUZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0JPT0tBQkxFU19QQVRILFxuICAgICAgICB7c2VjdGlvbklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlckJvb2thYmxlSXRlbShtZW1iZXJJZDogc3RyaW5nLCBib29rYWJsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGJvb2thYmxlSXRlbUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9CT09LQUJMRV9QQVRILFxuICAgICAgICB7bWVtYmVySWQsIGJvb2thYmxlSWR9LFxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUJvb2thYmxlSXRlbShyb2xlOiBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZywgYm9va2FibGVJdGVtOiBQYXJ0aWFsPEJvb2thYmxlSXRlbT4pIHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgUm9sZS5DbHViQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUNsdWJCb29rYWJsZUl0ZW0oY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBib29rYWJsZUl0ZW0pO1xuICAgICAgY2FzZSBSb2xlLlNlY3Rpb25BZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlU2VjdGlvbkJvb2thYmxlSXRlbShjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGJvb2thYmxlSXRlbSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBpbnZhbGlkUm9sZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNsdWJCb29rYWJsZUl0ZW0oY2x1YklkOiBzdHJpbmcsIGJvb2thYmxlSXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBib29rYWJsZUl0ZW1GYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LQUJMRV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIGJvb2thYmxlSWQ6IGJvb2thYmxlSXRlbS5pZCBhcyBzdHJpbmcsXG4gICAgICAgIH0sXG4gICAgICAgIGJvb2thYmxlSXRlbVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVNlY3Rpb25Cb29rYWJsZUl0ZW0oc2VjdGlvbklkOiBzdHJpbmcsIGJvb2thYmxlSXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBib29rYWJsZUl0ZW1GYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9CT09LQUJMRV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkLFxuICAgICAgICAgIGJvb2thYmxlSWQ6IGJvb2thYmxlSXRlbS5pZCBhcyBzdHJpbmcsXG4gICAgICAgIH0sXG4gICAgICAgIGJvb2thYmxlSXRlbVxuICAgICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUJvb2thYmxlSXRlbShyb2xlOiBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZywgYm9va2FibGVJdGVtOiBQYXJ0aWFsPEJvb2thYmxlSXRlbT4pIHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgUm9sZS5DbHViQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNsdWJCb29rYWJsZUl0ZW0oY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBib29rYWJsZUl0ZW0pO1xuICAgICAgY2FzZSBSb2xlLlNlY3Rpb25BZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2VjdGlvbkJvb2thYmxlSXRlbShjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGJvb2thYmxlSXRlbSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBpbnZhbGlkUm9sZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUNsdWJCb29rYWJsZUl0ZW0oY2x1YklkOiBzdHJpbmcsIGJvb2thYmxlSXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+KSB7XG4gICAgZGVsZXRlIGJvb2thYmxlSXRlbS5pZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBib29rYWJsZUl0ZW1GYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LQUJMRVNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgfSxcbiAgICAgICAgYm9va2FibGVJdGVtLFxuICAgICAgKTtcbiAgfVxuXG4gIGNyZWF0ZVNlY3Rpb25Cb29rYWJsZUl0ZW0oc2VjdGlvbklkOiBzdHJpbmcsIGJvb2thYmxlSXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+KSB7XG4gICAgZGVsZXRlIGJvb2thYmxlSXRlbS5pZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBib29rYWJsZUl0ZW1GYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9CT09LQUJMRVNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHNlY3Rpb25JZCxcbiAgICAgICAgfSxcbiAgICAgICAgYm9va2FibGVJdGVtXG4gICAgICApO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIEJvb2thYmxlIFRhZ3NcblxuICBnZXRCb29rYWJsZVRhZ3Mocm9sZTogUm9sZSwgaXRlbUlkOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgUm9sZS5DbHViQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldENsdWJCb29rYWJsZVRhZ3MoaXRlbUlkKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNlY3Rpb25Cb29rYWJsZVRhZ3MoaXRlbUlkKTtcbiAgICAgIGNhc2UgUm9sZS5UZWFtQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRlYW1Cb29rYWJsZVRhZ3MoaXRlbUlkKTtcbiAgICAgIGNhc2UgUm9sZS5NZW1iZXJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVtYmVyQm9va2FibGVUYWdzKGl0ZW1JZCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBpbnZhbGlkUm9sZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGdldENsdWJCb29rYWJsZVRhZ3MoY2x1YklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2FibGVUYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LQUJMRV9UQUdTX1BBVEgsXG4gICAgICAgIHtjbHViSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0U2VjdGlvbkJvb2thYmxlVGFncyhzZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZVRhZ0ZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0JPT0tBQkxFX1RBR1NfUEFUSCxcbiAgICAgICAge3NlY3Rpb25JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRUZWFtQm9va2FibGVUYWdzKHRlYW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQk9PS0FCTEVfVEFHU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlckJvb2thYmxlVGFncyhtZW1iZXJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0JPT0tBQkxFX1RBR1NfUEFUSCxcbiAgICAgICAge21lbWJlcklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUJvb2thYmxlVGFnKHJvbGU6IFJvbGUsIGl0ZW1JZDogc3RyaW5nLCB0YWc6IFBhcnRpYWw8Qm9va2FibGVUYWc+KSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVDbHViQm9va2FibGVUYWcoaXRlbUlkLCB0YWcpO1xuICAgICAgY2FzZSBSb2xlLlNlY3Rpb25BZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2VjdGlvbkJvb2thYmxlVGFnKGl0ZW1JZCwgdGFnKTtcbiAgICAgIGNhc2UgUm9sZS5UZWFtQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRlYW1Cb29rYWJsZVRhZyhpdGVtSWQsIHRhZyk7XG4gICAgICBjYXNlIFJvbGUuTWVtYmVyQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU1lbWJlckJvb2thYmxlVGFnKGl0ZW1JZCwgdGFnKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IGludmFsaWRSb2xlRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQ2x1YkJvb2thYmxlVGFnKGNsdWJJZDogc3RyaW5nLCB0YWc6IFBhcnRpYWw8Qm9va2FibGVUYWc+KSB7XG4gICAgZGVsZXRlIHRhZy5pZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBib29rYWJsZVRhZ0ZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tBQkxFX1RBR1NfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHRhZyxcbiAgICAgIClcbiAgfVxuXG4gIGNyZWF0ZVNlY3Rpb25Cb29rYWJsZVRhZyhzZWN0aW9uSWQ6IHN0cmluZywgdGFnOiBQYXJ0aWFsPEJvb2thYmxlVGFnPikge1xuICAgIGRlbGV0ZSB0YWcuaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYm9va2FibGVUYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9CT09LQUJMRV9UQUdTX1BBVEgsXG4gICAgICAgIHtzZWN0aW9uSWR9LFxuICAgICAgICB0YWcsXG4gICAgICApXG4gIH1cblxuICBjcmVhdGVUZWFtQm9va2FibGVUYWcodGVhbUlkOiBzdHJpbmcsIHRhZzogUGFydGlhbDxCb29rYWJsZVRhZz4pIHtcbiAgICBkZWxldGUgdGFnLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGJvb2thYmxlVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQk9PS0FCTEVfVEFHU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAgdGFnLFxuICAgICAgKVxuICB9XG5cbiAgY3JlYXRlTWVtYmVyQm9va2FibGVUYWcobWVtYmVySWQ6IHN0cmluZywgdGFnOiBQYXJ0aWFsPEJvb2thYmxlVGFnPikge1xuICAgIGRlbGV0ZSB0YWcuaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYm9va2FibGVUYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQk9PS0FCTEVfVEFHU19QQVRILFxuICAgICAgICB7bWVtYmVySWR9LFxuICAgICAgICB0YWcsXG4gICAgICApXG4gIH1cblxuICB1cGRhdGVCb29rYWJsZVRhZyhyb2xlOiBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZywgdGFnOiBQYXJ0aWFsPEJvb2thYmxlVGFnPikge1xuICAgIHN3aXRjaCAocm9sZSkge1xuICAgICAgY2FzZSBSb2xlLkNsdWJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQ2x1YkJvb2thYmxlVGFnKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVNlY3Rpb25Cb29rYWJsZVRhZyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBpbnZhbGlkUm9sZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNsdWJCb29rYWJsZVRhZyhjbHViSWQ6IHN0cmluZywgdGFnOiBQYXJ0aWFsPEJvb2thYmxlVGFnPikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYm9va2FibGVUYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LQUJMRV9UQUdfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICB0YWdJZDogdGFnLmlkIGFzIHN0cmluZyxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnLFxuICAgICAgKVxuICB9XG5cbiAgdXBkYXRlU2VjdGlvbkJvb2thYmxlVGFnKHNlY3Rpb25JZDogc3RyaW5nLCB0YWc6IFBhcnRpYWw8Qm9va2FibGVUYWc+KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBib29rYWJsZVRhZ0ZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0JPT0tBQkxFX1RBR19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkLFxuICAgICAgICAgIHRhZ0lkOiB0YWcuaWQgYXMgc3RyaW5nLFxuICAgICAgICB9LFxuICAgICAgICB0YWcsXG4gICAgICApXG4gIH1cblxuICBkZWxldGVCb29rYWJsZVRhZyhyb2xlOiBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZywgdGFnOiBCb29rYWJsZVRhZykge1xuICAgIHN3aXRjaCAocm9sZSkge1xuICAgICAgY2FzZSBSb2xlLkNsdWJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlQ2x1YkJvb2thYmxlVGFnKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmRlbGV0ZVNlY3Rpb25Cb29rYWJsZVRhZyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBpbnZhbGlkUm9sZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUNsdWJCb29rYWJsZVRhZyhjbHViSWQ6IHN0cmluZywgdGFnOiBCb29rYWJsZVRhZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0FCTEVfVEFHX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgdGFnSWQ6IHRhZy5pZCxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgfVxuXG4gIGRlbGV0ZVNlY3Rpb25Cb29rYWJsZVRhZyhzZWN0aW9uSWQ6IHN0cmluZywgdGFnOiBCb29rYWJsZVRhZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQk9PS0FCTEVfVEFHX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgICAgdGFnSWQ6IHRhZy5pZCxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBCb29rYWJsZSBQYXJ0c1xuXG4gIGdldEJvb2thYmxlUGFydHMocm9sZTogUm9sZSwgaXRlbUlkOiBzdHJpbmcsIGJvb2thYmxlSWQ6IHN0cmluZykge1xuICAgIHN3aXRjaCAocm9sZSkge1xuICAgICAgY2FzZSBSb2xlLkNsdWJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2x1YkJvb2thYmxlUGFydHMoaXRlbUlkLCBib29rYWJsZUlkKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNlY3Rpb25Cb29rYWJsZVBhcnRzKGl0ZW1JZCwgYm9va2FibGVJZCk7XG4gICAgICBjYXNlIFJvbGUuVGVhbUFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUZWFtQm9va2FibGVQYXJ0cyhpdGVtSWQsIGJvb2thYmxlSWQpO1xuICAgICAgY2FzZSBSb2xlLk1lbWJlckFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZW1iZXJCb29rYWJsZVBhcnRzKGl0ZW1JZCwgYm9va2FibGVJZCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBpbnZhbGlkUm9sZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGdldENsdWJCb29rYWJsZVBhcnRzKGNsdWJJZDogc3RyaW5nLCBib29rYWJsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2FibGVQYXJ0RmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0FCTEVfUEFSVFNfUEFUSCxcbiAgICAgICAge2NsdWJJZCwgYm9va2FibGVJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRTZWN0aW9uQm9va2FibGVQYXJ0cyhzZWN0aW9uSWQ6IHN0cmluZywgYm9va2FibGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlUGFydEZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0JPT0tBQkxFX1BBUlRTX1BBVEgsXG4gICAgICAgIHtzZWN0aW9uSWQsIGJvb2thYmxlSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUJvb2thYmxlUGFydHModGVhbUlkOiBzdHJpbmcsIGJvb2thYmxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29rYWJsZVBhcnRGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9CT09LQUJMRV9QQVJUU19QQVRILFxuICAgICAgICB7dGVhbUlkLCBib29rYWJsZUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlckJvb2thYmxlUGFydHMobWVtYmVySWQ6IHN0cmluZywgYm9va2FibGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2thYmxlUGFydEZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9CT09LQUJMRV9QQVJUU19QQVRILFxuICAgICAgICB7bWVtYmVySWQsIGJvb2thYmxlSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BookableItem } from '../../models';
|
|
2
2
|
import { bookablePartFactory } from "./bookable-part-factory";
|
|
3
3
|
import { bookableTagFactory } from "./bookable-tag-factory";
|
|
4
|
-
export const bookableItemFactory = (apiBookableItem) => new BookableItem(apiBookableItem.id, apiBookableItem.club_id, apiBookableItem.section_id, apiBookableItem.
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
export const bookableItemFactory = (apiBookableItem) => new BookableItem(apiBookableItem.id, apiBookableItem.club_id, apiBookableItem.section_id, apiBookableItem.active, apiBookableItem.name, apiBookableItem.location_id, apiBookableItem.description, apiBookableItem.tags && apiBookableItem.tags.length > 0 ? apiBookableItem.tags.map((apiBookableTag) => bookableTagFactory(apiBookableTag)) : [], apiBookableItem.parts && apiBookableItem.parts.length > 0 ? apiBookableItem.parts.map((apiBookablePart) => bookablePartFactory(apiBookablePart)) : [], apiBookableItem.next_available_datetime);
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2FibGUtaXRlbS1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zZXJ2aWNlcy9mYWN0b3JpZXMvYm9va2FibGUtaXRlbS1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxlQUFnQyxFQUFFLEVBQUUsQ0FDdEUsSUFBSSxZQUFZLENBQ2QsZUFBZSxDQUFDLEVBQUUsRUFDbEIsZUFBZSxDQUFDLE9BQU8sRUFDdkIsZUFBZSxDQUFDLFVBQVUsRUFDMUIsZUFBZSxDQUFDLE1BQU0sRUFDdEIsZUFBZSxDQUFDLElBQUksRUFDcEIsZUFBZSxDQUFDLFdBQVcsRUFDM0IsZUFBZSxDQUFDLFdBQVcsRUFDM0IsZUFBZSxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNoRixDQUFDLGNBQThCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUN2RSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ04sZUFBZSxDQUFDLEtBQUssSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNuRixDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUMzRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ04sZUFBZSxDQUFDLHVCQUF1QixDQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcGlCb29rYWJsZUl0ZW0sIEFwaUJvb2thYmxlUGFydCwgQXBpQm9va2FibGVUYWd9IGZyb20gJy4uLy4uL2FwaS1tb2RlbHMnO1xuaW1wb3J0IHtCb29rYWJsZUl0ZW19IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge2Jvb2thYmxlUGFydEZhY3Rvcnl9IGZyb20gXCIuL2Jvb2thYmxlLXBhcnQtZmFjdG9yeVwiO1xuaW1wb3J0IHtib29rYWJsZVRhZ0ZhY3Rvcnl9IGZyb20gXCIuL2Jvb2thYmxlLXRhZy1mYWN0b3J5XCI7XG5cbmV4cG9ydCBjb25zdCBib29rYWJsZUl0ZW1GYWN0b3J5ID0gKGFwaUJvb2thYmxlSXRlbTogQXBpQm9va2FibGVJdGVtKSA9PlxuICBuZXcgQm9va2FibGVJdGVtKFxuICAgIGFwaUJvb2thYmxlSXRlbS5pZCxcbiAgICBhcGlCb29rYWJsZUl0ZW0uY2x1Yl9pZCxcbiAgICBhcGlCb29rYWJsZUl0ZW0uc2VjdGlvbl9pZCxcbiAgICBhcGlCb29rYWJsZUl0ZW0uYWN0aXZlLFxuICAgIGFwaUJvb2thYmxlSXRlbS5uYW1lLFxuICAgIGFwaUJvb2thYmxlSXRlbS5sb2NhdGlvbl9pZCxcbiAgICBhcGlCb29rYWJsZUl0ZW0uZGVzY3JpcHRpb24sXG4gICAgYXBpQm9va2FibGVJdGVtLnRhZ3MgJiYgYXBpQm9va2FibGVJdGVtLnRhZ3MubGVuZ3RoID4gMCA/IGFwaUJvb2thYmxlSXRlbS50YWdzLm1hcChcbiAgICAgIChhcGlCb29rYWJsZVRhZzogQXBpQm9va2FibGVUYWcpID0+IGJvb2thYmxlVGFnRmFjdG9yeShhcGlCb29rYWJsZVRhZylcbiAgICApIDogW10sXG4gICAgYXBpQm9va2FibGVJdGVtLnBhcnRzICYmIGFwaUJvb2thYmxlSXRlbS5wYXJ0cy5sZW5ndGggPiAwID8gYXBpQm9va2FibGVJdGVtLnBhcnRzLm1hcChcbiAgICAgIChhcGlCb29rYWJsZVBhcnQ6IEFwaUJvb2thYmxlUGFydCkgPT4gYm9va2FibGVQYXJ0RmFjdG9yeShhcGlCb29rYWJsZVBhcnQpXG4gICAgKSA6IFtdLFxuICAgIGFwaUJvb2thYmxlSXRlbS5uZXh0X2F2YWlsYWJsZV9kYXRldGltZSxcbiAgKTtcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BookingCalendar } from "../../models";
|
|
2
2
|
import { searchTeamFactory } from "./search-team-factory";
|
|
3
|
-
import {
|
|
4
|
-
export const bookingCalendarFactory = (apiBookingCalendar) => new BookingCalendar(apiBookingCalendar.id, apiBookingCalendar.club_id, apiBookingCalendar.section_id, apiBookingCalendar.team_id, apiBookingCalendar.club_name, apiBookingCalendar.name, apiBookingCalendar.section_name, apiBookingCalendar.team_name, apiBookingCalendar.status, apiBookingCalendar.max_application_number, apiBookingCalendar.allow_team_export, apiBookingCalendar.allow_repeated_bookings, apiBookingCalendar.is_default, apiBookingCalendar.payment_limit_in_minutes, apiBookingCalendar.price_per_slot, apiBookingCalendar.send_team_application_created, apiBookingCalendar.send_team_application_updated, apiBookingCalendar.send_admin_team_booking_created, apiBookingCalendar.send_team_booking_created, apiBookingCalendar.send_team_booking_deleted, apiBookingCalendar.send_member_booking_created, apiBookingCalendar.send_member_booking_deleted, apiBookingCalendar.available_for_teams && apiBookingCalendar.available_for_teams.length ? apiBookingCalendar.available_for_teams.map((apiSearchTeam) => searchTeamFactory(apiSearchTeam)) : [], apiBookingCalendar.
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
import { bookableItemFactory } from "./bookable-item-factory";
|
|
4
|
+
export const bookingCalendarFactory = (apiBookingCalendar) => new BookingCalendar(apiBookingCalendar.id, apiBookingCalendar.club_id, apiBookingCalendar.section_id, apiBookingCalendar.team_id, apiBookingCalendar.club_name, apiBookingCalendar.name, apiBookingCalendar.section_name, apiBookingCalendar.team_name, apiBookingCalendar.status, apiBookingCalendar.max_application_number, apiBookingCalendar.allow_team_export, apiBookingCalendar.allow_repeated_bookings, apiBookingCalendar.is_default, apiBookingCalendar.payment_limit_in_minutes, apiBookingCalendar.price_per_slot, apiBookingCalendar.send_team_application_created, apiBookingCalendar.send_team_application_updated, apiBookingCalendar.send_admin_team_booking_created, apiBookingCalendar.send_team_booking_created, apiBookingCalendar.send_team_booking_deleted, apiBookingCalendar.send_member_booking_created, apiBookingCalendar.send_member_booking_deleted, apiBookingCalendar.available_for_teams && apiBookingCalendar.available_for_teams.length ? apiBookingCalendar.available_for_teams.map((apiSearchTeam) => searchTeamFactory(apiSearchTeam)) : [], apiBookingCalendar.bookable_items && apiBookingCalendar.bookable_items.length ? apiBookingCalendar.bookable_items.map((apiBookableItem) => bookableItemFactory(apiBookableItem)) : [], apiBookingCalendar.type, apiBookingCalendar.type_display, apiBookingCalendar.member_fee_id, apiBookingCalendar.service_fee_id, apiBookingCalendar.info_email, apiBookingCalendar.saved_search_id);
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy1jYWxlbmRhci1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zZXJ2aWNlcy9mYWN0b3JpZXMvYm9va2luZy1jYWxlbmRhci1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFNUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxrQkFBc0MsRUFBRSxFQUFFLENBQy9FLElBQUksZUFBZSxDQUNqQixrQkFBa0IsQ0FBQyxFQUFFLEVBQ3JCLGtCQUFrQixDQUFDLE9BQU8sRUFDMUIsa0JBQWtCLENBQUMsVUFBVSxFQUM3QixrQkFBa0IsQ0FBQyxPQUFPLEVBQzFCLGtCQUFrQixDQUFDLFNBQVMsRUFDNUIsa0JBQWtCLENBQUMsSUFBSSxFQUN2QixrQkFBa0IsQ0FBQyxZQUFZLEVBQy9CLGtCQUFrQixDQUFDLFNBQVMsRUFDNUIsa0JBQWtCLENBQUMsTUFBTSxFQUN6QixrQkFBa0IsQ0FBQyxzQkFBc0IsRUFDekMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQ3BDLGtCQUFrQixDQUFDLHVCQUF1QixFQUMxQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQzdCLGtCQUFrQixDQUFDLHdCQUF3QixFQUMzQyxrQkFBa0IsQ0FBQyxjQUFjLEVBQ2pDLGtCQUFrQixDQUFDLDZCQUE2QixFQUNoRCxrQkFBa0IsQ0FBQyw2QkFBNkIsRUFDaEQsa0JBQWtCLENBQUMsK0JBQStCLEVBQ2xELGtCQUFrQixDQUFDLHlCQUF5QixFQUM1QyxrQkFBa0IsQ0FBQyx5QkFBeUIsRUFDNUMsa0JBQWtCLENBQUMsMkJBQTJCLEVBQzlDLGtCQUFrQixDQUFDLDJCQUEyQixFQUM5QyxrQkFBa0IsQ0FBQyxtQkFBbUIsSUFBSSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FDbEksQ0FBQyxhQUE0QixFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FDbkUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUNOLGtCQUFrQixDQUFDLGNBQWMsSUFBSSxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUNuSCxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUMzRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ04sa0JBQWtCLENBQUMsSUFBSSxFQUN2QixrQkFBa0IsQ0FBQyxZQUFZLEVBQy9CLGtCQUFrQixDQUFDLGFBQWEsRUFDaEMsa0JBQWtCLENBQUMsY0FBYyxFQUNqQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQzdCLGtCQUFrQixDQUFDLGVBQWUsQ0FDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBpQm9va2FibGVJdGVtLCBBcGlCb29raW5nQ2FsZW5kYXIsIEFwaVNlYXJjaFRlYW19IGZyb20gXCIuLi8uLi9hcGktbW9kZWxzXCI7XG5pbXBvcnQge0Jvb2tpbmdDYWxlbmRhcn0gZnJvbSBcIi4uLy4uL21vZGVsc1wiO1xuaW1wb3J0IHtzZWFyY2hUZWFtRmFjdG9yeX0gZnJvbSBcIi4vc2VhcmNoLXRlYW0tZmFjdG9yeVwiO1xuaW1wb3J0IHtib29rYWJsZUl0ZW1GYWN0b3J5fSBmcm9tIFwiLi9ib29rYWJsZS1pdGVtLWZhY3RvcnlcIjtcblxuZXhwb3J0IGNvbnN0IGJvb2tpbmdDYWxlbmRhckZhY3RvcnkgPSAoYXBpQm9va2luZ0NhbGVuZGFyOiBBcGlCb29raW5nQ2FsZW5kYXIpID0+XG4gIG5ldyBCb29raW5nQ2FsZW5kYXIoXG4gICAgYXBpQm9va2luZ0NhbGVuZGFyLmlkLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5jbHViX2lkLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5zZWN0aW9uX2lkLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci50ZWFtX2lkLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5jbHViX25hbWUsXG4gICAgYXBpQm9va2luZ0NhbGVuZGFyLm5hbWUsXG4gICAgYXBpQm9va2luZ0NhbGVuZGFyLnNlY3Rpb25fbmFtZSxcbiAgICBhcGlCb29raW5nQ2FsZW5kYXIudGVhbV9uYW1lLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5zdGF0dXMsXG4gICAgYXBpQm9va2luZ0NhbGVuZGFyLm1heF9hcHBsaWNhdGlvbl9udW1iZXIsXG4gICAgYXBpQm9va2luZ0NhbGVuZGFyLmFsbG93X3RlYW1fZXhwb3J0LFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5hbGxvd19yZXBlYXRlZF9ib29raW5ncyxcbiAgICBhcGlCb29raW5nQ2FsZW5kYXIuaXNfZGVmYXVsdCxcbiAgICBhcGlCb29raW5nQ2FsZW5kYXIucGF5bWVudF9saW1pdF9pbl9taW51dGVzLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5wcmljZV9wZXJfc2xvdCxcbiAgICBhcGlCb29raW5nQ2FsZW5kYXIuc2VuZF90ZWFtX2FwcGxpY2F0aW9uX2NyZWF0ZWQsXG4gICAgYXBpQm9va2luZ0NhbGVuZGFyLnNlbmRfdGVhbV9hcHBsaWNhdGlvbl91cGRhdGVkLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5zZW5kX2FkbWluX3RlYW1fYm9va2luZ19jcmVhdGVkLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5zZW5kX3RlYW1fYm9va2luZ19jcmVhdGVkLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5zZW5kX3RlYW1fYm9va2luZ19kZWxldGVkLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5zZW5kX21lbWJlcl9ib29raW5nX2NyZWF0ZWQsXG4gICAgYXBpQm9va2luZ0NhbGVuZGFyLnNlbmRfbWVtYmVyX2Jvb2tpbmdfZGVsZXRlZCxcbiAgICBhcGlCb29raW5nQ2FsZW5kYXIuYXZhaWxhYmxlX2Zvcl90ZWFtcyAmJiBhcGlCb29raW5nQ2FsZW5kYXIuYXZhaWxhYmxlX2Zvcl90ZWFtcy5sZW5ndGggPyBhcGlCb29raW5nQ2FsZW5kYXIuYXZhaWxhYmxlX2Zvcl90ZWFtcy5tYXAoXG4gICAgICAoYXBpU2VhcmNoVGVhbTogQXBpU2VhcmNoVGVhbSkgPT4gc2VhcmNoVGVhbUZhY3RvcnkoYXBpU2VhcmNoVGVhbSksXG4gICAgKSA6IFtdLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5ib29rYWJsZV9pdGVtcyAmJiBhcGlCb29raW5nQ2FsZW5kYXIuYm9va2FibGVfaXRlbXMubGVuZ3RoID8gYXBpQm9va2luZ0NhbGVuZGFyLmJvb2thYmxlX2l0ZW1zLm1hcChcbiAgICAgIChhcGlCb29rYWJsZUl0ZW06IEFwaUJvb2thYmxlSXRlbSkgPT4gYm9va2FibGVJdGVtRmFjdG9yeShhcGlCb29rYWJsZUl0ZW0pXG4gICAgKSA6IFtdLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci50eXBlLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci50eXBlX2Rpc3BsYXksXG4gICAgYXBpQm9va2luZ0NhbGVuZGFyLm1lbWJlcl9mZWVfaWQsXG4gICAgYXBpQm9va2luZ0NhbGVuZGFyLnNlcnZpY2VfZmVlX2lkLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5pbmZvX2VtYWlsLFxuICAgIGFwaUJvb2tpbmdDYWxlbmRhci5zYXZlZF9zZWFyY2hfaWQsXG4gICk7XG4iXX0=
|
|
@@ -13,7 +13,6 @@ export * from './auth-member-factory';
|
|
|
13
13
|
export * from './auth-section-factory';
|
|
14
14
|
export * from './auth-team-factory';
|
|
15
15
|
export * from './auth-team-section-factory';
|
|
16
|
-
export * from './bookable-group-factory';
|
|
17
16
|
export * from './bookable-item-factory';
|
|
18
17
|
export * from './bookable-part-factory';
|
|
19
18
|
export * from './bookable-tag-factory';
|
|
@@ -92,4 +91,4 @@ export * from './unpaid-invoice-factory';
|
|
|
92
91
|
export * from './user-factory';
|
|
93
92
|
export * from './user-notification-factory';
|
|
94
93
|
export * from './zimpler-factory';
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL3NlcnZpY2VzL2ZhY3Rvcmllcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQTtBQUM3QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHktZXh0cmEtbWVtYmVyLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eS1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHktaW52aXRlLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eS1sb2NhdGlvbi1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHktbG9jYXRpb24tZ3JvdXAtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5LWxvY2F0aW9uLXRhZy1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHktbG9jYXRpb24tcGFydC1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHktcGFydGljaXBhbnQtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5LXNldHRpbmdzLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eS10eXBlLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLW1lbWJlci1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC1zZWN0aW9uLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLXRlYW0tZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgtdGVhbS1zZWN0aW9uLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9ib29rYWJsZS1pdGVtLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9ib29rYWJsZS1wYXJ0LWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9ib29rYWJsZS10YWctZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2Jvb2tpbmctY2FsZW5kYXItZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2Jvb2tpbmctY2FsZW5kYXItYXBwbGljYXRpb24tdGltZS1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYm9va2luZy1jYWxlbmRhci1zbG90LWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9ib29raW5nLWNhbGVuZGFyLXNsb3Qtc2Vzc2lvbi1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYm9va2luZy1jYWxlbmRhci1zbG90LXZhbGlkYXRlLWNvcHktcmVzdWx0LWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9ib29raW5nLXNldHRpbmdzLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLWRlYWwtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtbG9nby1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1sb2dvLXVybHMtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtbWVtYmVyLXRpY2tldC1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC10aGVtZS1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC10aWNrZXQtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtdGlja2V0LWxvY2F0aW9uLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9jbHViLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9jbHViLWltYWdlLWZhY3RvcnknXG5leHBvcnQgKiBmcm9tICcuL2NsdWItc2VjdGlvbi1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vY29udGFjdC1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vY3JlZGl0LWNhcmQtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGFiYW5rLWNhdGVnb3J5LWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhYmFuay1pdGVtLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RvcnktZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9leHRlcm5hbC1saW5rLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9mZWF0dXJlLWZsYWdzLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9nZW5lcmFsLWltYWdlLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9naXJvLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9ncm91cC1yb2xlLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9ob21lLXRlYW0tZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLXVybHMtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL21lbWJlci1hdHRyaWJ1dGUtZmFjdG9yeSdcbmV4cG9ydCAqIGZyb20gJy4vbWVtYmVyLWNhcmQtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL21lbWJlci1jb250YWN0LWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9tZW1iZXItZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL21lbWJlci1mZWUtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL21lbWJlci1mdW5jdGlvbi1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vbWVtYmVyLWludml0ZS1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vbWVtYmVyLWludm9pY2UtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL21lbWJlci1pbnZvaWNlLXJvdy1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vbWVtYmVyLXB1YmxpYy1mb3JtLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9tZW1iZXItcHVibGljLWZvcm0tZmllbGQtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL21lbWJlci1wdWJsaWMtZm9ybS1maWVsZC1vcHRpb24tZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL21lbWJlci10ZWFtLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9tZW1iZXItdGVhbS10aHJvdWdoLWZhY3RvcnknXG5leHBvcnQgKiBmcm9tICcuL21lbWJlci10eXBlLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9tZW1iZXItdmFsaWRhdGlvbi1zZXR0aW5ncy1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vbmV3cy1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vb3Blbi1hY3Rpdml0eS1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vb3B0aW9uYWwtZmVlLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVyYm9va2VkLWJvb2thYmxlLWl0ZW0tZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL292ZXJib29rZWQtbG9jYXRpb24tZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL290aGVyLW1lbWJlci1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vb3RoZXItbWVtYmVyLWZpZWxkLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJ0bmVyLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9wYXltZW50LWF0dGVtcHQtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL3BheW1lbnQtb3JkZXItZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL3BheW1lbnQtb3JkZXItcm93LWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXV0aGVudGljYXRpb24tZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdHJhdGlvbi1xci1jb2RlLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9yZXRyaWV2ZS0yZmEtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL3NhdmVkLXNlYXJjaC1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLWNsdWItZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1tZW1iZXItY2FyZC1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLW1lbWJlci1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLW1lbWJlci1pbnZvaWNlLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gtbWVtYmVyLXRlYW0tdGhyb3VnaC1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vc2VjdGlvbi1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vc3dpc2gtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL3N3aXNoLWluY2lkZW50LWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi90b2tlbi1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vdW5wYWlkLWludm9pY2UtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItbm90aWZpY2F0aW9uLWZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi96aW1wbGVyLWZhY3RvcnknO1xuIl19
|