@provoly/hypervisor 0.0.106 → 0.0.108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2022/public-api.mjs +2 -1
  2. package/esm2022/src/lib/event/detail/event-detail.component.mjs +31 -14
  3. package/esm2022/src/lib/event/list/event-list.component.mjs +3 -3
  4. package/esm2022/src/lib/event-summary/list/event-summary-list.component.mjs +3 -3
  5. package/esm2022/src/lib/general/comments/comments.component.mjs +80 -0
  6. package/esm2022/src/lib/general/i18n/en.translations.mjs +11 -3
  7. package/esm2022/src/lib/general/i18n/fr.translations.mjs +14 -4
  8. package/esm2022/src/lib/general/procedure-actions/procedure-actions.component.mjs +30 -11
  9. package/esm2022/src/lib/general/public-api.mjs +2 -1
  10. package/esm2022/src/lib/hypervisor.module.mjs +14 -7
  11. package/esm2022/src/lib/model/comment.interface.mjs +2 -0
  12. package/esm2022/src/lib/procedure/model-detail/procedure-model-detail.component.mjs +3 -3
  13. package/esm2022/src/lib/store/comments/comments.service.mjs +35 -0
  14. package/esm2022/src/lib/store/comments/public-api.mjs +2 -0
  15. package/esm2022/src/lib/store/event/event.effects.mjs +2 -2
  16. package/fesm2022/provoly-hypervisor.mjs +227 -73
  17. package/fesm2022/provoly-hypervisor.mjs.map +1 -1
  18. package/package.json +1 -1
  19. package/public-api.d.ts +1 -0
  20. package/src/lib/event/detail/event-detail.component.d.ts +23 -9
  21. package/src/lib/general/comments/comments.component.d.ts +37 -0
  22. package/src/lib/general/i18n/en.translations.d.ts +8 -0
  23. package/src/lib/general/i18n/fr.translations.d.ts +10 -0
  24. package/src/lib/general/procedure-actions/procedure-actions.component.d.ts +19 -4
  25. package/src/lib/general/public-api.d.ts +1 -0
  26. package/src/lib/hypervisor.module.d.ts +10 -9
  27. package/src/lib/model/comment.interface.d.ts +8 -0
  28. package/src/lib/store/comments/comments.service.d.ts +17 -0
  29. package/src/lib/store/comments/public-api.d.ts +1 -0
  30. package/styles/components/_index.scss +1 -0
  31. package/styles/components/_o-hvy-comments.scss +78 -0
  32. package/styles/components/_o-hvy-event-detail.scss +11 -20
  33. package/styles/components/_o-hvy-procedure-actions.scss +6 -3
  34. package/styles/components/_o-hvy-procedure-list.scss +1 -0
