@ieeesa-npm/dashboard 0.0.6 → 0.0.7
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/components/event-group-card/event-group-card.component.mjs +3 -3
- package/esm2022/lib/components/meeting-attendance-row/meeting-attendance-row.component.mjs +3 -3
- package/esm2022/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.mjs +46 -87
- package/esm2022/lib/dashboard.component.mjs +32 -4
- package/esm2022/lib/models/event-meeting-list-item.model.mjs +1 -1
- package/esm2022/lib/models/upcoming-summary.model.mjs +2 -0
- package/esm2022/lib/services/dashboard.service.mjs +23 -6
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ieeesa-npm-dashboard.mjs +115 -110
- package/fesm2022/ieeesa-npm-dashboard.mjs.map +1 -1
- package/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.d.ts +22 -44
- package/lib/dashboard.component.d.ts +17 -6
- package/lib/models/event-meeting-list-item.model.d.ts +7 -0
- package/lib/models/upcoming-summary.model.d.ts +16 -0
- package/lib/services/dashboard.service.d.ts +5 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -40,6 +40,12 @@ export class DashboardService {
|
|
|
40
40
|
) {
|
|
41
41
|
this.httpService = httpService;
|
|
42
42
|
this.upcomingEvents = new BehaviorSubject([]);
|
|
43
|
+
this.upcomingSummary = new BehaviorSubject({
|
|
44
|
+
totalRecords: 0,
|
|
45
|
+
eventCount: 0,
|
|
46
|
+
standaloneMeetingCount: 0,
|
|
47
|
+
standaloneMeetingsOpenForAttendanceCount: 0,
|
|
48
|
+
});
|
|
43
49
|
this.groups = new BehaviorSubject([]);
|
|
44
50
|
this.upcomingState = new BehaviorSubject(DashboardSectionState.LOADING);
|
|
45
51
|
this.groupsState = new BehaviorSubject(DashboardSectionState.LOADING);
|
|
@@ -47,6 +53,8 @@ export class DashboardService {
|
|
|
47
53
|
this.inFlightMeetingIds = new BehaviorSubject(new Set());
|
|
48
54
|
/** Emits the list of the user's upcoming events. */
|
|
49
55
|
this.upcomingEvents$ = this.upcomingEvents.asObservable();
|
|
56
|
+
/** Emits the server-provided summary counts (paginator length + collapsed-summary counts). */
|
|
57
|
+
this.upcomingSummary$ = this.upcomingSummary.asObservable();
|
|
50
58
|
/** Emits the list of the user's groups. */
|
|
51
59
|
this.groups$ = this.groups.asObservable();
|
|
52
60
|
/** Emits the load/empty/error state of the upcoming-events section. */
|
|
@@ -83,12 +91,12 @@ export class DashboardService {
|
|
|
83
91
|
* @return {Observable<EventMeetingListResponse>} The home events-&-meetings response envelope.
|
|
84
92
|
* @memberof DashboardService
|
|
85
93
|
*/
|
|
86
|
-
loadUpcomingEvents() {
|
|
94
|
+
loadUpcomingEvents(page = 1, size = UPCOMING_PAGE_SIZE) {
|
|
87
95
|
this.upcomingState.next(DashboardSectionState.LOADING);
|
|
88
96
|
const payload = {
|
|
89
97
|
payload: {
|
|
90
|
-
page
|
|
91
|
-
size
|
|
98
|
+
page,
|
|
99
|
+
size,
|
|
92
100
|
sortColumn: 'startDateTime',
|
|
93
101
|
ascendingOrder: true,
|
|
94
102
|
searchTerm: null,
|
|
@@ -97,10 +105,19 @@ export class DashboardService {
|
|
|
97
105
|
return this.httpService
|
|
98
106
|
.postData(`${this.apiBaseUrl}/meetings/home/eventsAndMeetings`, payload)
|
|
99
107
|
.pipe(map((response) => {
|
|
100
|
-
const
|
|
108
|
+
const body = response?.body;
|
|
109
|
+
const events = mapEventMeetingList(body?.eventMeetingList ?? []);
|
|
101
110
|
this.upcomingEvents.next(events);
|
|
111
|
+
// Drive paginator length + collapsed-summary counts from the server
|
|
112
|
+
// response — never computed/hardcoded on the frontend.
|
|
113
|
+
this.upcomingSummary.next({
|
|
114
|
+
totalRecords: body?.totalRecords ?? events.length,
|
|
115
|
+
eventCount: body?.eventCount ?? 0,
|
|
116
|
+
standaloneMeetingCount: body?.standaloneMeetingCount ?? 0,
|
|
117
|
+
standaloneMeetingsOpenForAttendanceCount: body?.standaloneMeetingsOpenForAttendanceCount ?? 0,
|
|
118
|
+
});
|
|
102
119
|
this.seedAttendanceStates(events);
|
|
103
|
-
this.upcomingState.next(events.length > 0
|
|
120
|
+
this.upcomingState.next((body?.totalRecords ?? events.length) > 0
|
|
104
121
|
? DashboardSectionState.LOADED
|
|
105
122
|
: DashboardSectionState.EMPTY);
|
|
106
123
|
return response;
|
|
@@ -344,4 +361,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
344
361
|
providedIn: 'root',
|
|
345
362
|
}]
|
|
346
363
|
}], ctorParameters: function () { return [{ type: i1.HttpService }]; } });
|
|
347
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9zZXJ2aWNlcy9kYXNoYm9hcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBRWYsVUFBVSxFQUNWLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQU1oRixPQUFPLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0sZ0NBQWdDLENBQUM7QUFVeEMsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsTUFBTSxvQ0FBb0MsQ0FBQztBQVc1QyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7OztBQWIvQix5RkFBeUY7QUFDekYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUM7QUFDdEMsMkNBQTJDO0FBQzNDLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUN4Qix1RUFBdUU7QUFDdkUsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFDOUIsc0VBQXNFO0FBQ3RFLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO0FBUW5DOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUFxQzNCO0lBQ0UsMENBQTBDO0lBQ2xDLFdBQXdCLENBQUMsNkNBQTZDOztRQUF0RSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQW5DakIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsRUFBRSxDQUFDLENBQUM7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QixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQmVoYXZpb3JTdWJqZWN0LFxyXG4gIE9ic2VydmFibGUsXHJcbiAgY2F0Y2hFcnJvcixcclxuICBtYXAsXHJcbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IFVzZXJQZXJtaXNzaW9uIH0gZnJvbSAnQGllZWVzYS1ucG0vbW9kZWxzJztcclxuaW1wb3J0IHsgQXR0ZW5kYW5jZVN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2F0dGVuZGFuY2Utc3RhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRMaXN0UmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvZGFzaGJvYXJkLWxpc3QtcmVzcG9uc2UubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRTZWN0aW9uU3RhdGUgfSBmcm9tICcuLi9tb2RlbHMvZGFzaGJvYXJkLXNlY3Rpb24tc3RhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cFJvdyB9IGZyb20gJy4uL21vZGVscy9ncm91cC1yb3cubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIE15R3JvdXBzVmlldyxcclxuICBNeUdyb3VwVmlldyxcclxufSBmcm9tICcuLi9tb2RlbHMvbXktZ3JvdXBzLXZpZXcubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIFVwY29taW5nRXZlbnQsXHJcbiAgVXBjb21pbmdJdGVtS2luZCxcclxufSBmcm9tICcuLi9tb2RlbHMvdXBjb21pbmctZXZlbnQubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEV2ZW50TWVldGluZ0RldGFpbFBheWxvYWQsXHJcbiAgRXZlbnRNZWV0aW5nTGlzdFBheWxvYWQsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2V2ZW50LW1lZXRpbmctbGlzdC1wYXlsb2FkLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBFdmVudE1lZXRpbmdEZXRhaWxCb2R5LFxyXG4gIEV2ZW50TWVldGluZ0RldGFpbFJlc3BvbnNlLFxyXG4gIEV2ZW50TWVldGluZ0xpc3RSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvZXZlbnQtbWVldGluZy1saXN0LWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIG1hcEV2ZW50TWVldGluZ0RldGFpbHMsXHJcbiAgbWFwRXZlbnRNZWV0aW5nTGlzdCxcclxufSBmcm9tICcuLi91dGlscy9ldmVudC1tZWV0aW5nLW1hcHBlci51dGlsJztcclxuaW1wb3J0IHsgTWVldGluZ1JvdyB9IGZyb20gJy4uL21vZGVscy9tZWV0aW5nLXJvdy5tb2RlbCc7XHJcblxyXG4vKiogRmFsbGJhY2sgbGFiZWwgZm9yIGFuIGVtcHR5IGdyb3VwIHR5cGUgLyBtZW1iZXIgbGV2ZWwsIG1hdGNoaW5nIHRoZSBNeSBHcm91cHMgdGFiLiAqL1xyXG5jb25zdCBVTkFTU0lHTkVEX0xBQkVMID0gJ1VuYXNzaWduZWQnO1xyXG4vKiogUGxhY2Vob2xkZXIgZm9yIGFuIGVtcHR5IGNlbGwgdmFsdWUuICovXHJcbmNvbnN0IEVNUFRZX1ZBTFVFID0gJy0nO1xyXG4vKiogRGVmYXVsdCBwYWdlIHNpemUgZm9yIHRoZSB0b3AtbGV2ZWwgaG9tZSBldmVudHMtJi1tZWV0aW5ncyBsaXN0LiAqL1xyXG5jb25zdCBVUENPTUlOR19QQUdFX1NJWkUgPSAxMDtcclxuLyoqIERlZmF1bHQgcGFnZSBzaXplIGZvciBhbiBldmVudCdzIGRyaWxsLWRvd24gY2hpbGQtbWVldGluZyBsaXN0LiAqL1xyXG5jb25zdCBFVkVOVF9NRUVUSU5HU19QQUdFX1NJWkUgPSA1O1xyXG5pbXBvcnQge1xyXG4gIGFwcGx5TGVhdmVNZWV0aW5nU3VjY2VzcyxcclxuICBhcHBseUxvZ0F0dGVuZGFuY2VTdWNjZXNzLFxyXG4gIGJlZ2luQXR0ZW5kYW5jZUFjdGlvbixcclxuICBlbmRBdHRlbmRhbmNlQWN0aW9uLFxyXG59IGZyb20gJy4vYXR0ZW5kYW5jZS1yZWR1Y2Vycyc7XHJcblxyXG4vKipcclxuICogRGFzaGJvYXJkU2VydmljZSBpcyB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGRhc2hib2FyZCBsYW5kaW5nXHJcbiAqIHBhZ2UncyBkYXRhIGFuZCBhdHRlbmRhbmNlIHN0YXRlLiBJdCBtaXJyb3JzIHRoZSBgZXZlbnRzLWFuZC1tZWV0aW5nc2BcclxuICogc2VydmljZSBjb252ZW50aW9uczogaXQgaXMgYSBgcHJvdmlkZWRJbjogJ3Jvb3QnYCBzaW5nbGV0b24sIGhvbGRzIHRoZSBob3N0XHJcbiAqIGBhcGlCYXNlVXJsYCAvIGB1c2VyUGVybWlzc2lvbnNgIHNldCB2aWEge0BsaW5rIHNldEFwcENvbmZpZ30sIG93bnMgaXRzIHN0YXRlXHJcbiAqIHZpYSBgQmVoYXZpb3JTdWJqZWN0YHMgZXhwb3NlZCBhcyBvYnNlcnZhYmxlcywgYW5kIHJlYWNoZXMgdGhlIGJhY2tlbmQgb25seVxyXG4gKiB0aHJvdWdoIHRoZSBzaGFyZWQgYEh0dHBTZXJ2aWNlYCBmcm9tIGBAaWVlZXNhLW5wbS91dGlsaXR5YCAobmV2ZXJcclxuICogYEh0dHBDbGllbnRgIGRpcmVjdGx5KS5cclxuICpcclxuICogVGhlIHVwY29taW5nLWV2ZW50cyBsb2FkIGNhbGxzIHRoZSByZWFsIGBQT1NUIC9tZWV0aW5ncy9ldmVudHNBbmRNZWV0aW5nc2BcclxuICogZW5kcG9pbnQgKGNoaWxkIG1lZXRpbmdzIGFyZSBsYXppbHkgbG9hZGVkIHBlci1ldmVudCB2aWFcclxuICogYFBPU1QgL21lZXRpbmdzL21lZXRpbmdzRGV0YWlsc2ApOyB0aGUgZ3JvdXBzIGxvYWQgY2FsbHMgYEdFVFxyXG4gKiAvZ3JvdXBzL215LWdyb3Vwc2AuIFRoZSBhdHRlbmRhbmNlIGFjdGlvbnMgY29tcG9zZSB0aGUgcHVyZSByZWR1Y2VycyBmcm9tXHJcbiAqIGBhdHRlbmRhbmNlLXJlZHVjZXJzLnRzYCBzbyB0aGUgZGlzcGxheWVkIGBBdHRlbmRhbmNlU3RhdGVgIG9ubHkgYWR2YW5jZXMgb24gYVxyXG4gKiBzdWNjZXNzZnVsIHJlc29sdXRpb24gYW5kIHRoZSBwcmlvciBzdGF0ZSBpcyByZXRhaW5lZCBvbiBmYWlsdXJlLlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBEYXNoYm9hcmRTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkU2VydmljZSB7XHJcbiAgYXBpQmFzZVVybCE6IHN0cmluZztcclxuICB1c2VyUGVybWlzc2lvbnMhOiBVc2VyUGVybWlzc2lvbltdO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHVwY29taW5nRXZlbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVcGNvbWluZ0V2ZW50W10+KFtdKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGdyb3VwcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R3JvdXBSb3dbXT4oW10pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdXBjb21pbmdTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGFzaGJvYXJkU2VjdGlvblN0YXRlPihcclxuICAgIERhc2hib2FyZFNlY3Rpb25TdGF0ZS5MT0FESU5HXHJcbiAgKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGdyb3Vwc1N0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXNoYm9hcmRTZWN0aW9uU3RhdGU+KFxyXG4gICAgRGFzaGJvYXJkU2VjdGlvblN0YXRlLkxPQURJTkdcclxuICApO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXR0ZW5kYW5jZVN0YXRlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XHJcbiAgICBSZWNvcmQ8c3RyaW5nLCBBdHRlbmRhbmNlU3RhdGU+XHJcbiAgPih7fSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbkZsaWdodE1lZXRpbmdJZHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxyXG4gICAgUmVhZG9ubHlTZXQ8c3RyaW5nPlxyXG4gID4obmV3IFNldDxzdHJpbmc+KCkpO1xyXG5cclxuICAvKiogRW1pdHMgdGhlIGxpc3Qgb2YgdGhlIHVzZXIncyB1cGNvbWluZyBldmVudHMuICovXHJcbiAgdXBjb21pbmdFdmVudHMkOiBPYnNlcnZhYmxlPFVwY29taW5nRXZlbnRbXT4gPVxyXG4gICAgdGhpcy51cGNvbWluZ0V2ZW50cy5hc09ic2VydmFibGUoKTtcclxuICAvKiogRW1pdHMgdGhlIGxpc3Qgb2YgdGhlIHVzZXIncyBncm91cHMuICovXHJcbiAgZ3JvdXBzJDogT2JzZXJ2YWJsZTxHcm91cFJvd1tdPiA9IHRoaXMuZ3JvdXBzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8qKiBFbWl0cyB0aGUgbG9hZC9lbXB0eS9lcnJvciBzdGF0ZSBvZiB0aGUgdXBjb21pbmctZXZlbnRzIHNlY3Rpb24uICovXHJcbiAgdXBjb21pbmdTdGF0ZSQ6IE9ic2VydmFibGU8RGFzaGJvYXJkU2VjdGlvblN0YXRlPiA9XHJcbiAgICB0aGlzLnVwY29taW5nU3RhdGUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLyoqIEVtaXRzIHRoZSBsb2FkL2VtcHR5L2Vycm9yIHN0YXRlIG9mIHRoZSBncm91cHMgc2VjdGlvbi4gKi9cclxuICBncm91cHNTdGF0ZSQ6IE9ic2VydmFibGU8RGFzaGJvYXJkU2VjdGlvblN0YXRlPiA9XHJcbiAgICB0aGlzLmdyb3Vwc1N0YXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8qKiBFbWl0cyB0aGUgcGVyLW1lZXRpbmcgYXR0ZW5kYW5jZS1zdGF0ZSBtYXAuICovXHJcbiAgYXR0ZW5kYW5jZVN0YXRlcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgQXR0ZW5kYW5jZVN0YXRlPj4gPVxyXG4gICAgdGhpcy5hdHRlbmRhbmNlU3RhdGVzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8qKiBFbWl0cyB0aGUgc2V0IG9mIG1lZXRpbmcgaWRzIHdpdGggYW4gYXR0ZW5kYW5jZSBhY3Rpb24gaW4gZmxpZ2h0LiAqL1xyXG4gIGluRmxpZ2h0TWVldGluZ0lkcyQ6IE9ic2VydmFibGU8UmVhZG9ubHlTZXQ8c3RyaW5nPj4gPVxyXG4gICAgdGhpcy5pbkZsaWdodE1lZXRpbmdJZHMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3JlcyB0aGUgaG9zdC1zdXBwbGllZCBBUEkgYmFzZSBVUkwgYW5kIHVzZXIgcGVybWlzc2lvbnMgdXNlZCB0byBidWlsZFxyXG4gICAqIHJlcXVlc3QgVVJMcyBhbmQgZ2F0ZSBwZXJtaXNzaW9uLWNvbnRyb2xsZWQgYWN0aW9ucy4gTWlycm9ycyB0aGVcclxuICAgKiBgZXZlbnRzLWFuZC1tZWV0aW5nc2Agc2VydmljZSBgc2V0QXBwQ29uZmlnYC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBpQmFzZVVSTCAtIFRoZSBob3N0IGFwcGxpY2F0aW9uJ3MgQVBJIGJhc2UgVVJMLlxyXG4gICAqIEBwYXJhbSB7VXNlclBlcm1pc3Npb25bXX0gdXNlclBlcm1pc3Npb25zIC0gVGhlIHNpZ25lZC1pbiB1c2VyJ3MgcGVybWlzc2lvbnMuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkU2VydmljZVxyXG4gICAqL1xyXG4gIHNldEFwcENvbmZpZyhhcGlCYXNlVVJMOiBzdHJpbmcsIHVzZXJQZXJtaXNzaW9uczogVXNlclBlcm1pc3Npb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5hcGlCYXNlVXJsID0gYXBpQmFzZVVSTDtcclxuICAgIHRoaXMudXNlclBlcm1pc3Npb25zID0gdXNlclBlcm1pc3Npb25zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZHMgdGhlIHVzZXIncyBjb21iaW5lZCB1cGNvbWluZyBldmVudHMgJiBzdGFuZGFsb25lIG1lZXRpbmdzIGZyb20gdGhlXHJcbiAgICogYmFja2VuZCB2aWEgYFBPU1Qge2FwaUJhc2VVcmx9L21lZXRpbmdzL2hvbWUvZXZlbnRzQW5kTWVldGluZ3NgLiBUaGUgcmVzcG9uc2VcclxuICAgKiAod2hpY2ggY2FycmllcyBwZXItZXZlbnQgYHRvdGFsTWVldGluZ0NvdW50YCAvIGBtZWV0aW5nc09wZW5Gb3JBdHRlbmRhbmNlQ291bnRgXHJcbiAgICogYW5kIHBlci1zdGFuZGFsb25lIGBhdHRlbmRhbmNlU3RhdGVgIGRpcmVjdGx5KSBpcyBtYXBwZWQgaW50byB0aGUgZGFzaGJvYXJkXHJcbiAgICogdmlldyBtb2RlbHMgKFNUQU5EQUxPTkVfTUVFVElORyByb3dzIG9yZGVyZWQgbGFzdCksIHRoZSBwZXItbWVldGluZ1xyXG4gICAqIGF0dGVuZGFuY2Utc3RhdGUgbWFwIGlzIHNlZWRlZCwgYW5kIHRoZSBzZWN0aW9uIGFkdmFuY2VzIHRocm91Z2hcclxuICAgKiBMT0FESU5HIOKGkiBMT0FERUQvRU1QVFkgb24gc3VjY2Vzcy4gYGFwcElkYCBpcyB0YWtlbiBmcm9tIHRoZSBKV1QsIHNvIGl0IGlzXHJcbiAgICogbm90IHNlbnQuIEZvbGxvd3MgdGhlIHNoYXJlZCBgcGlwZShtYXAsIGNhdGNoRXJyb3IodGhyb3cpKWAgcGF0dGVybi5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEV2ZW50TWVldGluZ0xpc3RSZXNwb25zZT59IFRoZSBob21lIGV2ZW50cy0mLW1lZXRpbmdzIHJlc3BvbnNlIGVudmVsb3BlLlxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICovXHJcbiAgbG9hZFVwY29taW5nRXZlbnRzKCk6IE9ic2VydmFibGU8RXZlbnRNZWV0aW5nTGlzdFJlc3BvbnNlPiB7XHJcbiAgICB0aGlzLnVwY29taW5nU3RhdGUubmV4dChEYXNoYm9hcmRTZWN0aW9uU3RhdGUuTE9BRElORyk7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBFdmVudE1lZXRpbmdMaXN0UGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgc2l6ZTogVVBDT01JTkdfUEFHRV9TSVpFLFxyXG4gICAgICAgIHNvcnRDb2x1bW46ICdzdGFydERhdGVUaW1lJyxcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogdHJ1ZSxcclxuICAgICAgICBzZWFyY2hUZXJtOiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L21lZXRpbmdzL2hvbWUvZXZlbnRzQW5kTWVldGluZ3NgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBFdmVudE1lZXRpbmdMaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGV2ZW50cyA9IG1hcEV2ZW50TWVldGluZ0xpc3QoXHJcbiAgICAgICAgICAgIHJlc3BvbnNlPy5ib2R5Py5ldmVudE1lZXRpbmdMaXN0ID8/IFtdXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy51cGNvbWluZ0V2ZW50cy5uZXh0KGV2ZW50cyk7XHJcbiAgICAgICAgICB0aGlzLnNlZWRBdHRlbmRhbmNlU3RhdGVzKGV2ZW50cyk7XHJcbiAgICAgICAgICB0aGlzLnVwY29taW5nU3RhdGUubmV4dChcclxuICAgICAgICAgICAgZXZlbnRzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICA/IERhc2hib2FyZFNlY3Rpb25TdGF0ZS5MT0FERURcclxuICAgICAgICAgICAgICA6IERhc2hib2FyZFNlY3Rpb25TdGF0ZS5FTVBUWVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGNvbWluZ1N0YXRlLm5leHQoRGFzaGJvYXJkU2VjdGlvblN0YXRlLkVSUk9SKTtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXppbHkgbG9hZHMgKGFuZCBwYWdpbmF0ZXMpIHRoZSBjaGlsZCBtZWV0aW5ncyBvZiBhbiBFVkVOVCB2aWFcclxuICAgKiBgUE9TVCB7YXBpQmFzZVVybH0vbWVldGluZ3MvaG9tZS9ldmVudHMve2V2ZW50SWR9L21lZXRpbmdzYCAodGhlIGRyaWxsLWRvd25cclxuICAgKiBlbmRwb2ludCkuIFRoZSBgZXZlbnRJZGAgaXMgc2VudCBpbiB0aGUgVVJMIHBhdGg7IG9ubHkgYHBhZ2VgIC8gYHNpemVgIGFyZVxyXG4gICAqIHVzZWQgaW4gdGhlIGJvZHkuIE9uIHN1Y2Nlc3MgdGhlIGRyaWxsLWRvd24gYm9keSAoZGF5IGluZGljYXRvciwgY291bnRzLFxyXG4gICAqIHBhZ2luYXRvciB0b3RhbCwgYW5kIHRoZSBwYWdlZCBtZWV0aW5ncykgaXMgbWVyZ2VkIG9udG8gdGhlIG1hdGNoaW5nIGV2ZW50LFxyXG4gICAqIGFuZCB0aGUgcGVyLW1lZXRpbmcgYXR0ZW5kYW5jZS1zdGF0ZSBtYXAgaXMgZXh0ZW5kZWQuIEVhY2ggZXZlbnQgcGFnaW5hdGVzXHJcbiAgICogaW5kZXBlbmRlbnRseS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRJZCAtIFRoZSBldmVudCB3aG9zZSBtZWV0aW5ncyB0byBsb2FkLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbcGFnZT0xXSAtIFRoZSBvbmUtYmFzZWQgcGFnZSB0byByZXF1ZXN0LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT1FVkVOVF9NRUVUSU5HU19QQUdFX1NJWkVdIC0gVGhlIHBhZ2Ugc2l6ZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEV2ZW50TWVldGluZ0RldGFpbFJlc3BvbnNlPn0gVGhlIGRyaWxsLWRvd24gcmVzcG9uc2UgZW52ZWxvcGUuXHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBsb2FkRXZlbnRNZWV0aW5ncyhcclxuICAgIGV2ZW50SWQ6IHN0cmluZyxcclxuICAgIHBhZ2UgPSAxLFxyXG4gICAgc2l6ZSA9IEVWRU5UX01FRVRJTkdTX1BBR0VfU0laRVxyXG4gICk6IE9ic2VydmFibGU8RXZlbnRNZWV0aW5nRGV0YWlsUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IEV2ZW50TWVldGluZ0RldGFpbFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHsgcGFnZSwgc2l6ZSB9LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L21lZXRpbmdzL2hvbWUvZXZlbnRzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KFxyXG4gICAgICAgICAgZXZlbnRJZFxyXG4gICAgICAgICl9L21lZXRpbmdzYCxcclxuICAgICAgICBwYXlsb2FkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZTogRXZlbnRNZWV0aW5nRGV0YWlsUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGJvZHkgPSByZXNwb25zZT8uYm9keTtcclxuICAgICAgICAgIGNvbnN0IG1lZXRpbmdzID0gbWFwRXZlbnRNZWV0aW5nRGV0YWlscyhib2R5Py5tZWV0aW5ncyA/PyBbXSwgZXZlbnRJZCk7XHJcbiAgICAgICAgICB0aGlzLm1lcmdlRXZlbnRNZWV0aW5ncyhldmVudElkLCBtZWV0aW5ncywgYm9keSk7XHJcbiAgICAgICAgICB0aGlzLnNlZWRBdHRlbmRhbmNlU3RhdGVzRnJvbU1lZXRpbmdzKG1lZXRpbmdzKTtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lcmdlcyBhIGZyZXNobHkgbG9hZGVkIGRyaWxsLWRvd24gcGFnZSBvbnRvIHRoZSBtYXRjaGluZyBldmVudCBpbiB0aGVcclxuICAgKiBgdXBjb21pbmdFdmVudHNgIGxpc3Q6IHRoZSBwYWdlZCBgbWVldGluZ3NgLCB0aGUgcGFnaW5hdG9yIHRvdGFsXHJcbiAgICogKGB0b3RhbFJlY29yZHNgID0gdGhlIHVzZXIncyB0aWVkIHVwY29taW5nIG1lZXRpbmdzKSwgdGhlIGV2ZW50J3MgZnVsbFxyXG4gICAqIGB0b3RhbE1lZXRpbmdDb3VudGAgLyBgbWVldGluZ3NPcGVuRm9yQXR0ZW5kYW5jZUNvdW50YCwgYW5kIHRoZVxyXG4gICAqIFwiRGF5IFggb2YgWVwiIGluZGljYXRvciBkZXJpdmVkIGZyb20gYGN1cnJlbnREYXlgIC8gYHRvdGFsRGF5c2AuIExlYXZlcyBhbGxcclxuICAgKiBvdGhlciBldmVudHMgdW50b3VjaGVkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudElkIC0gVGhlIGV2ZW50IHRvIG1lcmdlIG1lZXRpbmdzIG9udG8uXHJcbiAgICogQHBhcmFtIHtNZWV0aW5nUm93W119IG1lZXRpbmdzIC0gVGhlIG1hcHBlZCBkcmlsbC1kb3duIG1lZXRpbmdzIGZvciB0aGUgcGFnZS5cclxuICAgKiBAcGFyYW0ge0V2ZW50TWVldGluZ0RldGFpbEJvZHkgfCB1bmRlZmluZWR9IGJvZHkgLSBUaGUgZHJpbGwtZG93biByZXNwb25zZSBib2R5LlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBwcml2YXRlIG1lcmdlRXZlbnRNZWV0aW5ncyhcclxuICAgIGV2ZW50SWQ6IHN0cmluZyxcclxuICAgIG1lZXRpbmdzOiBNZWV0aW5nUm93W10sXHJcbiAgICBib2R5OiBFdmVudE1lZXRpbmdEZXRhaWxCb2R5IHwgdW5kZWZpbmVkXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCB0b3RhbFJlY29yZHMgPSBib2R5Py50b3RhbFJlY29yZHMgPz8gbWVldGluZ3MubGVuZ3RoO1xyXG4gICAgY29uc3QgdG90YWxNZWV0aW5nQ291bnQgPSBib2R5Py50b3RhbE1lZXRpbmdDb3VudCA/PyB0b3RhbFJlY29yZHM7XHJcbiAgICBjb25zdCBvcGVuRm9yQXR0ZW5kYW5jZUNvdW50ID0gYm9keT8ubWVldGluZ3NPcGVuRm9yQXR0ZW5kYW5jZUNvdW50ID8/IDA7XHJcbiAgICBjb25zdCBjdXJyZW50RGF5ID0gYm9keT8uY3VycmVudERheTtcclxuICAgIGNvbnN0IHRvdGFsRGF5cyA9IGJvZHk/LnRvdGFsRGF5cztcclxuICAgIGNvbnN0IGRheUluZGljYXRvciA9XHJcbiAgICAgIGN1cnJlbnREYXkgJiYgdG90YWxEYXlzID8gYERheSAke2N1cnJlbnREYXl9IG9mICR7dG90YWxEYXlzfWAgOiAnJztcclxuICAgIGNvbnN0IG5leHQgPSB0aGlzLnVwY29taW5nRXZlbnRzLnZhbHVlLm1hcCgoZXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50LmV2ZW50SWQgIT09IGV2ZW50SWQpIHtcclxuICAgICAgICByZXR1cm4gZXZlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5ldmVudCxcclxuICAgICAgICBtZWV0aW5ncyxcclxuICAgICAgICAvLyBQYWdpbmF0b3IgbGVuZ3RoID0gY291bnQgb2YgdGhlIHVzZXIncyB0aWVkIHVwY29taW5nIG1lZXRpbmdzLlxyXG4gICAgICAgIG1lZXRpbmdQYWdlVG90YWw6IHRvdGFsUmVjb3JkcyxcclxuICAgICAgICBtZWV0aW5nQ291bnQ6IHRvdGFsTWVldGluZ0NvdW50LFxyXG4gICAgICAgIG9wZW5Gb3JBdHRlbmRhbmNlQ291bnQsXHJcbiAgICAgICAgZGF5SW5kaWNhdG9yOiBkYXlJbmRpY2F0b3IgfHwgZXZlbnQuZGF5SW5kaWNhdG9yLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwY29taW5nRXZlbnRzLm5leHQobmV4dCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyB0aGUgdXNlcidzIGdyb3VwcywgZHJpdmluZyB0aGUgZ3JvdXBzIHNlY3Rpb24gdGhyb3VnaFxyXG4gICAqIExPQURJTkcg4oaSIExPQURFRC9FTVBUWSBvbiBzdWNjZXNzIGFuZCBsZWF2aW5nIHRoZSBjYWxsZXIgdG8gc2V0IEVSUk9SIG9uXHJcbiAgICogZmFpbHVyZS4gRm9sbG93cyB0aGUgYHBpcGUobWFwLCBjYXRjaEVycm9yKHRocm93KSlgIHBhdHRlcm4uXHJcbiAgICpcclxuICAgKiBUT0RPOiBSZXBsYWNlIG1vY2sgd2l0aCByZWFsIEFQSSBjYWxsIHdoZW4gQkUgaXMgcmVhZHlcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPERhc2hib2FyZExpc3RSZXNwb25zZTxHcm91cFJvd1tdPj59IFRoZSBncm91cHMgcmVzcG9uc2UgZW52ZWxvcGUuXHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBsb2FkR3JvdXBzKCk6IE9ic2VydmFibGU8RGFzaGJvYXJkTGlzdFJlc3BvbnNlPE15R3JvdXBzVmlldz4+IHtcclxuICAgIHRoaXMuZ3JvdXBzU3RhdGUubmV4dChEYXNoYm9hcmRTZWN0aW9uU3RhdGUuTE9BRElORyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9teS1ncm91cHNgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBEYXNoYm9hcmRMaXN0UmVzcG9uc2U8TXlHcm91cHNWaWV3PikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZ3JvdXBzID0gKHJlc3BvbnNlPy5ib2R5Py5ncm91cHMgPz8gW10pLm1hcCgoZ3JvdXApID0+XHJcbiAgICAgICAgICAgIHRoaXMubWFwR3JvdXAoZ3JvdXApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5ncm91cHMubmV4dChncm91cHMpO1xyXG4gICAgICAgICAgdGhpcy5ncm91cHNTdGF0ZS5uZXh0KFxyXG4gICAgICAgICAgICBncm91cHMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgID8gRGFzaGJvYXJkU2VjdGlvblN0YXRlLkxPQURFRFxyXG4gICAgICAgICAgICAgIDogRGFzaGJvYXJkU2VjdGlvblN0YXRlLkVNUFRZXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc1N0YXRlLm5leHQoRGFzaGJvYXJkU2VjdGlvblN0YXRlLkVSUk9SKTtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYXBzIGEgYmFja2VuZCB7QGxpbmsgTXlHcm91cFZpZXd9IHRvIHRoZSB0YWJsZS1mYWNpbmcge0BsaW5rIEdyb3VwUm93fS5cclxuICAgKiBNaXJyb3JzIHRoZSBNeSBHcm91cHMgcHJvZmlsZSB0YWI6IHRoZSB0eXBlIGZhbGxzIGJhY2sgdG8gXCJVbmFzc2lnbmVkXCIgd2hlblxyXG4gICAqIGBncm91cFR5cGVOYW1lYCBpcyBudWxsLCBhZmZpbGlhdGlvbnMgYXJlIGNvbW1hLWpvaW5lZCwgZW1wdHkgb2ZmaWNlciByb2xlIC9cclxuICAgKiBhZmZpbGlhdGlvbiByZW5kZXIgYXMgYSBwbGFjZWhvbGRlciwgYW5kIGEgYmxhbmsgbWVtYmVyIGxldmVsIGJlY29tZXNcclxuICAgKiBcIlVuYXNzaWduZWRcIiAocmVuZGVyZWQgYXMgdGhlIHdhcm5pbmcgcGlsbCBieSB0aGUgWW91ciBHcm91cHMgY29tcG9uZW50KS5cclxuICAgKiBAcGFyYW0ge015R3JvdXBWaWV3fSBncm91cCAtIFRoZSBiYWNrZW5kIGdyb3VwIHZpZXcuXHJcbiAgICogQHJldHVybiB7R3JvdXBSb3d9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBwcml2YXRlIG1hcEdyb3VwKGdyb3VwOiBNeUdyb3VwVmlldyk6IEdyb3VwUm93IHtcclxuICAgIC8vIFRoZSBiYWNrZW5kIHJldHVybnMgb2ZmaWNlciByb2xlcyBhcyBhbiBgb2ZmaWNlcmAgYXJyYXkgb2ZcclxuICAgIC8vIHsgb2ZmaWNlcklkLCBvZmZpY2VyTmFtZSB9LiBKb2luIHRoZSBuYW1lcyBmb3IgdGhlIE9mZmljZXIgUm9sZSBjb2x1bW5cclxuICAgIC8vIChlLmcuIFwiQ2hhaXJcIiBvciBcIkNoYWlyLCBWaWNlIENoYWlyXCIpOyBzaG93IHRoZSBwbGFjZWhvbGRlciB3aGVuIGVtcHR5LlxyXG4gICAgY29uc3Qgb2ZmaWNlclJvbGUgPVxyXG4gICAgICAoZ3JvdXAub2ZmaWNlciA/PyBbXSlcclxuICAgICAgICAubWFwKChvZmZpY2VyKSA9PiBvZmZpY2VyPy5vZmZpY2VyTmFtZT8udHJpbSgpKVxyXG4gICAgICAgIC5maWx0ZXIoKG5hbWUpID0+ICEhbmFtZSlcclxuICAgICAgICAuam9pbignLCAnKSB8fCBFTVBUWV9WQUxVRTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBncm91cElkOiBncm91cC5ncm91cElkLFxyXG4gICAgICBncm91cDogZ3JvdXAuZ3JvdXBOYW1lLFxyXG4gICAgICB0eXBlOiBncm91cC5ncm91cFR5cGVOYW1lIHx8IGdyb3VwLmdyb3VwVHlwZSB8fCBVTkFTU0lHTkVEX0xBQkVMLFxyXG4gICAgICBvZmZpY2VyUm9sZSxcclxuICAgICAgYWZmaWxpYXRpb246IGdyb3VwLmFmZmlsaWF0aW9ucz8uam9pbignLCAnKSB8fCBFTVBUWV9WQUxVRSxcclxuICAgICAgbWVtYmVyTGV2ZWw6IGdyb3VwLm1lbWJlckxldmVsPy50cmltKCkgfHwgVU5BU1NJR05FRF9MQUJFTCxcclxuICAgICAgLy8gQ2FycnkgdGhlIGFuY2VzdG9yIGhpZXJhcmNoeSB0aHJvdWdoIGZvciB0aGUgZXhwYW5kYWJsZSBoaWVyYXJjaHkgcm93cy5cclxuICAgICAgaGllcmFyY2h5OiBncm91cC5oaWVyYXJjaHkgPz8gW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ncyBhdHRlbmRhbmNlIGZvciBhIG1lZXRpbmcuIE1hcmtzIHRoZSBtZWV0aW5nIGluLWZsaWdodCAocmV0YWluaW5nIHRoZVxyXG4gICAqIHByaW9yIGRpc3BsYXllZCBzdGF0ZSksIHBvc3RzIHRocm91Z2ggYEh0dHBTZXJ2aWNlYCwgYXBwbGllcyB0aGVcclxuICAgKiBsb2ctYXR0ZW5kYW5jZS1zdWNjZXNzIHJlZHVjZXIgb24gc3VjY2VzcywgY2xlYXJzIHRoZSBpbi1mbGlnaHQgZmxhZyBvblxyXG4gICAqIGNvbXBsZXRpb24sIGFuZCByZXRocm93cyB3aGlsZSByZXRhaW5pbmcgcHJpb3Igc3RhdGUgb24gZmFpbHVyZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVldGluZ0lkIC0gVGhlIG1lZXRpbmcgdG8gbG9nIGF0dGVuZGFuY2UgZm9yLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RGFzaGJvYXJkTGlzdFJlc3BvbnNlPHVua25vd24+Pn0gVGhlIGF0dGVuZGFuY2UgcmVzcG9uc2UgZW52ZWxvcGUuXHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBsb2dBdHRlbmRhbmNlKFxyXG4gICAgbWVldGluZ0lkOiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPERhc2hib2FyZExpc3RSZXNwb25zZTx1bmtub3duPj4ge1xyXG4gICAgdGhpcy5pbkZsaWdodE1lZXRpbmdJZHMubmV4dChcclxuICAgICAgYmVnaW5BdHRlbmRhbmNlQWN0aW9uKHRoaXMuaW5GbGlnaHRNZWV0aW5nSWRzLnZhbHVlLCBtZWV0aW5nSWQpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvYXR0ZW5kYW5jZS9sb2dgLCB7IG1lZXRpbmdJZCB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmF0dGVuZGFuY2VTdGF0ZXMubmV4dChcclxuICAgICAgICAgICAgYXBwbHlMb2dBdHRlbmRhbmNlU3VjY2Vzcyh0aGlzLmF0dGVuZGFuY2VTdGF0ZXMudmFsdWUsIG1lZXRpbmdJZClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmluRmxpZ2h0TWVldGluZ0lkcy5uZXh0KFxyXG4gICAgICAgICAgICBlbmRBdHRlbmRhbmNlQWN0aW9uKHRoaXMuaW5GbGlnaHRNZWV0aW5nSWRzLnZhbHVlLCBtZWV0aW5nSWQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAvLyBSZXRhaW4gcHJpb3IgYXR0ZW5kYW5jZSBzdGF0ZTsgb25seSBjbGVhciB0aGUgaW4tZmxpZ2h0IGZsYWcuXHJcbiAgICAgICAgICB0aGlzLmluRmxpZ2h0TWVldGluZ0lkcy5uZXh0KFxyXG4gICAgICAgICAgICBlbmRBdHRlbmRhbmNlQWN0aW9uKHRoaXMuaW5GbGlnaHRNZWV0aW5nSWRzLnZhbHVlLCBtZWV0aW5nSWQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExlYXZlcyBhIG1lZXRpbmcuIE1hcmtzIHRoZSBtZWV0aW5nIGluLWZsaWdodCAocmV0YWluaW5nIHRoZSBwcmlvclxyXG4gICAqIGRpc3BsYXllZCBzdGF0ZSksIHBvc3RzIHRocm91Z2ggYEh0dHBTZXJ2aWNlYCwgYXBwbGllcyB0aGVcclxuICAgKiBsZWF2ZS1tZWV0aW5nLXN1Y2Nlc3MgcmVkdWNlciBvbiBzdWNjZXNzLCBjbGVhcnMgdGhlIGluLWZsaWdodCBmbGFnIG9uXHJcbiAgICogY29tcGxldGlvbiwgYW5kIHJldGhyb3dzIHdoaWxlIHJldGFpbmluZyBwcmlvciBzdGF0ZSBvbiBmYWlsdXJlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZWV0aW5nSWQgLSBUaGUgbWVldGluZyB0byBsZWF2ZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPERhc2hib2FyZExpc3RSZXNwb25zZTx1bmtub3duPj59IFRoZSBhdHRlbmRhbmNlIHJlc3BvbnNlIGVudmVsb3BlLlxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICovXHJcbiAgbGVhdmVNZWV0aW5nKFxyXG4gICAgbWVldGluZ0lkOiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPERhc2hib2FyZExpc3RSZXNwb25zZTx1bmtub3duPj4ge1xyXG4gICAgdGhpcy5pbkZsaWdodE1lZXRpbmdJZHMubmV4dChcclxuICAgICAgYmVnaW5BdHRlbmRhbmNlQWN0aW9uKHRoaXMuaW5GbGlnaHRNZWV0aW5nSWRzLnZhbHVlLCBtZWV0aW5nSWQpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvYXR0ZW5kYW5jZS9sZWF2ZWAsIHsgbWVldGluZ0lkIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXR0ZW5kYW5jZVN0YXRlcy5uZXh0KFxyXG4gICAgICAgICAgICBhcHBseUxlYXZlTWVldGluZ1N1Y2Nlc3ModGhpcy5hdHRlbmRhbmNlU3RhdGVzLnZhbHVlLCBtZWV0aW5nSWQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5pbkZsaWdodE1lZXRpbmdJZHMubmV4dChcclxuICAgICAgICAgICAgZW5kQXR0ZW5kYW5jZUFjdGlvbih0aGlzLmluRmxpZ2h0TWVldGluZ0lkcy52YWx1ZSwgbWVldGluZ0lkKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgLy8gUmV0YWluIHByaW9yIGF0dGVuZGFuY2Ugc3RhdGU7IG9ubHkgY2xlYXIgdGhlIGluLWZsaWdodCBmbGFnLlxyXG4gICAgICAgICAgdGhpcy5pbkZsaWdodE1lZXRpbmdJZHMubmV4dChcclxuICAgICAgICAgICAgZW5kQXR0ZW5kYW5jZUFjdGlvbih0aGlzLmluRmxpZ2h0TWVldGluZ0lkcy52YWx1ZSwgbWVldGluZ0lkKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgc3luY2hyb25vdXMgc25hcHNob3Qgb2YgdGhlIHBlci1tZWV0aW5nIGF0dGVuZGFuY2Utc3RhdGUgbWFwLlxyXG4gICAqIEByZXR1cm4ge1JlY29yZDxzdHJpbmcsIEF0dGVuZGFuY2VTdGF0ZT59IFRoZSBjdXJyZW50IGF0dGVuZGFuY2Utc3RhdGUgbWFwLlxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0QXR0ZW5kYW5jZVN0YXRlc1NuYXBzaG90KCk6IFJlY29yZDxzdHJpbmcsIEF0dGVuZGFuY2VTdGF0ZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXR0ZW5kYW5jZVN0YXRlcy52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlZWRzIHRoZSBhdHRlbmRhbmNlLXN0YXRlIG1hcCBmcm9tIGEgZnJlc2hseSBsb2FkZWQgbGlzdCBvZiBldmVudHMsIHVzaW5nXHJcbiAgICogZWFjaCBtZWV0aW5nJ3MgYGF0dGVuZGFuY2VTdGF0ZWAgKGRlZmF1bHRpbmcgdG8gYE5PVF9BVFRFTkRJTkdgKS4gS2VlcHMgdGhlXHJcbiAgICogZGlzcGxheWVkIHN0YXRlIGluIHN5bmMgd2l0aCB0aGUgZGF0YSBsb2FkIHdpdGhvdXQgb3ZlcndyaXRpbmcgaWRzIHRoYXQgYXJlXHJcbiAgICogbm90IHByZXNlbnQgaW4gdGhlIG5ldyBsaXN0LlxyXG4gICAqIEBwYXJhbSB7VXBjb21pbmdFdmVudFtdfSBldmVudHMgLSBUaGUgbG9hZGVkIHVwY29taW5nIGV2ZW50cy5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZWVkQXR0ZW5kYW5jZVN0YXRlcyhldmVudHM6IFVwY29taW5nRXZlbnRbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV4dDogUmVjb3JkPHN0cmluZywgQXR0ZW5kYW5jZVN0YXRlPiA9IHtcclxuICAgICAgLi4udGhpcy5hdHRlbmRhbmNlU3RhdGVzLnZhbHVlLFxyXG4gICAgfTtcclxuICAgIGV2ZW50cy5mb3JFYWNoKChldmVudCkgPT4ge1xyXG4gICAgICAvLyBTdGFuZGFsb25lIG1lZXRpbmdzIGNhcnJ5IHRoZWlyIG93biBhdHRlbmRhbmNlIHN0YXRlIGtleWVkIGJ5IHRoZWlyIGlkXHJcbiAgICAgIC8vIChldmVudElkID09IG1lZXRpbmdJZCBmb3Igc3RhbmRhbG9uZSByb3dzKS5cclxuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09IFVwY29taW5nSXRlbUtpbmQuU1RBTkRBTE9ORV9NRUVUSU5HICYmIGV2ZW50LmV2ZW50SWQpIHtcclxuICAgICAgICBuZXh0W2V2ZW50LmV2ZW50SWRdID1cclxuICAgICAgICAgIGV2ZW50LmF0dGVuZGFuY2VTdGF0ZSA/PyBBdHRlbmRhbmNlU3RhdGUuTk9UX0FUVEVORElORztcclxuICAgICAgfVxyXG4gICAgICAoZXZlbnQubWVldGluZ3MgPz8gW10pLmZvckVhY2goKG1lZXRpbmcpID0+IHtcclxuICAgICAgICBpZiAobWVldGluZy5tZWV0aW5nSWQpIHtcclxuICAgICAgICAgIG5leHRbbWVldGluZy5tZWV0aW5nSWRdID1cclxuICAgICAgICAgICAgbWVldGluZy5hdHRlbmRhbmNlU3RhdGUgPz8gQXR0ZW5kYW5jZVN0YXRlLk5PVF9BVFRFTkRJTkc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5hdHRlbmRhbmNlU3RhdGVzLm5leHQobmV4dCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWVkcyB0aGUgYXR0ZW5kYW5jZS1zdGF0ZSBtYXAgZnJvbSBhIGxpc3Qgb2YgbWVldGluZyByb3dzLCB1c2luZyBlYWNoXHJcbiAgICogbWVldGluZydzIGBhdHRlbmRhbmNlU3RhdGVgIChkZWZhdWx0aW5nIHRvIGBOT1RfQVRURU5ESU5HYCkgd2l0aG91dFxyXG4gICAqIG92ZXJ3cml0aW5nIGlkcyBhYnNlbnQgZnJvbSB0aGUgbmV3IGxpc3QuIFNoYXJlZCBieSB0aGUgbGlzdCBsb2FkIGFuZCB0aGVcclxuICAgKiBwZXItZXZlbnQgZXhwYW5kIHNvIGZyZXNobHkgbG9hZGVkIGNoaWxkIG1lZXRpbmdzIHBpY2sgdXAgdGhlaXIgc3RhdGUuXHJcbiAgICogQHBhcmFtIHtNZWV0aW5nUm93W119IG1lZXRpbmdzIC0gVGhlIG1lZXRpbmcgcm93cyB0byBzZWVkIGZyb20uXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkU2VydmljZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2VlZEF0dGVuZGFuY2VTdGF0ZXNGcm9tTWVldGluZ3MobWVldGluZ3M6IE1lZXRpbmdSb3dbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV4dDogUmVjb3JkPHN0cmluZywgQXR0ZW5kYW5jZVN0YXRlPiA9IHtcclxuICAgICAgLi4udGhpcy5hdHRlbmRhbmNlU3RhdGVzLnZhbHVlLFxyXG4gICAgfTtcclxuICAgIG1lZXRpbmdzLmZvckVhY2goKG1lZXRpbmcpID0+IHtcclxuICAgICAgaWYgKG1lZXRpbmcubWVldGluZ0lkKSB7XHJcbiAgICAgICAgbmV4dFttZWV0aW5nLm1lZXRpbmdJZF0gPVxyXG4gICAgICAgICAgbWVldGluZy5hdHRlbmRhbmNlU3RhdGUgPz9cclxuICAgICAgICAgIG5leHRbbWVldGluZy5tZWV0aW5nSWRdID8/XHJcbiAgICAgICAgICBBdHRlbmRhbmNlU3RhdGUuTk9UX0FUVEVORElORztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmF0dGVuZGFuY2VTdGF0ZXMubmV4dChuZXh0KTtcclxuICB9XHJcbn1cclxuIl19
|
|
364
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9zZXJ2aWNlcy9kYXNoYm9hcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBRWYsVUFBVSxFQUNWLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQU1oRixPQUFPLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0sZ0NBQWdDLENBQUM7QUFXeEMsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsTUFBTSxvQ0FBb0MsQ0FBQztBQVc1QyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7OztBQWIvQix5RkFBeUY7QUFDekYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUM7QUFDdEMsMkNBQTJDO0FBQzNDLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUN4Qix1RUFBdUU7QUFDdkUsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFDOUIsc0VBQXNFO0FBQ3RFLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO0FBUW5DOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUE4QzNCO0lBQ0UsMENBQTBDO0lBQ2xDLFdBQXdCLENBQUMsNkNBQTZDOztRQUF0RSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQTVDakIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsRUFBRSxDQUFDLENBQUM7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YUFBYSxDQUFDO2lCQUM1RDtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLGdDQUFnQyxDQUFDLFFBQXNCO1FBQzdELE1BQU0sSUFBSSxHQUFvQztZQUM1QyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLO1NBQy9CLENBQUM7UUFDRixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO2dCQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztvQkFDckIsT0FBTyxDQUFDLGVBQWU7d0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO3dCQUN2QixlQUFlLENBQUMsYUFBYSxDQUFDO2FBQ2pDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7K0dBdlpVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgT2JzZXJ2YWJsZSxcclxuICBjYXRjaEVycm9yLFxyXG4gIG1hcCxcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgVXNlclBlcm1pc3Npb24gfSBmcm9tICdAaWVlZXNhLW5wbS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBBdHRlbmRhbmNlU3RhdGUgfSBmcm9tICcuLi9tb2RlbHMvYXR0ZW5kYW5jZS1zdGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IERhc2hib2FyZExpc3RSZXNwb25zZSB9IGZyb20gJy4uL21vZGVscy9kYXNoYm9hcmQtbGlzdC1yZXNwb25zZS5tb2RlbCc7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlY3Rpb25TdGF0ZSB9IGZyb20gJy4uL21vZGVscy9kYXNoYm9hcmQtc2VjdGlvbi1zdGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwUm93IH0gZnJvbSAnLi4vbW9kZWxzL2dyb3VwLXJvdy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgTXlHcm91cHNWaWV3LFxyXG4gIE15R3JvdXBWaWV3LFxyXG59IGZyb20gJy4uL21vZGVscy9teS1ncm91cHMtdmlldy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgVXBjb21pbmdFdmVudCxcclxuICBVcGNvbWluZ0l0ZW1LaW5kLFxyXG59IGZyb20gJy4uL21vZGVscy91cGNvbWluZy1ldmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IFVwY29taW5nU3VtbWFyeSB9IGZyb20gJy4uL21vZGVscy91cGNvbWluZy1zdW1tYXJ5Lm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBFdmVudE1lZXRpbmdEZXRhaWxQYXlsb2FkLFxyXG4gIEV2ZW50TWVldGluZ0xpc3RQYXlsb2FkLFxyXG59IGZyb20gJy4uL21vZGVscy9ldmVudC1tZWV0aW5nLWxpc3QtcGF5bG9hZC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgRXZlbnRNZWV0aW5nRGV0YWlsQm9keSxcclxuICBFdmVudE1lZXRpbmdEZXRhaWxSZXNwb25zZSxcclxuICBFdmVudE1lZXRpbmdMaXN0UmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2V2ZW50LW1lZXRpbmctbGlzdC1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBtYXBFdmVudE1lZXRpbmdEZXRhaWxzLFxyXG4gIG1hcEV2ZW50TWVldGluZ0xpc3QsXHJcbn0gZnJvbSAnLi4vdXRpbHMvZXZlbnQtbWVldGluZy1tYXBwZXIudXRpbCc7XHJcbmltcG9ydCB7IE1lZXRpbmdSb3cgfSBmcm9tICcuLi9tb2RlbHMvbWVldGluZy1yb3cubW9kZWwnO1xyXG5cclxuLyoqIEZhbGxiYWNrIGxhYmVsIGZvciBhbiBlbXB0eSBncm91cCB0eXBlIC8gbWVtYmVyIGxldmVsLCBtYXRjaGluZyB0aGUgTXkgR3JvdXBzIHRhYi4gKi9cclxuY29uc3QgVU5BU1NJR05FRF9MQUJFTCA9ICdVbmFzc2lnbmVkJztcclxuLyoqIFBsYWNlaG9sZGVyIGZvciBhbiBlbXB0eSBjZWxsIHZhbHVlLiAqL1xyXG5jb25zdCBFTVBUWV9WQUxVRSA9ICctJztcclxuLyoqIERlZmF1bHQgcGFnZSBzaXplIGZvciB0aGUgdG9wLWxldmVsIGhvbWUgZXZlbnRzLSYtbWVldGluZ3MgbGlzdC4gKi9cclxuY29uc3QgVVBDT01JTkdfUEFHRV9TSVpFID0gMTA7XHJcbi8qKiBEZWZhdWx0IHBhZ2Ugc2l6ZSBmb3IgYW4gZXZlbnQncyBkcmlsbC1kb3duIGNoaWxkLW1lZXRpbmcgbGlzdC4gKi9cclxuY29uc3QgRVZFTlRfTUVFVElOR1NfUEFHRV9TSVpFID0gNTtcclxuaW1wb3J0IHtcclxuICBhcHBseUxlYXZlTWVldGluZ1N1Y2Nlc3MsXHJcbiAgYXBwbHlMb2dBdHRlbmRhbmNlU3VjY2VzcyxcclxuICBiZWdpbkF0dGVuZGFuY2VBY3Rpb24sXHJcbiAgZW5kQXR0ZW5kYW5jZUFjdGlvbixcclxufSBmcm9tICcuL2F0dGVuZGFuY2UtcmVkdWNlcnMnO1xyXG5cclxuLyoqXHJcbiAqIERhc2hib2FyZFNlcnZpY2UgaXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBkYXNoYm9hcmQgbGFuZGluZ1xyXG4gKiBwYWdlJ3MgZGF0YSBhbmQgYXR0ZW5kYW5jZSBzdGF0ZS4gSXQgbWlycm9ycyB0aGUgYGV2ZW50cy1hbmQtbWVldGluZ3NgXHJcbiAqIHNlcnZpY2UgY29udmVudGlvbnM6IGl0IGlzIGEgYHByb3ZpZGVkSW46ICdyb290J2Agc2luZ2xldG9uLCBob2xkcyB0aGUgaG9zdFxyXG4gKiBgYXBpQmFzZVVybGAgLyBgdXNlclBlcm1pc3Npb25zYCBzZXQgdmlhIHtAbGluayBzZXRBcHBDb25maWd9LCBvd25zIGl0cyBzdGF0ZVxyXG4gKiB2aWEgYEJlaGF2aW9yU3ViamVjdGBzIGV4cG9zZWQgYXMgb2JzZXJ2YWJsZXMsIGFuZCByZWFjaGVzIHRoZSBiYWNrZW5kIG9ubHlcclxuICogdGhyb3VnaCB0aGUgc2hhcmVkIGBIdHRwU2VydmljZWAgZnJvbSBgQGllZWVzYS1ucG0vdXRpbGl0eWAgKG5ldmVyXHJcbiAqIGBIdHRwQ2xpZW50YCBkaXJlY3RseSkuXHJcbiAqXHJcbiAqIFRoZSB1cGNvbWluZy1ldmVudHMgbG9hZCBjYWxscyB0aGUgcmVhbCBgUE9TVCAvbWVldGluZ3MvZXZlbnRzQW5kTWVldGluZ3NgXHJcbiAqIGVuZHBvaW50IChjaGlsZCBtZWV0aW5ncyBhcmUgbGF6aWx5IGxvYWRlZCBwZXItZXZlbnQgdmlhXHJcbiAqIGBQT1NUIC9tZWV0aW5ncy9tZWV0aW5nc0RldGFpbHNgKTsgdGhlIGdyb3VwcyBsb2FkIGNhbGxzIGBHRVRcclxuICogL2dyb3Vwcy9teS1ncm91cHNgLiBUaGUgYXR0ZW5kYW5jZSBhY3Rpb25zIGNvbXBvc2UgdGhlIHB1cmUgcmVkdWNlcnMgZnJvbVxyXG4gKiBgYXR0ZW5kYW5jZS1yZWR1Y2Vycy50c2Agc28gdGhlIGRpc3BsYXllZCBgQXR0ZW5kYW5jZVN0YXRlYCBvbmx5IGFkdmFuY2VzIG9uIGFcclxuICogc3VjY2Vzc2Z1bCByZXNvbHV0aW9uIGFuZCB0aGUgcHJpb3Igc3RhdGUgaXMgcmV0YWluZWQgb24gZmFpbHVyZS5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgRGFzaGJvYXJkU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhc2hib2FyZFNlcnZpY2Uge1xyXG4gIGFwaUJhc2VVcmwhOiBzdHJpbmc7XHJcbiAgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSB1cGNvbWluZ0V2ZW50cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXBjb21pbmdFdmVudFtdPihbXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB1cGNvbWluZ1N1bW1hcnkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVwY29taW5nU3VtbWFyeT4oe1xyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gICAgZXZlbnRDb3VudDogMCxcclxuICAgIHN0YW5kYWxvbmVNZWV0aW5nQ291bnQ6IDAsXHJcbiAgICBzdGFuZGFsb25lTWVldGluZ3NPcGVuRm9yQXR0ZW5kYW5jZUNvdW50OiAwLFxyXG4gIH0pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JvdXBzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHcm91cFJvd1tdPihbXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB1cGNvbWluZ1N0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXNoYm9hcmRTZWN0aW9uU3RhdGU+KFxyXG4gICAgRGFzaGJvYXJkU2VjdGlvblN0YXRlLkxPQURJTkdcclxuICApO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JvdXBzU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhc2hib2FyZFNlY3Rpb25TdGF0ZT4oXHJcbiAgICBEYXNoYm9hcmRTZWN0aW9uU3RhdGUuTE9BRElOR1xyXG4gICk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhdHRlbmRhbmNlU3RhdGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcclxuICAgIFJlY29yZDxzdHJpbmcsIEF0dGVuZGFuY2VTdGF0ZT5cclxuICA+KHt9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGluRmxpZ2h0TWVldGluZ0lkcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XHJcbiAgICBSZWFkb25seVNldDxzdHJpbmc+XHJcbiAgPihuZXcgU2V0PHN0cmluZz4oKSk7XHJcblxyXG4gIC8qKiBFbWl0cyB0aGUgbGlzdCBvZiB0aGUgdXNlcidzIHVwY29taW5nIGV2ZW50cy4gKi9cclxuICB1cGNvbWluZ0V2ZW50cyQ6IE9ic2VydmFibGU8VXBjb21pbmdFdmVudFtdPiA9XHJcbiAgICB0aGlzLnVwY29taW5nRXZlbnRzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8qKiBFbWl0cyB0aGUgc2VydmVyLXByb3ZpZGVkIHN1bW1hcnkgY291bnRzIChwYWdpbmF0b3IgbGVuZ3RoICsgY29sbGFwc2VkLXN1bW1hcnkgY291bnRzKS4gKi9cclxuICB1cGNvbWluZ1N1bW1hcnkkOiBPYnNlcnZhYmxlPFVwY29taW5nU3VtbWFyeT4gPVxyXG4gICAgdGhpcy51cGNvbWluZ1N1bW1hcnkuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLyoqIEVtaXRzIHRoZSBsaXN0IG9mIHRoZSB1c2VyJ3MgZ3JvdXBzLiAqL1xyXG4gIGdyb3VwcyQ6IE9ic2VydmFibGU8R3JvdXBSb3dbXT4gPSB0aGlzLmdyb3Vwcy5hc09ic2VydmFibGUoKTtcclxuICAvKiogRW1pdHMgdGhlIGxvYWQvZW1wdHkvZXJyb3Igc3RhdGUgb2YgdGhlIHVwY29taW5nLWV2ZW50cyBzZWN0aW9uLiAqL1xyXG4gIHVwY29taW5nU3RhdGUkOiBPYnNlcnZhYmxlPERhc2hib2FyZFNlY3Rpb25TdGF0ZT4gPVxyXG4gICAgdGhpcy51cGNvbWluZ1N0YXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8qKiBFbWl0cyB0aGUgbG9hZC9lbXB0eS9lcnJvciBzdGF0ZSBvZiB0aGUgZ3JvdXBzIHNlY3Rpb24uICovXHJcbiAgZ3JvdXBzU3RhdGUkOiBPYnNlcnZhYmxlPERhc2hib2FyZFNlY3Rpb25TdGF0ZT4gPVxyXG4gICAgdGhpcy5ncm91cHNTdGF0ZS5hc09ic2VydmFibGUoKTtcclxuICAvKiogRW1pdHMgdGhlIHBlci1tZWV0aW5nIGF0dGVuZGFuY2Utc3RhdGUgbWFwLiAqL1xyXG4gIGF0dGVuZGFuY2VTdGF0ZXMkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIEF0dGVuZGFuY2VTdGF0ZT4+ID1cclxuICAgIHRoaXMuYXR0ZW5kYW5jZVN0YXRlcy5hc09ic2VydmFibGUoKTtcclxuICAvKiogRW1pdHMgdGhlIHNldCBvZiBtZWV0aW5nIGlkcyB3aXRoIGFuIGF0dGVuZGFuY2UgYWN0aW9uIGluIGZsaWdodC4gKi9cclxuICBpbkZsaWdodE1lZXRpbmdJZHMkOiBPYnNlcnZhYmxlPFJlYWRvbmx5U2V0PHN0cmluZz4+ID1cclxuICAgIHRoaXMuaW5GbGlnaHRNZWV0aW5nSWRzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBTdG9yZXMgdGhlIGhvc3Qtc3VwcGxpZWQgQVBJIGJhc2UgVVJMIGFuZCB1c2VyIHBlcm1pc3Npb25zIHVzZWQgdG8gYnVpbGRcclxuICAgKiByZXF1ZXN0IFVSTHMgYW5kIGdhdGUgcGVybWlzc2lvbi1jb250cm9sbGVkIGFjdGlvbnMuIE1pcnJvcnMgdGhlXHJcbiAgICogYGV2ZW50cy1hbmQtbWVldGluZ3NgIHNlcnZpY2UgYHNldEFwcENvbmZpZ2AuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwaUJhc2VVUkwgLSBUaGUgaG9zdCBhcHBsaWNhdGlvbidzIEFQSSBiYXNlIFVSTC5cclxuICAgKiBAcGFyYW0ge1VzZXJQZXJtaXNzaW9uW119IHVzZXJQZXJtaXNzaW9ucyAtIFRoZSBzaWduZWQtaW4gdXNlcidzIHBlcm1pc3Npb25zLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBzZXRBcHBDb25maWcoYXBpQmFzZVVSTDogc3RyaW5nLCB1c2VyUGVybWlzc2lvbnM6IFVzZXJQZXJtaXNzaW9uW10pOiB2b2lkIHtcclxuICAgIHRoaXMuYXBpQmFzZVVybCA9IGFwaUJhc2VVUkw7XHJcbiAgICB0aGlzLnVzZXJQZXJtaXNzaW9ucyA9IHVzZXJQZXJtaXNzaW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIHRoZSB1c2VyJ3MgY29tYmluZWQgdXBjb21pbmcgZXZlbnRzICYgc3RhbmRhbG9uZSBtZWV0aW5ncyBmcm9tIHRoZVxyXG4gICAqIGJhY2tlbmQgdmlhIGBQT1NUIHthcGlCYXNlVXJsfS9tZWV0aW5ncy9ob21lL2V2ZW50c0FuZE1lZXRpbmdzYC4gVGhlIHJlc3BvbnNlXHJcbiAgICogKHdoaWNoIGNhcnJpZXMgcGVyLWV2ZW50IGB0b3RhbE1lZXRpbmdDb3VudGAgLyBgbWVldGluZ3NPcGVuRm9yQXR0ZW5kYW5jZUNvdW50YFxyXG4gICAqIGFuZCBwZXItc3RhbmRhbG9uZSBgYXR0ZW5kYW5jZVN0YXRlYCBkaXJlY3RseSkgaXMgbWFwcGVkIGludG8gdGhlIGRhc2hib2FyZFxyXG4gICAqIHZpZXcgbW9kZWxzIChTVEFOREFMT05FX01FRVRJTkcgcm93cyBvcmRlcmVkIGxhc3QpLCB0aGUgcGVyLW1lZXRpbmdcclxuICAgKiBhdHRlbmRhbmNlLXN0YXRlIG1hcCBpcyBzZWVkZWQsIGFuZCB0aGUgc2VjdGlvbiBhZHZhbmNlcyB0aHJvdWdoXHJcbiAgICogTE9BRElORyDihpIgTE9BREVEL0VNUFRZIG9uIHN1Y2Nlc3MuIGBhcHBJZGAgaXMgdGFrZW4gZnJvbSB0aGUgSldULCBzbyBpdCBpc1xyXG4gICAqIG5vdCBzZW50LiBGb2xsb3dzIHRoZSBzaGFyZWQgYHBpcGUobWFwLCBjYXRjaEVycm9yKHRocm93KSlgIHBhdHRlcm4uXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFdmVudE1lZXRpbmdMaXN0UmVzcG9uc2U+fSBUaGUgaG9tZSBldmVudHMtJi1tZWV0aW5ncyByZXNwb25zZSBlbnZlbG9wZS5cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkU2VydmljZVxyXG4gICAqL1xyXG4gIGxvYWRVcGNvbWluZ0V2ZW50cyhcclxuICAgIHBhZ2UgPSAxLFxyXG4gICAgc2l6ZSA9IFVQQ09NSU5HX1BBR0VfU0laRVxyXG4gICk6IE9ic2VydmFibGU8RXZlbnRNZWV0aW5nTGlzdFJlc3BvbnNlPiB7XHJcbiAgICB0aGlzLnVwY29taW5nU3RhdGUubmV4dChEYXNoYm9hcmRTZWN0aW9uU3RhdGUuTE9BRElORyk7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBFdmVudE1lZXRpbmdMaXN0UGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIHBhZ2UsXHJcbiAgICAgICAgc2l6ZSxcclxuICAgICAgICBzb3J0Q29sdW1uOiAnc3RhcnREYXRlVGltZScsXHJcbiAgICAgICAgYXNjZW5kaW5nT3JkZXI6IHRydWUsXHJcbiAgICAgICAgc2VhcmNoVGVybTogbnVsbCxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9tZWV0aW5ncy9ob21lL2V2ZW50c0FuZE1lZXRpbmdzYCwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZTogRXZlbnRNZWV0aW5nTGlzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBib2R5ID0gcmVzcG9uc2U/LmJvZHk7XHJcbiAgICAgICAgICBjb25zdCBldmVudHMgPSBtYXBFdmVudE1lZXRpbmdMaXN0KGJvZHk/LmV2ZW50TWVldGluZ0xpc3QgPz8gW10pO1xyXG4gICAgICAgICAgdGhpcy51cGNvbWluZ0V2ZW50cy5uZXh0KGV2ZW50cyk7XHJcbiAgICAgICAgICAvLyBEcml2ZSBwYWdpbmF0b3IgbGVuZ3RoICsgY29sbGFwc2VkLXN1bW1hcnkgY291bnRzIGZyb20gdGhlIHNlcnZlclxyXG4gICAgICAgICAgLy8gcmVzcG9uc2Ug4oCUIG5ldmVyIGNvbXB1dGVkL2hhcmRjb2RlZCBvbiB0aGUgZnJvbnRlbmQuXHJcbiAgICAgICAgICB0aGlzLnVwY29taW5nU3VtbWFyeS5uZXh0KHtcclxuICAgICAgICAgICAgdG90YWxSZWNvcmRzOiBib2R5Py50b3RhbFJlY29yZHMgPz8gZXZlbnRzLmxlbmd0aCxcclxuICAgICAgICAgICAgZXZlbnRDb3VudDogYm9keT8uZXZlbnRDb3VudCA/PyAwLFxyXG4gICAgICAgICAgICBzdGFuZGFsb25lTWVldGluZ0NvdW50OiBib2R5Py5zdGFuZGFsb25lTWVldGluZ0NvdW50ID8/IDAsXHJcbiAgICAgICAgICAgIHN0YW5kYWxvbmVNZWV0aW5nc09wZW5Gb3JBdHRlbmRhbmNlQ291bnQ6XHJcbiAgICAgICAgICAgICAgYm9keT8uc3RhbmRhbG9uZU1lZXRpbmdzT3BlbkZvckF0dGVuZGFuY2VDb3VudCA/PyAwLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNlZWRBdHRlbmRhbmNlU3RhdGVzKGV2ZW50cyk7XHJcbiAgICAgICAgICB0aGlzLnVwY29taW5nU3RhdGUubmV4dChcclxuICAgICAgICAgICAgKGJvZHk/LnRvdGFsUmVjb3JkcyA/PyBldmVudHMubGVuZ3RoKSA+IDBcclxuICAgICAgICAgICAgICA/IERhc2hib2FyZFNlY3Rpb25TdGF0ZS5MT0FERURcclxuICAgICAgICAgICAgICA6IERhc2hib2FyZFNlY3Rpb25TdGF0ZS5FTVBUWVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGNvbWluZ1N0YXRlLm5leHQoRGFzaGJvYXJkU2VjdGlvblN0YXRlLkVSUk9SKTtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXppbHkgbG9hZHMgKGFuZCBwYWdpbmF0ZXMpIHRoZSBjaGlsZCBtZWV0aW5ncyBvZiBhbiBFVkVOVCB2aWFcclxuICAgKiBgUE9TVCB7YXBpQmFzZVVybH0vbWVldGluZ3MvaG9tZS9ldmVudHMve2V2ZW50SWR9L21lZXRpbmdzYCAodGhlIGRyaWxsLWRvd25cclxuICAgKiBlbmRwb2ludCkuIFRoZSBgZXZlbnRJZGAgaXMgc2VudCBpbiB0aGUgVVJMIHBhdGg7IG9ubHkgYHBhZ2VgIC8gYHNpemVgIGFyZVxyXG4gICAqIHVzZWQgaW4gdGhlIGJvZHkuIE9uIHN1Y2Nlc3MgdGhlIGRyaWxsLWRvd24gYm9keSAoZGF5IGluZGljYXRvciwgY291bnRzLFxyXG4gICAqIHBhZ2luYXRvciB0b3RhbCwgYW5kIHRoZSBwYWdlZCBtZWV0aW5ncykgaXMgbWVyZ2VkIG9udG8gdGhlIG1hdGNoaW5nIGV2ZW50LFxyXG4gICAqIGFuZCB0aGUgcGVyLW1lZXRpbmcgYXR0ZW5kYW5jZS1zdGF0ZSBtYXAgaXMgZXh0ZW5kZWQuIEVhY2ggZXZlbnQgcGFnaW5hdGVzXHJcbiAgICogaW5kZXBlbmRlbnRseS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRJZCAtIFRoZSBldmVudCB3aG9zZSBtZWV0aW5ncyB0byBsb2FkLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbcGFnZT0xXSAtIFRoZSBvbmUtYmFzZWQgcGFnZSB0byByZXF1ZXN0LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT1FVkVOVF9NRUVUSU5HU19QQUdFX1NJWkVdIC0gVGhlIHBhZ2Ugc2l6ZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEV2ZW50TWVldGluZ0RldGFpbFJlc3BvbnNlPn0gVGhlIGRyaWxsLWRvd24gcmVzcG9uc2UgZW52ZWxvcGUuXHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBsb2FkRXZlbnRNZWV0aW5ncyhcclxuICAgIGV2ZW50SWQ6IHN0cmluZyxcclxuICAgIHBhZ2UgPSAxLFxyXG4gICAgc2l6ZSA9IEVWRU5UX01FRVRJTkdTX1BBR0VfU0laRVxyXG4gICk6IE9ic2VydmFibGU8RXZlbnRNZWV0aW5nRGV0YWlsUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IEV2ZW50TWVldGluZ0RldGFpbFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHsgcGFnZSwgc2l6ZSB9LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L21lZXRpbmdzL2hvbWUvZXZlbnRzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KFxyXG4gICAgICAgICAgZXZlbnRJZFxyXG4gICAgICAgICl9L21lZXRpbmdzYCxcclxuICAgICAgICBwYXlsb2FkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZTogRXZlbnRNZWV0aW5nRGV0YWlsUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGJvZHkgPSByZXNwb25zZT8uYm9keTtcclxuICAgICAgICAgIGNvbnN0IG1lZXRpbmdzID0gbWFwRXZlbnRNZWV0aW5nRGV0YWlscyhib2R5Py5tZWV0aW5ncyA/PyBbXSwgZXZlbnRJZCk7XHJcbiAgICAgICAgICB0aGlzLm1lcmdlRXZlbnRNZWV0aW5ncyhldmVudElkLCBtZWV0aW5ncywgYm9keSk7XHJcbiAgICAgICAgICB0aGlzLnNlZWRBdHRlbmRhbmNlU3RhdGVzRnJvbU1lZXRpbmdzKG1lZXRpbmdzKTtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lcmdlcyBhIGZyZXNobHkgbG9hZGVkIGRyaWxsLWRvd24gcGFnZSBvbnRvIHRoZSBtYXRjaGluZyBldmVudCBpbiB0aGVcclxuICAgKiBgdXBjb21pbmdFdmVudHNgIGxpc3Q6IHRoZSBwYWdlZCBgbWVldGluZ3NgLCB0aGUgcGFnaW5hdG9yIHRvdGFsXHJcbiAgICogKGB0b3RhbFJlY29yZHNgID0gdGhlIHVzZXIncyB0aWVkIHVwY29taW5nIG1lZXRpbmdzKSwgdGhlIGV2ZW50J3MgZnVsbFxyXG4gICAqIGB0b3RhbE1lZXRpbmdDb3VudGAgLyBgbWVldGluZ3NPcGVuRm9yQXR0ZW5kYW5jZUNvdW50YCwgYW5kIHRoZVxyXG4gICAqIFwiRGF5IFggb2YgWVwiIGluZGljYXRvciBkZXJpdmVkIGZyb20gYGN1cnJlbnREYXlgIC8gYHRvdGFsRGF5c2AuIExlYXZlcyBhbGxcclxuICAgKiBvdGhlciBldmVudHMgdW50b3VjaGVkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudElkIC0gVGhlIGV2ZW50IHRvIG1lcmdlIG1lZXRpbmdzIG9udG8uXHJcbiAgICogQHBhcmFtIHtNZWV0aW5nUm93W119IG1lZXRpbmdzIC0gVGhlIG1hcHBlZCBkcmlsbC1kb3duIG1lZXRpbmdzIGZvciB0aGUgcGFnZS5cclxuICAgKiBAcGFyYW0ge0V2ZW50TWVldGluZ0RldGFpbEJvZHkgfCB1bmRlZmluZWR9IGJvZHkgLSBUaGUgZHJpbGwtZG93biByZXNwb25zZSBib2R5LlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBwcml2YXRlIG1lcmdlRXZlbnRNZWV0aW5ncyhcclxuICAgIGV2ZW50SWQ6IHN0cmluZyxcclxuICAgIG1lZXRpbmdzOiBNZWV0aW5nUm93W10sXHJcbiAgICBib2R5OiBFdmVudE1lZXRpbmdEZXRhaWxCb2R5IHwgdW5kZWZpbmVkXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCB0b3RhbFJlY29yZHMgPSBib2R5Py50b3RhbFJlY29yZHMgPz8gbWVldGluZ3MubGVuZ3RoO1xyXG4gICAgY29uc3QgdG90YWxNZWV0aW5nQ291bnQgPSBib2R5Py50b3RhbE1lZXRpbmdDb3VudCA/PyB0b3RhbFJlY29yZHM7XHJcbiAgICBjb25zdCBvcGVuRm9yQXR0ZW5kYW5jZUNvdW50ID0gYm9keT8ubWVldGluZ3NPcGVuRm9yQXR0ZW5kYW5jZUNvdW50ID8/IDA7XHJcbiAgICBjb25zdCBjdXJyZW50RGF5ID0gYm9keT8uY3VycmVudERheTtcclxuICAgIGNvbnN0IHRvdGFsRGF5cyA9IGJvZHk/LnRvdGFsRGF5cztcclxuICAgIGNvbnN0IGRheUluZGljYXRvciA9XHJcbiAgICAgIGN1cnJlbnREYXkgJiYgdG90YWxEYXlzID8gYERheSAke2N1cnJlbnREYXl9IG9mICR7dG90YWxEYXlzfWAgOiAnJztcclxuICAgIGNvbnN0IG5leHQgPSB0aGlzLnVwY29taW5nRXZlbnRzLnZhbHVlLm1hcCgoZXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50LmV2ZW50SWQgIT09IGV2ZW50SWQpIHtcclxuICAgICAgICByZXR1cm4gZXZlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5ldmVudCxcclxuICAgICAgICBtZWV0aW5ncyxcclxuICAgICAgICAvLyBQYWdpbmF0b3IgbGVuZ3RoID0gY291bnQgb2YgdGhlIHVzZXIncyB0aWVkIHVwY29taW5nIG1lZXRpbmdzLlxyXG4gICAgICAgIG1lZXRpbmdQYWdlVG90YWw6IHRvdGFsUmVjb3JkcyxcclxuICAgICAgICBtZWV0aW5nQ291bnQ6IHRvdGFsTWVldGluZ0NvdW50LFxyXG4gICAgICAgIG9wZW5Gb3JBdHRlbmRhbmNlQ291bnQsXHJcbiAgICAgICAgZGF5SW5kaWNhdG9yOiBkYXlJbmRpY2F0b3IgfHwgZXZlbnQuZGF5SW5kaWNhdG9yLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwY29taW5nRXZlbnRzLm5leHQobmV4dCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyB0aGUgdXNlcidzIGdyb3VwcywgZHJpdmluZyB0aGUgZ3JvdXBzIHNlY3Rpb24gdGhyb3VnaFxyXG4gICAqIExPQURJTkcg4oaSIExPQURFRC9FTVBUWSBvbiBzdWNjZXNzIGFuZCBsZWF2aW5nIHRoZSBjYWxsZXIgdG8gc2V0IEVSUk9SIG9uXHJcbiAgICogZmFpbHVyZS4gRm9sbG93cyB0aGUgYHBpcGUobWFwLCBjYXRjaEVycm9yKHRocm93KSlgIHBhdHRlcm4uXHJcbiAgICpcclxuICAgKiBUT0RPOiBSZXBsYWNlIG1vY2sgd2l0aCByZWFsIEFQSSBjYWxsIHdoZW4gQkUgaXMgcmVhZHlcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPERhc2hib2FyZExpc3RSZXNwb25zZTxHcm91cFJvd1tdPj59IFRoZSBncm91cHMgcmVzcG9uc2UgZW52ZWxvcGUuXHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBsb2FkR3JvdXBzKCk6IE9ic2VydmFibGU8RGFzaGJvYXJkTGlzdFJlc3BvbnNlPE15R3JvdXBzVmlldz4+IHtcclxuICAgIHRoaXMuZ3JvdXBzU3RhdGUubmV4dChEYXNoYm9hcmRTZWN0aW9uU3RhdGUuTE9BRElORyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9teS1ncm91cHNgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBEYXNoYm9hcmRMaXN0UmVzcG9uc2U8TXlHcm91cHNWaWV3PikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZ3JvdXBzID0gKHJlc3BvbnNlPy5ib2R5Py5ncm91cHMgPz8gW10pLm1hcCgoZ3JvdXApID0+XHJcbiAgICAgICAgICAgIHRoaXMubWFwR3JvdXAoZ3JvdXApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5ncm91cHMubmV4dChncm91cHMpO1xyXG4gICAgICAgICAgdGhpcy5ncm91cHNTdGF0ZS5uZXh0KFxyXG4gICAgICAgICAgICBncm91cHMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgID8gRGFzaGJvYXJkU2VjdGlvblN0YXRlLkxPQURFRFxyXG4gICAgICAgICAgICAgIDogRGFzaGJvYXJkU2VjdGlvblN0YXRlLkVNUFRZXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc1N0YXRlLm5leHQoRGFzaGJvYXJkU2VjdGlvblN0YXRlLkVSUk9SKTtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYXBzIGEgYmFja2VuZCB7QGxpbmsgTXlHcm91cFZpZXd9IHRvIHRoZSB0YWJsZS1mYWNpbmcge0BsaW5rIEdyb3VwUm93fS5cclxuICAgKiBNaXJyb3JzIHRoZSBNeSBHcm91cHMgcHJvZmlsZSB0YWI6IHRoZSB0eXBlIGZhbGxzIGJhY2sgdG8gXCJVbmFzc2lnbmVkXCIgd2hlblxyXG4gICAqIGBncm91cFR5cGVOYW1lYCBpcyBudWxsLCBhZmZpbGlhdGlvbnMgYXJlIGNvbW1hLWpvaW5lZCwgZW1wdHkgb2ZmaWNlciByb2xlIC9cclxuICAgKiBhZmZpbGlhdGlvbiByZW5kZXIgYXMgYSBwbGFjZWhvbGRlciwgYW5kIGEgYmxhbmsgbWVtYmVyIGxldmVsIGJlY29tZXNcclxuICAgKiBcIlVuYXNzaWduZWRcIiAocmVuZGVyZWQgYXMgdGhlIHdhcm5pbmcgcGlsbCBieSB0aGUgWW91ciBHcm91cHMgY29tcG9uZW50KS5cclxuICAgKiBAcGFyYW0ge015R3JvdXBWaWV3fSBncm91cCAtIFRoZSBiYWNrZW5kIGdyb3VwIHZpZXcuXHJcbiAgICogQHJldHVybiB7R3JvdXBSb3d9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBwcml2YXRlIG1hcEdyb3VwKGdyb3VwOiBNeUdyb3VwVmlldyk6IEdyb3VwUm93IHtcclxuICAgIC8vIFRoZSBiYWNrZW5kIHJldHVybnMgb2ZmaWNlciByb2xlcyBhcyBhbiBgb2ZmaWNlcmAgYXJyYXkgb2ZcclxuICAgIC8vIHsgb2ZmaWNlcklkLCBvZmZpY2VyTmFtZSB9LiBKb2luIHRoZSBuYW1lcyBmb3IgdGhlIE9mZmljZXIgUm9sZSBjb2x1bW5cclxuICAgIC8vIChlLmcuIFwiQ2hhaXJcIiBvciBcIkNoYWlyLCBWaWNlIENoYWlyXCIpOyBzaG93IHRoZSBwbGFjZWhvbGRlciB3aGVuIGVtcHR5LlxyXG4gICAgY29uc3Qgb2ZmaWNlclJvbGUgPVxyXG4gICAgICAoZ3JvdXAub2ZmaWNlciA/PyBbXSlcclxuICAgICAgICAubWFwKChvZmZpY2VyKSA9PiBvZmZpY2VyPy5vZmZpY2VyTmFtZT8udHJpbSgpKVxyXG4gICAgICAgIC5maWx0ZXIoKG5hbWUpID0+ICEhbmFtZSlcclxuICAgICAgICAuam9pbignLCAnKSB8fCBFTVBUWV9WQUxVRTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBncm91cElkOiBncm91cC5ncm91cElkLFxyXG4gICAgICBncm91cDogZ3JvdXAuZ3JvdXBOYW1lLFxyXG4gICAgICB0eXBlOiBncm91cC5ncm91cFR5cGVOYW1lIHx8IGdyb3VwLmdyb3VwVHlwZSB8fCBVTkFTU0lHTkVEX0xBQkVMLFxyXG4gICAgICBvZmZpY2VyUm9sZSxcclxuICAgICAgYWZmaWxpYXRpb246IGdyb3VwLmFmZmlsaWF0aW9ucz8uam9pbignLCAnKSB8fCBFTVBUWV9WQUxVRSxcclxuICAgICAgbWVtYmVyTGV2ZWw6IGdyb3VwLm1lbWJlckxldmVsPy50cmltKCkgfHwgVU5BU1NJR05FRF9MQUJFTCxcclxuICAgICAgLy8gQ2FycnkgdGhlIGFuY2VzdG9yIGhpZXJhcmNoeSB0aHJvdWdoIGZvciB0aGUgZXhwYW5kYWJsZSBoaWVyYXJjaHkgcm93cy5cclxuICAgICAgaGllcmFyY2h5OiBncm91cC5oaWVyYXJjaHkgPz8gW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ncyBhdHRlbmRhbmNlIGZvciBhIG1lZXRpbmcuIE1hcmtzIHRoZSBtZWV0aW5nIGluLWZsaWdodCAocmV0YWluaW5nIHRoZVxyXG4gICAqIHByaW9yIGRpc3BsYXllZCBzdGF0ZSksIHBvc3RzIHRocm91Z2ggYEh0dHBTZXJ2aWNlYCwgYXBwbGllcyB0aGVcclxuICAgKiBsb2ctYXR0ZW5kYW5jZS1zdWNjZXNzIHJlZHVjZXIgb24gc3VjY2VzcywgY2xlYXJzIHRoZSBpbi1mbGlnaHQgZmxhZyBvblxyXG4gICAqIGNvbXBsZXRpb24sIGFuZCByZXRocm93cyB3aGlsZSByZXRhaW5pbmcgcHJpb3Igc3RhdGUgb24gZmFpbHVyZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVldGluZ0lkIC0gVGhlIG1lZXRpbmcgdG8gbG9nIGF0dGVuZGFuY2UgZm9yLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RGFzaGJvYXJkTGlzdFJlc3BvbnNlPHVua25vd24+Pn0gVGhlIGF0dGVuZGFuY2UgcmVzcG9uc2UgZW52ZWxvcGUuXHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZFNlcnZpY2VcclxuICAgKi9cclxuICBsb2dBdHRlbmRhbmNlKFxyXG4gICAgbWVldGluZ0lkOiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPERhc2hib2FyZExpc3RSZXNwb25zZTx1bmtub3duPj4ge1xyXG4gICAgdGhpcy5pbkZsaWdodE1lZXRpbmdJZHMubmV4dChcclxuICAgICAgYmVnaW5BdHRlbmRhbmNlQWN0aW9uKHRoaXMuaW5GbGlnaHRNZWV0aW5nSWRzLnZhbHVlLCBtZWV0aW5nSWQpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvYXR0ZW5kYW5jZS9sb2dgLCB7IG1lZXRpbmdJZCB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmF0dGVuZGFuY2VTdGF0ZXMubmV4dChcclxuICAgICAgICAgICAgYXBwbHlMb2dBdHRlbmRhbmNlU3VjY2Vzcyh0aGlzLmF0dGVuZGFuY2VTdGF0ZXMudmFsdWUsIG1lZXRpbmdJZClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmluRmxpZ2h0TWVldGluZ0lkcy5uZXh0KFxyXG4gICAgICAgICAgICBlbmRBdHRlbmRhbmNlQWN0aW9uKHRoaXMuaW5GbGlnaHRNZWV0aW5nSWRzLnZhbHVlLCBtZWV0aW5nSWQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAvLyBSZXRhaW4gcHJpb3IgYXR0ZW5kYW5jZSBzdGF0ZTsgb25seSBjbGVhciB0aGUgaW4tZmxpZ2h0IGZsYWcuXHJcbiAgICAgICAgICB0aGlzLmluRmxpZ2h0TWVldGluZ0lkcy5uZXh0KFxyXG4gICAgICAgICAgICBlbmRBdHRlbmRhbmNlQWN0aW9uKHRoaXMuaW5GbGlnaHRNZWV0aW5nSWRzLnZhbHVlLCBtZWV0aW5nSWQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExlYXZlcyBhIG1lZXRpbmcuIE1hcmtzIHRoZSBtZWV0aW5nIGluLWZsaWdodCAocmV0YWluaW5nIHRoZSBwcmlvclxyXG4gICAqIGRpc3BsYXllZCBzdGF0ZSksIHBvc3RzIHRocm91Z2ggYEh0dHBTZXJ2aWNlYCwgYXBwbGllcyB0aGVcclxuICAgKiBsZWF2ZS1tZWV0aW5nLXN1Y2Nlc3MgcmVkdWNlciBvbiBzdWNjZXNzLCBjbGVhcnMgdGhlIGluLWZsaWdodCBmbGFnIG9uXHJcbiAgICogY29tcGxldGlvbiwgYW5kIHJldGhyb3dzIHdoaWxlIHJldGFpbmluZyBwcmlvciBzdGF0ZSBvbiBmYWlsdXJlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZWV0aW5nSWQgLSBUaGUgbWVldGluZyB0byBsZWF2ZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPERhc2hib2FyZExpc3RSZXNwb25zZTx1bmtub3duPj59IFRoZSBhdHRlbmRhbmNlIHJlc3BvbnNlIGVudmVsb3BlLlxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICovXHJcbiAgbGVhdmVNZWV0aW5nKFxyXG4gICAgbWVldGluZ0lkOiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPERhc2hib2FyZExpc3RSZXNwb25zZTx1bmtub3duPj4ge1xyXG4gICAgdGhpcy5pbkZsaWdodE1lZXRpbmdJZHMubmV4dChcclxuICAgICAgYmVnaW5BdHRlbmRhbmNlQWN0aW9uKHRoaXMuaW5GbGlnaHRNZWV0aW5nSWRzLnZhbHVlLCBtZWV0aW5nSWQpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvYXR0ZW5kYW5jZS9sZWF2ZWAsIHsgbWVldGluZ0lkIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXR0ZW5kYW5jZVN0YXRlcy5uZXh0KFxyXG4gICAgICAgICAgICBhcHBseUxlYXZlTWVldGluZ1N1Y2Nlc3ModGhpcy5hdHRlbmRhbmNlU3RhdGVzLnZhbHVlLCBtZWV0aW5nSWQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5pbkZsaWdodE1lZXRpbmdJZHMubmV4dChcclxuICAgICAgICAgICAgZW5kQXR0ZW5kYW5jZUFjdGlvbih0aGlzLmluRmxpZ2h0TWVldGluZ0lkcy52YWx1ZSwgbWVldGluZ0lkKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgLy8gUmV0YWluIHByaW9yIGF0dGVuZGFuY2Ugc3RhdGU7IG9ubHkgY2xlYXIgdGhlIGluLWZsaWdodCBmbGFnLlxyXG4gICAgICAgICAgdGhpcy5pbkZsaWdodE1lZXRpbmdJZHMubmV4dChcclxuICAgICAgICAgICAgZW5kQXR0ZW5kYW5jZUFjdGlvbih0aGlzLmluRmxpZ2h0TWVldGluZ0lkcy52YWx1ZSwgbWVldGluZ0lkKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgc3luY2hyb25vdXMgc25hcHNob3Qgb2YgdGhlIHBlci1tZWV0aW5nIGF0dGVuZGFuY2Utc3RhdGUgbWFwLlxyXG4gICAqIEByZXR1cm4ge1JlY29yZDxzdHJpbmcsIEF0dGVuZGFuY2VTdGF0ZT59IFRoZSBjdXJyZW50IGF0dGVuZGFuY2Utc3RhdGUgbWFwLlxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0QXR0ZW5kYW5jZVN0YXRlc1NuYXBzaG90KCk6IFJlY29yZDxzdHJpbmcsIEF0dGVuZGFuY2VTdGF0ZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXR0ZW5kYW5jZVN0YXRlcy52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlZWRzIHRoZSBhdHRlbmRhbmNlLXN0YXRlIG1hcCBmcm9tIGEgZnJlc2hseSBsb2FkZWQgbGlzdCBvZiBldmVudHMsIHVzaW5nXHJcbiAgICogZWFjaCBtZWV0aW5nJ3MgYGF0dGVuZGFuY2VTdGF0ZWAgKGRlZmF1bHRpbmcgdG8gYE5PVF9BVFRFTkRJTkdgKS4gS2VlcHMgdGhlXHJcbiAgICogZGlzcGxheWVkIHN0YXRlIGluIHN5bmMgd2l0aCB0aGUgZGF0YSBsb2FkIHdpdGhvdXQgb3ZlcndyaXRpbmcgaWRzIHRoYXQgYXJlXHJcbiAgICogbm90IHByZXNlbnQgaW4gdGhlIG5ldyBsaXN0LlxyXG4gICAqIEBwYXJhbSB7VXBjb21pbmdFdmVudFtdfSBldmVudHMgLSBUaGUgbG9hZGVkIHVwY29taW5nIGV2ZW50cy5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZWVkQXR0ZW5kYW5jZVN0YXRlcyhldmVudHM6IFVwY29taW5nRXZlbnRbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV4dDogUmVjb3JkPHN0cmluZywgQXR0ZW5kYW5jZVN0YXRlPiA9IHtcclxuICAgICAgLi4udGhpcy5hdHRlbmRhbmNlU3RhdGVzLnZhbHVlLFxyXG4gICAgfTtcclxuICAgIGV2ZW50cy5mb3JFYWNoKChldmVudCkgPT4ge1xyXG4gICAgICAvLyBTdGFuZGFsb25lIG1lZXRpbmdzIGNhcnJ5IHRoZWlyIG93biBhdHRlbmRhbmNlIHN0YXRlIGtleWVkIGJ5IHRoZWlyIGlkXHJcbiAgICAgIC8vIChldmVudElkID09IG1lZXRpbmdJZCBmb3Igc3RhbmRhbG9uZSByb3dzKS5cclxuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09IFVwY29taW5nSXRlbUtpbmQuU1RBTkRBTE9ORV9NRUVUSU5HICYmIGV2ZW50LmV2ZW50SWQpIHtcclxuICAgICAgICBuZXh0W2V2ZW50LmV2ZW50SWRdID1cclxuICAgICAgICAgIGV2ZW50LmF0dGVuZGFuY2VTdGF0ZSA/PyBBdHRlbmRhbmNlU3RhdGUuTk9UX0FUVEVORElORztcclxuICAgICAgfVxyXG4gICAgICAoZXZlbnQubWVldGluZ3MgPz8gW10pLmZvckVhY2goKG1lZXRpbmcpID0+IHtcclxuICAgICAgICBpZiAobWVldGluZy5tZWV0aW5nSWQpIHtcclxuICAgICAgICAgIG5leHRbbWVldGluZy5tZWV0aW5nSWRdID1cclxuICAgICAgICAgICAgbWVldGluZy5hdHRlbmRhbmNlU3RhdGUgPz8gQXR0ZW5kYW5jZVN0YXRlLk5PVF9BVFRFTkRJTkc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5hdHRlbmRhbmNlU3RhdGVzLm5leHQobmV4dCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWVkcyB0aGUgYXR0ZW5kYW5jZS1zdGF0ZSBtYXAgZnJvbSBhIGxpc3Qgb2YgbWVldGluZyByb3dzLCB1c2luZyBlYWNoXHJcbiAgICogbWVldGluZydzIGBhdHRlbmRhbmNlU3RhdGVgIChkZWZhdWx0aW5nIHRvIGBOT1RfQVRURU5ESU5HYCkgd2l0aG91dFxyXG4gICAqIG92ZXJ3cml0aW5nIGlkcyBhYnNlbnQgZnJvbSB0aGUgbmV3IGxpc3QuIFNoYXJlZCBieSB0aGUgbGlzdCBsb2FkIGFuZCB0aGVcclxuICAgKiBwZXItZXZlbnQgZXhwYW5kIHNvIGZyZXNobHkgbG9hZGVkIGNoaWxkIG1lZXRpbmdzIHBpY2sgdXAgdGhlaXIgc3RhdGUuXHJcbiAgICogQHBhcmFtIHtNZWV0aW5nUm93W119IG1lZXRpbmdzIC0gVGhlIG1lZXRpbmcgcm93cyB0byBzZWVkIGZyb20uXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkU2VydmljZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2VlZEF0dGVuZGFuY2VTdGF0ZXNGcm9tTWVldGluZ3MobWVldGluZ3M6IE1lZXRpbmdSb3dbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV4dDogUmVjb3JkPHN0cmluZywgQXR0ZW5kYW5jZVN0YXRlPiA9IHtcclxuICAgICAgLi4udGhpcy5hdHRlbmRhbmNlU3RhdGVzLnZhbHVlLFxyXG4gICAgfTtcclxuICAgIG1lZXRpbmdzLmZvckVhY2goKG1lZXRpbmcpID0+IHtcclxuICAgICAgaWYgKG1lZXRpbmcubWVldGluZ0lkKSB7XHJcbiAgICAgICAgbmV4dFttZWV0aW5nLm1lZXRpbmdJZF0gPVxyXG4gICAgICAgICAgbWVldGluZy5hdHRlbmRhbmNlU3RhdGUgPz9cclxuICAgICAgICAgIG5leHRbbWVldGluZy5tZWV0aW5nSWRdID8/XHJcbiAgICAgICAgICBBdHRlbmRhbmNlU3RhdGUuTk9UX0FUVEVORElORztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmF0dGVuZGFuY2VTdGF0ZXMubmV4dChuZXh0KTtcclxuICB9XHJcbn1cclxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -21,6 +21,7 @@ export * from './lib/models/page-change.model';
|
|
|
21
21
|
export * from './lib/models/dashboard-user-info.model';
|
|
22
22
|
export * from './lib/models/meeting-row.model';
|
|
23
23
|
export * from './lib/models/upcoming-event.model';
|
|
24
|
+
export * from './lib/models/upcoming-summary.model';
|
|
24
25
|
export * from './lib/models/event-meeting-list-item.model';
|
|
25
26
|
export * from './lib/models/event-meeting-list-payload.model';
|
|
26
27
|
export * from './lib/models/group-row.model';
|
|
@@ -33,4 +34,4 @@ export * from './lib/services/user-permissions.service';
|
|
|
33
34
|
export * from './lib/assets/dashboard-route-paths.mock';
|
|
34
35
|
export * from './lib/assets/dashboard-user-permissions.mock';
|
|
35
36
|
export * from './lib/assets/dashboard-mock';
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILCtGQUErRjtBQUMvRixjQUFjLDJCQUEyQixDQUFDO0FBRTFDLG1CQUFtQjtBQUNuQixjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsOEVBQThFLENBQUM7QUFDN0YsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLDBFQUEwRSxDQUFDO0FBQ3pGLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxrRUFBa0UsQ0FBQztBQUVqRixrQkFBa0I7QUFDbEIsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLFNBQVM7QUFDVCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDRDQUE0QyxDQUFDO0FBRTNELFdBQVc7QUFDWCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMseUNBQXlDLENBQUM7QUFFeEQsdUNBQXVDO0FBQ3ZDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGRhc2hib2FyZFxyXG4gKi9cclxuXHJcbi8vIENvbnRhaW5lciBjb21wb25lbnQgKyBuYXZpZ2F0aW9uIGludGVudCB0eXBlIChEYXNoYm9hcmRDb21wb25lbnQsIERhc2hib2FyZE5hdmlnYXRpb25JbnRlbnQpXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZC5jb21wb25lbnQnO1xyXG5cclxuLy8gQ2hpbGQgY29tcG9uZW50c1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3dlbGNvbWUtaGVhZGVyL2Rhc2hib2FyZC13ZWxjb21lLWhlYWRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VwY29taW5nLW1lZXRpbmdzLWV2ZW50cy91cGNvbWluZy1tZWV0aW5ncy1ldmVudHMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9ldmVudC1ncm91cC1jYXJkL2V2ZW50LWdyb3VwLWNhcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tZWV0aW5nLWF0dGVuZGFuY2Utcm93L21lZXRpbmctYXR0ZW5kYW5jZS1yb3cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy95b3VyLWdyb3Vwcy95b3VyLWdyb3Vwcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21lbWJlci1sZXZlbC1iYWRnZS9tZW1iZXItbGV2ZWwtYmFkZ2UuY29tcG9uZW50JztcclxuXHJcbi8vIE1vZHVsZSArIHJvdXRlc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkLnJvdXRlcyc7XHJcblxyXG4vLyBNb2RlbHNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2Rhc2hib2FyZC1yb3V0ZS1jb25maWcubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvYXR0ZW5kYW5jZS1zdGF0ZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9kYXNoYm9hcmQtc2VjdGlvbi1zdGF0ZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9wYWdlLWNoYW5nZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9kYXNoYm9hcmQtdXNlci1pbmZvLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL21lZXRpbmctcm93Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3VwY29taW5nLWV2ZW50Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3VwY29taW5nLXN1bW1hcnkubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZXZlbnQtbWVldGluZy1saXN0LWl0ZW0ubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZXZlbnQtbWVldGluZy1saXN0LXBheWxvYWQubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZ3JvdXAtcm93Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2F0dGVuZGFuY2UtYWN0aW9uLXBlcm1pc3Npb25zLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2Rhc2hib2FyZC1saXN0LXJlc3BvbnNlLm1vZGVsJztcclxuXHJcbi8vIFNlcnZpY2VzXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2Rhc2hib2FyZC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcclxuXHJcbi8vIEFzc2V0IG1vY2tzIGNvbnN1bWVkIGJ5IHRoZSBkZW1vIGFwcFxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hc3NldHMvZGFzaGJvYXJkLXJvdXRlLXBhdGhzLm1vY2snO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hc3NldHMvZGFzaGJvYXJkLXVzZXItcGVybWlzc2lvbnMubW9jayc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fzc2V0cy9kYXNoYm9hcmQtbW9jayc7XHJcbiJdfQ==
|