@@ -0,0 +1,35 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { mergeMap, of, shareReplay } from 'rxjs';
3
+ import { HypSelectors } from '../hypervisor/hypervisor.selectors';
4
+ import { catchError } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ import * as i2 from "@ngrx/store";
8
+ export class HypCommentsService {
9
+ constructor(httpClient, store) {
10
+ this.httpClient = httpClient;
11
+ this.store = store;
12
+ }
13
+ get(id, type) {
14
+ return this.store.select(HypSelectors.url).pipe(mergeMap((url) => {
15
+ return this.httpClient.get(encodeURI(`${url}/${type}/id/${id}/comments`));
16
+ }), catchError(() => {
17
+ console.error(`Unable to load comments for event id: ${id}`);
18
+ return of([]);
19
+ }), shareReplay());
20
+ }
21
+ save(id, type, comment) {
22
+ return this.store.select(HypSelectors.url).pipe(mergeMap((url) => {
23
+ return this.httpClient.put(encodeURI(`${url}/${type}/id/${id}/comments`), comment);
24
+ }));
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HypCommentsService, deps: [{ token: i1.HttpClient }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HypCommentsService, providedIn: 'root' }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HypCommentsService, decorators: [{
30
+ type: Injectable,
31
+ args: [{
32
+ providedIn: 'root'
33
+ }]
34
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.Store }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL3N0b3JlL2NvbW1lbnRzL2NvbW1lbnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUs1QyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1UsVUFBc0IsRUFDdEIsS0FBaUI7UUFEakIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixVQUFLLEdBQUwsS0FBSyxDQUFZO0lBQ3hCLENBQUM7SUFFSixHQUFHLENBQUMsRUFBbUIsRUFBRSxJQUEwQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzdDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBZSxTQUFTLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsRUFDRixXQUFXLEVBQUUsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxFQUFtQixFQUFFLElBQTBCLEVBQUUsT0FBd0M7UUFDNUYsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUM3QyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQWUsU0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJLElBQUksT0FBTyxFQUFFLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25HLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzhHQXpCVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQUZqQixNQUFNOzsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG1lcmdlTWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgSHlwU2VsZWN0b3JzIH0gZnJvbSAnLi4vaHlwZXJ2aXNvci9oeXBlcnZpc29yLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBIeXBDb21tZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvY29tbWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSHlwQ29tbWVudHNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT5cbiAgKSB7fVxuXG4gIGdldChpZDogbnVtYmVyIHwgc3RyaW5nLCB0eXBlOiAnZXZlbnRzJyB8ICdhY3Rpb25zJyk6IE9ic2VydmFibGU8SHlwQ29tbWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEh5cENvbW1lbnRbXT4oZW5jb2RlVVJJKGAke3VybH0vJHt0eXBlfS9pZC8ke2lkfS9jb21tZW50c2ApKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIGNvbW1lbnRzIGZvciBldmVudCBpZDogJHtpZH1gKTtcbiAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoKVxuICAgICk7XG4gIH1cblxuICBzYXZlKGlkOiBudW1iZXIgfCBzdHJpbmcsIHR5cGU6ICdldmVudHMnIHwgJ2FjdGlvbnMnLCBjb21tZW50OiB7IGlkOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PEh5cENvbW1lbnRbXT4oZW5jb2RlVVJJKGAke3VybH0vJHt0eXBlfS9pZC8ke2lkfS9jb21tZW50c2ApLCBjb21tZW50KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './comments.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL3N0b3JlL2NvbW1lbnRzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbWVudHMuc2VydmljZSc7XG4iXX0=
@@ -18,7 +18,7 @@ export class EventEffects {
18
18
  this.getEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.get), debounceTime(200), mergeMap((action) => this.eventService.get(action.id).pipe(map((event) => EventActions.getSuccess({ event })), catchError((error) => [EventActions.getFailure({ error: error })])))));
19
19
  this.getEventByName$ = createEffect(() => this.actions$.pipe(ofType(EventActions.getTooltipInfo), debounceTime(200), mergeMap((action) => this.eventService.getTooltipInfo(action.name).pipe(map((event) => EventActions.getTooltipInfoSuccess({ event })), catchError((error) => [EventActions.getTooltipInfoFailure({ error: error })])))));
20
20
  this.getForProcedureEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.getForProcedure), debounceTime(200), mergeMap((action) => this.eventService.getProcedure(action.id).pipe(map((procedure) => EventActions.getSuccess({ procedure })), catchError((error) => [EventActions.getFailure({ error: error })])))));
21
- this.saveEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.save), debounceTime(200), mergeMap((action) => this.eventService.save(action.event).pipe(map((event) => EventActions.saveSuccess({ event, creation: action.event.id < 0 })), catchError((error) => [EventActions.saveFailure({ error: error })])))));
21
+ this.saveEvent$ = createEffect(() => this.actions$.pipe(ofType(EventActions.save), debounceTime(200), mergeMap((action) => this.eventService.save(action.event).pipe(map((event) => EventActions.saveSuccess({ event: event ?? action.event, creation: action.event.id < 0 })), catchError((error) => [EventActions.saveFailure({ error: error })])))));
22
22
  this.saveProcedure$ = createEffect(() => this.actions$.pipe(ofType(EventActions.saveProcedure), debounceTime(200), mergeMap((action) => this.eventService.saveProcedure(action.procedure).pipe(map((procedure) => EventActions.saveSuccess({ procedure: action.procedure, creation: false })), catchError((error) => [EventActions.saveFailure({ error: error })])))));
23
23
  this.refreshAfterSave$ = createEffect(() => this.actions$.pipe(ofType(EventActions.saveSuccess, EventActions.statusSuccess), debounceTime(200), map((action) => !!action.procedure
24
24
  ? EventActions.getForProcedure({ id: action.procedure.id })
@@ -44,4 +44,4 @@ export class EventEffects {
44
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventEffects, decorators: [{
45
45
  type: Injectable
46
46
  }], ctorParameters: () => [{ type: i1.Actions }, { type: i2.EventService }, { type: i3.Store }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL3N0b3JlL2V2ZW50L2V2ZW50LmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZ0IsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBSW5ELE1BQU0sT0FBTyxZQUFZO0lBaUp2QixZQUNVLFFBQWlCLEVBQ2pCLFlBQTBCLEVBQzFCLEtBQVk7UUFGWixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQU87UUFuSnRCLGdCQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDekIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxD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LEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNsRixDQUNGLENBQ0YsQ0FDRixDQUFDO0lBTUMsQ0FBQzs4R0FySk8sWUFBWTtrSEFBWixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEV2ZW50QWN0aW9ucyB9IGZyb20gJy4vZXZlbnQuYWN0aW9ucyc7XG5pbXBvcnQgeyBFdmVudFNlcnZpY2UsIEtOT1dOX0ZJTFRFUl9TRVRTIH0gZnJvbSAnLi9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbHRlciwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEV2ZW50U2VsZWN0b3JzIH0gZnJvbSAnLi9ldmVudC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFdmVudEVmZmVjdHMge1xuICBsb2FkRXZlbnRzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShFdmVudEFjdGlvbnMubG9hZCksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KEV2ZW50U2VsZWN0b3JzLmV2ZW50cyksIHRoaXMuc3RvcmUuc2VsZWN0KEV2ZW50U2VsZWN0b3JzLm5vTW9yZUV2ZW50cykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCBldmVudHMsIG5vTW9yZV0pID0+ICFhY3Rpb24ubmV4dCB8fCAoYWN0aW9uLm5leHQgJiYgIW5vTW9yZSkpLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHN0YXRlRXZlbnRzXSkgPT5cbiAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UubGlzdChhY3Rpb24ubmV4dCA/IHN0YXRlRXZlbnRzLmxlbmd0aCA6IDApLnBpcGUoXG4gICAgICAgICAgbWFwKChldmVudHMpID0+IEV2ZW50QWN0aW9ucy5sb2FkU3VjY2Vzcyh7IGV2ZW50cywgc3RhcnRpbmdGcm9tOiBhY3Rpb24ubmV4dCA/IHN0YXRlRXZlbnRzLmxlbmd0aCA6IDAgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRXZlbnRBY3Rpb25zLmxvYWRGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBnZXRFdmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRXZlbnRBY3Rpb25zLmdldCksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmdldChhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKChldmVudCkgPT4gRXZlbnRBY3Rpb25zLmdldFN1Y2Nlc3MoeyBldmVudCB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtFdmVudEFjdGlvbnMuZ2V0RmFpbHVyZSh7IGVycm9yOiBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZ2V0RXZlbnRCeU5hbWUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEV2ZW50QWN0aW9ucy5nZXRUb29sdGlwSW5mbyksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmdldFRvb2x0aXBJbmZvKGFjdGlvbi5uYW1lKS5waXBlKFxuICAgICAgICAgIG1hcCgoZXZlbnQpID0+IEV2ZW50QWN0aW9ucy5nZXRUb29sdGlwSW5mb1N1Y2Nlc3MoeyBldmVudCB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtFdmVudEFjdGlvbnMuZ2V0VG9vbHRpcEluZm9GYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBnZXRGb3JQcm9jZWR1cmVFdmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRXZlbnRBY3Rpb25zLmdldEZvclByb2NlZHVyZSksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmdldFByb2NlZHVyZShhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKChwcm9jZWR1cmUpID0+IEV2ZW50QWN0aW9ucy5nZXRTdWNjZXNzKHsgcHJvY2VkdXJlIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0V2ZW50QWN0aW9ucy5nZXRGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlRXZlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEV2ZW50QWN0aW9ucy5zYXZlKSxcbiAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2F2ZShhY3Rpb24uZXZlbnQpLnBpcGUoXG4gICAgICAgICAgbWFwKChldmVudCkgPT4gRXZlbnRBY3Rpb25zLnNhdmVTdWNjZXNzKHsgZXZlbnQsIGNyZWF0aW9uOiBhY3Rpb24uZXZlbnQuaWQgPCAwIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0V2ZW50QWN0aW9ucy5zYXZlRmFpbHVyZSh7IGVycm9yOiBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2F2ZVByb2NlZHVyZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRXZlbnRBY3Rpb25zLnNhdmVQcm9jZWR1cmUpLFxuICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zYXZlUHJvY2VkdXJlKGFjdGlvbi5wcm9jZWR1cmUpLnBpcGUoXG4gICAgICAgICAgbWFwKChwcm9jZWR1cmUpID0+IEV2ZW50QWN0aW9ucy5zYXZlU3VjY2Vzcyh7IHByb2NlZHVyZTogYWN0aW9uLnByb2NlZHVyZSwgY3JlYXRpb246IGZhbHNlIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0V2ZW50QWN0aW9ucy5zYXZlRmFpbHVyZSh7IGVycm9yOiBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmVmcmVzaEFmdGVyU2F2ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRXZlbnRBY3Rpb25zLnNhdmVTdWNjZXNzLCBFdmVudEFjdGlvbnMuc3RhdHVzU3VjY2VzcyksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIG1hcCgoYWN0aW9uKSA9PlxuICAgICAgICAhIWFjdGlvbi5wcm9jZWR1cmVcbiAgICAgICAgICA/IEV2ZW50QWN0aW9ucy5nZXRGb3JQcm9jZWR1cmUoeyBpZDogYWN0aW9uLnByb2NlZHVyZS5pZCB9KVxuICAgICAgICAgIDogRXZlbnRBY3Rpb25zLmdldCh7IGlkOiBhY3Rpb24uZXZlbnQhLmlkIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNsb3NlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShFdmVudEFjdGlvbnMuc3RhdHVzKSxcbiAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICBpZiAoISFhY3Rpb24uZXZlbnQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5ldmVudFNlcnZpY2Uuc3RhdHVzKGFjdGlvbi5ldmVudCwgYWN0aW9uLnRhcmdldFN0YXR1cywgYWN0aW9uLmNvbW1lbnQpLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgoZXZlbnQpID0+IFtcbiAgICAgICAgICAgICAgRXZlbnRBY3Rpb25zLnN0YXR1c1N1Y2Nlc3MoeyBldmVudDogYWN0aW9uLmV2ZW50LCBwcm9jZWR1cmU6IGFjdGlvbi5wcm9jZWR1cmUgfSksXG4gICAgICAgICAgICAgIEV2ZW50QWN0aW9ucy5sb2FkKHt9KVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0V2ZW50QWN0aW9ucy5zdGF0dXNGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmV2ZW50U2VydmljZS5zdGF0dXNQcm9jZWR1cmUoYWN0aW9uLnByb2NlZHVyZSEsIGFjdGlvbi50YXJnZXRTdGF0dXMsIGFjdGlvbi5jb21tZW50KS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKGV2ZW50KSA9PiBbRXZlbnRBY3Rpb25zLnN0YXR1c1N1Y2Nlc3MoeyBwcm9jZWR1cmU6IGFjdGlvbi5wcm9jZWR1cmUgfSksIEV2ZW50QWN0aW9ucy5sb2FkKHt9KV0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtFdmVudEFjdGlvbnMuc3RhdHVzRmFpbHVyZSh7IGVycm9yOiBlcnJvciB9KV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgc29ydCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRXZlbnRBY3Rpb25zLnNvcnQpLFxuICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICBtYXAoKCkgPT4gRXZlbnRBY3Rpb25zLmxvYWQoe30pKVxuICAgIClcbiAgKTtcblxuICBmaWx0ZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEV2ZW50QWN0aW9ucy5maWx0ZXIpLFxuICAgICAgZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5maWx0ZXJTZXQgPT09IEtOT1dOX0ZJTFRFUl9TRVRTLkVWRU5UUyksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIG1hcCgoKSA9PiBFdmVudEFjdGlvbnMubG9hZCh7fSkpXG4gICAgKVxuICApO1xuXG4gIGFzc29jaWF0ZVByb2NlZHVyZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRXZlbnRBY3Rpb25zLmFzc29jaWF0ZVByb2NlZHVyZSksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5hc3NvY2lhdGVQcm9jZWR1cmUoYWN0aW9uLnByb2NlZHVyZUlkLCBhY3Rpb24uZXZlbnRJZHMpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHByb2NlZHVyZSkgPT4gW0V2ZW50QWN0aW9ucy5sb2FkKHt9KSwgRXZlbnRBY3Rpb25zLmFzc29jaWF0ZVByb2NlZHVyZVN1Y2Nlc3MoeyBwcm9jZWR1cmUgfSldKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0V2ZW50QWN0aW9ucy5hc3NvY2lhdGVQcm9jZWR1cmVGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmVcbiAgKSB7fVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL3N0b3JlL2V2ZW50L2V2ZW50LmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZ0IsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBSW5ELE1BQU0sT0FBTyxZQUFZO0lBaUp2QixZQUNVLFFBQWlCLEVBQ2pCLFlBQTBCLEVBQzFCLEtBQVk7UUFGWixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQU87UUFuSnRCLGdCQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDekIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxD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QUFDLHlCQUF5QixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNsRixDQUNGLENBQ0YsQ0FDRixDQUFDO0lBTUMsQ0FBQzs4R0FySk8sWUFBWTtrSEFBWixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEV2ZW50QWN0aW9ucyB9IGZyb20gJy4vZXZlbnQuYWN0aW9ucyc7XG5pbXBvcnQgeyBFdmVudFNlcnZpY2UsIEtOT1dOX0ZJTFRFUl9TRVRTIH0gZnJvbSAnLi9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbHRlciwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEV2ZW50U2VsZWN0b3JzIH0gZnJvbSAnLi9ldmVudC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFdmVudEVmZmVjdHMge1xuICBsb2FkRXZlbnRzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShFdmVudEFjdGlvbnMubG9hZCksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KEV2ZW50U2VsZWN0b3JzLmV2ZW50cyksIHRoaXMuc3RvcmUuc2VsZWN0KEV2ZW50U2VsZWN0b3JzLm5vTW9yZUV2ZW50cykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCBldmVudHMsIG5vTW9yZV0pID0+ICFhY3Rpb24ubmV4dCB8fCAoYWN0aW9uLm5leHQgJiYgIW5vTW9yZSkpLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHN0YXRlRXZlbnRzXSkgPT5cbiAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UubGlzdChhY3Rpb24ubmV4dCA/IHN0YXRlRXZlbnRzLmxlbmd0aCA6IDApLnBpcGUoXG4gICAgICAgICAgbWFwKChldmVudHMpID0+IEV2ZW50QWN0aW9ucy5sb2FkU3VjY2Vzcyh7IGV2ZW50cywgc3RhcnRpbmdGcm9tOiBhY3Rpb24ubmV4dCA/IHN0YXRlRXZlbnRzLmxlbmd0aCA6IDAgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRXZlbnRBY3Rpb25zLmxvYWRGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBnZXRFdmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRXZlbnRBY3Rpb25zLmdldCksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmdldChhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKChldmVudCkgPT4gRXZlbnRBY3Rpb25zLmdldFN1Y2Nlc3MoeyBldmVudCB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtFdmVudEFjdGlvbnMuZ2V0RmFpbHVyZSh7IGVycm9yOiBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZ2V0RXZlbnRCeU5hbWUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEV2ZW50QWN0aW9ucy5nZXRUb29sdGlwSW5mbyksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmdldFRvb2x0aXBJbmZvKGFjdGlvbi5uYW1lKS5waXBlKFxuICAgICAgICAgIG1hcCgoZXZlbnQpID0+IEV2ZW50QWN0aW9ucy5nZXRUb29sdGlwSW5mb1N1Y2Nlc3MoeyBldmVudCB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtFdmVudEFjdGlvbnMuZ2V0VG9vbHRpcEluZm9GYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBnZXRGb3JQcm9jZWR1cmVFdmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRXZlbnRBY3Rpb25zLmdldEZvclByb2NlZHVyZSksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmdldFByb2NlZHVyZShhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKChwcm9jZWR1cmUpID0+IEV2ZW50QWN0aW9ucy5nZXRTdWNjZXNzKHsgcHJvY2VkdXJlIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0V2ZW50QWN0aW9ucy5nZXRGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlRXZlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEV2ZW50QWN0aW9ucy5zYXZlKSxcbiAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2F2ZShhY3Rpb24uZXZlbnQpLnBpcGUoXG4gICAgICAgICAgbWFwKChldmVudCkgPT4gRXZlbnRBY3Rpb25zLnNhdmVTdWNjZXNzKHsgZXZlbnQ6IGV2ZW50ID8/IGFjdGlvbi5ldmVudCwgY3JlYXRpb246IGFjdGlvbi5ldmVudC5pZCA8IDAgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRXZlbnRBY3Rpb25zLnNhdmVGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlUHJvY2VkdXJlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShFdmVudEFjdGlvbnMuc2F2ZVByb2NlZHVyZSksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNhdmVQcm9jZWR1cmUoYWN0aW9uLnByb2NlZHVyZSkucGlwZShcbiAgICAgICAgICBtYXAoKHByb2NlZHVyZSkgPT4gRXZlbnRBY3Rpb25zLnNhdmVTdWNjZXNzKHsgcHJvY2VkdXJlOiBhY3Rpb24ucHJvY2VkdXJlLCBjcmVhdGlvbjogZmFsc2UgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRXZlbnRBY3Rpb25zLnNhdmVGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZWZyZXNoQWZ0ZXJTYXZlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShFdmVudEFjdGlvbnMuc2F2ZVN1Y2Nlc3MsIEV2ZW50QWN0aW9ucy5zdGF0dXNTdWNjZXNzKSxcbiAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgbWFwKChhY3Rpb24pID0+XG4gICAgICAgICEhYWN0aW9uLnByb2NlZHVyZVxuICAgICAgICAgID8gRXZlbnRBY3Rpb25zLmdldEZvclByb2NlZHVyZSh7IGlkOiBhY3Rpb24ucHJvY2VkdXJlLmlkIH0pXG4gICAgICAgICAgOiBFdmVudEFjdGlvbnMuZ2V0KHsgaWQ6IGFjdGlvbi5ldmVudCEuaWQgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY2xvc2UkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEV2ZW50QWN0aW9ucy5zdGF0dXMpLFxuICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgIGlmICghIWFjdGlvbi5ldmVudCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmV2ZW50U2VydmljZS5zdGF0dXMoYWN0aW9uLmV2ZW50LCBhY3Rpb24udGFyZ2V0U3RhdHVzLCBhY3Rpb24uY29tbWVudCkucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKChldmVudCkgPT4gW1xuICAgICAgICAgICAgICBFdmVudEFjdGlvbnMuc3RhdHVzU3VjY2Vzcyh7IGV2ZW50OiBhY3Rpb24uZXZlbnQsIHByb2NlZHVyZTogYWN0aW9uLnByb2NlZHVyZSB9KSxcbiAgICAgICAgICAgICAgRXZlbnRBY3Rpb25zLmxvYWQoe30pXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRXZlbnRBY3Rpb25zLnN0YXR1c0ZhaWx1cmUoeyBlcnJvcjogZXJyb3IgfSldKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRTZXJ2aWNlLnN0YXR1c1Byb2NlZHVyZShhY3Rpb24ucHJvY2VkdXJlISwgYWN0aW9uLnRhcmdldFN0YXR1cywgYWN0aW9uLmNvbW1lbnQpLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgoZXZlbnQpID0+IFtFdmVudEFjdGlvbnMuc3RhdHVzU3VjY2Vzcyh7IHByb2NlZHVyZTogYWN0aW9uLnByb2NlZHVyZSB9KSwgRXZlbnRBY3Rpb25zLmxvYWQoe30pXSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0V2ZW50QWN0aW9ucy5zdGF0dXNGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBzb3J0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShFdmVudEFjdGlvbnMuc29ydCksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIG1hcCgoKSA9PiBFdmVudEFjdGlvbnMubG9hZCh7fSkpXG4gICAgKVxuICApO1xuXG4gIGZpbHRlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRXZlbnRBY3Rpb25zLmZpbHRlciksXG4gICAgICBmaWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmZpbHRlclNldCA9PT0gS05PV05fRklMVEVSX1NFVFMuRVZFTlRTKSxcbiAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgbWFwKCgpID0+IEV2ZW50QWN0aW9ucy5sb2FkKHt9KSlcbiAgICApXG4gICk7XG5cbiAgYXNzb2NpYXRlUHJvY2VkdXJlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShFdmVudEFjdGlvbnMuYXNzb2NpYXRlUHJvY2VkdXJlKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmFzc29jaWF0ZVByb2NlZHVyZShhY3Rpb24ucHJvY2VkdXJlSWQsIGFjdGlvbi5ldmVudElkcykucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgocHJvY2VkdXJlKSA9PiBbRXZlbnRBY3Rpb25zLmxvYWQoe30pLCBFdmVudEFjdGlvbnMuYXNzb2NpYXRlUHJvY2VkdXJlU3VjY2Vzcyh7IHByb2NlZHVyZSB9KV0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbRXZlbnRBY3Rpb25zLmFzc29jaWF0ZVByb2NlZHVyZUZhaWx1cmUoeyBlcnJvcjogZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZVxuICApIHt9XG59XG4iXX0=