@vendasta/meetings 1.15.0 → 1.15.3
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/esm2020/lib/_internal/interfaces/groups-and-services.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/meeting-guest.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/meeting-host.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/meeting-type.interface.mjs +1 -1
- package/esm2020/lib/_internal/meeting-guest.api.service.mjs +7 -2
- package/esm2020/lib/_internal/meeting-host.api.service.mjs +7 -2
- package/esm2020/lib/_internal/objects/groups-and-services.mjs +25 -1
- package/esm2020/lib/_internal/objects/index.mjs +3 -3
- package/esm2020/lib/_internal/objects/meeting-guest.mjs +67 -5
- package/esm2020/lib/_internal/objects/meeting-host.mjs +63 -28
- package/esm2020/lib/_internal/objects/meeting-type.mjs +13 -1
- package/esm2020/lib/guest/guest.service.mjs +18 -1
- package/esm2020/lib/host/host.service.mjs +17 -1
- package/esm2020/lib/shared/groups-and-services.mjs +13 -1
- package/esm2020/lib/shared/meeting-type.mjs +7 -1
- package/fesm2015/vendasta-meetings.mjs +227 -31
- package/fesm2015/vendasta-meetings.mjs.map +1 -1
- package/fesm2020/vendasta-meetings.mjs +225 -31
- package/fesm2020/vendasta-meetings.mjs.map +1 -1
- package/lib/_internal/interfaces/groups-and-services.interface.d.ts +6 -0
- package/lib/_internal/interfaces/index.d.ts +2 -2
- package/lib/_internal/interfaces/meeting-guest.interface.d.ts +15 -2
- package/lib/_internal/interfaces/meeting-host.interface.d.ts +15 -9
- package/lib/_internal/interfaces/meeting-type.interface.d.ts +3 -0
- package/lib/_internal/meeting-guest.api.service.d.ts +3 -2
- package/lib/_internal/meeting-host.api.service.d.ts +3 -2
- package/lib/_internal/objects/groups-and-services.d.ts +6 -0
- package/lib/_internal/objects/index.d.ts +2 -2
- package/lib/_internal/objects/meeting-guest.d.ts +22 -6
- package/lib/_internal/objects/meeting-host.d.ts +29 -20
- package/lib/_internal/objects/meeting-type.d.ts +3 -0
- package/lib/guest/guest.service.d.ts +5 -0
- package/lib/host/host.service.d.ts +6 -1
- package/lib/shared/groups-and-services.d.ts +6 -0
- package/lib/shared/meeting-type.d.ts +3 -0
- package/package.json +1 -1
|
@@ -411,6 +411,22 @@ export class HostService {
|
|
|
411
411
|
return [];
|
|
412
412
|
}));
|
|
413
413
|
}
|
|
414
|
+
// hostListBatchAvailableTimeSlotsForReschedule returns valid chain start times for rescheduling
|
|
415
|
+
// an existing meeting or booking group (id is a meeting_id or BG- group id). Config is resolved
|
|
416
|
+
// from the booked record(s) rather than the current event-type settings.
|
|
417
|
+
hostListBatchAvailableTimeSlotsForReschedule(req) {
|
|
418
|
+
return this.hostAPIService
|
|
419
|
+
.hostListBatchAvailableTimeSlotsForReschedule(req)
|
|
420
|
+
.pipe(map((resp) => {
|
|
421
|
+
if (resp.isoTimeSlots?.length) {
|
|
422
|
+
return resp.isoTimeSlots.map((iso) => ({
|
|
423
|
+
start: new Date(iso.start),
|
|
424
|
+
end: new Date(iso.end),
|
|
425
|
+
}));
|
|
426
|
+
}
|
|
427
|
+
return [];
|
|
428
|
+
}));
|
|
429
|
+
}
|
|
414
430
|
// createDefaultMeetingTypes will create what Meeting Scheduler deems to be the default meeting types.
|
|
415
431
|
// If the calendar already has meeting types, this is guaranteed to be a no-op.
|
|
416
432
|
createDefaultMeetingTypes(req) {
|
|
@@ -659,4 +675,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
|
|
|
659
675
|
type: Injectable,
|
|
660
676
|
args: [{ providedIn: "root" }]
|
|
661
677
|
}], ctorParameters: function () { return [{ type: i1.MeetingHostApiService }]; } });
|
|
662
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvaG9zdC9ob3N0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQXFCTCxnQ0FBZ0MsRUFJaEMscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUduQixTQUFTLEVBRVQsUUFBUSxHQVNULE1BQU0sY0FBYyxDQUFDO0FBSXRCLE9BQU8sRUFDTCxZQUFZLEVBS1osZUFBZSxFQUVmLFlBQVksRUFFWixZQUFZLEVBQ1osY0FBYyxFQUlkLGNBQWMsRUFHZCxtQkFBbUIsRUFFbkIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsa0JBQWtCLEVBRWxCLGNBQWMsRUFDZCxnQkFBZ0IsRUFFaEIsZUFBZSxHQUNoQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLGtDQUFrQyxHQUNuQyxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBWSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQUt4RSxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUFvQixjQUFxQztRQUFyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7SUFBRyxDQUFDO0lBRTdELGtIQUFrSDtJQUNsSCxXQUFXLENBQUMsR0FHWDtRQUNDLE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsV0FBVyxDQUFDO1lBQ1gsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1lB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SUFDckUsQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBSXJCO1FBQ0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7O3dHQTE4QlUsV0FBVzs0R0FBWCxXQUFXLGNBREUsTUFBTTsyRkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgbWFwLCBtYXBUbyB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtcbiAgQXZhaWxhYmlsaXR5UnVsZUxpc3QsXG4gIEJhdGNoQm9va2luZ1RhcmdldEludGVyZmFjZSxcbiAgQmF0Y2hFdmVudFR5cGVUYXJnZXRJbnRlcmZhY2UsXG4gIENoZWNrR3JvdXBPclNlcnZpY2VTbHVnRXhpc3RSZXNwb25zZSxcbiAgQ29udGFjdEludGVyZmFjZSxcbiAgQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlLFxuICBDcmVhdGVDYWxlbmRhclJlc3BvbnNlLFxuICBEYXlPZldlZWssXG4gIEdldEdyb3VwUmVzcG9uc2UsXG4gIEdldEhvc3RNZWV0aW5nUmVzcG9uc2UsXG4gIEdldE1lZXRpbmdTdGF0c1Jlc3BvbnNlLFxuICBHZXRTZXJ2aWNlUmVzcG9uc2UsXG4gIEhvc3RCb29rQmF0Y2hNZWV0aW5nUmVzcG9uc2UsXG4gIEhvc3RCb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UsXG4gIEhvc3RCb29rTWVldGluZ1Jlc3BvbnNlLFxuICBIb3N0TGlzdEJhdGNoQXZhaWxhYmxlVGltZVNsb3RzUmVzcG9uc2UsXG4gIElzQ2FsZW5kYXJDb25maWd1cmVkUmVxdWVzdEludGVyZmFjZSxcbiAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXNwb25zZSxcbiAgSXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlLFxuICBMaXN0QXZhaWxhYmlsaXR5UmVxdWVzdEZpbHRlcnNJbnRlcmZhY2UsXG4gIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzLFxuICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgTGlzdEJvb2tlZE1lZXRpbmdzUmVzcG9uc2UsXG4gIExpc3RCb29rZWRNZWV0aW5nc1YyUmVzcG9uc2UsXG4gIE1lZXRpbmdIb3N0QXBpU2VydmljZSxcbiAgUGFnZWRSZXF1ZXN0T3B0aW9ucyxcbiAgUGFnZWRSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZSxcbiAgU2VuZE1lZXRpbmdSZXF1ZXN0RW1haWxSZXF1ZXN0SW50ZXJmYWNlLFxuICBUaW1lUmFuZ2UsXG4gIFRpbWVSYW5nZUludGVyZmFjZSxcbiAgVGltZVpvbmUsXG4gIFRpbWVab25lSW50ZXJmYWNlLFxuICBXZWVrZGF5QXZhaWxhYmlsaXR5LFxuICBDb250YWN0LFxuICBFbWFpbHNUb0RlbGV0ZSxcbiAgSG9zdEJvb2tTZXNzaW9uUmVxdWVzdEludGVyZmFjZSxcbiAgTGlzdEF0dGVuZGVlc1Jlc3BvbnNlLFxuICBCb29raW5nU291cmNlLFxuICBMaXN0RXZlbnRUeXBlc0Zvck11bHRpcGxlQ2FsZW5kYXJzUmVzcG9uc2UsIExpc3RCb29raW5nVHlwZXNGb3JBSVJlc3BvbnNlLFxufSBmcm9tIFwiLi4vX2ludGVybmFsXCI7XG5cbmltcG9ydCB7IEJvb2tNZWV0aW5nUmVzcG9uc2UsIEJvb2tTZXNzaW9uUmVzcG9uc2UgfSBmcm9tIFwiLi4vZ3Vlc3RcIjtcblxuaW1wb3J0IHtcbiAgYW5zd2Vyc1RvQVBJLFxuICBBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzU2V0LFxuICBBdmFpbGFiaWxpdHlSdWxlLFxuICBCb29rZWRNZWV0aW5nR3JvdXAsXG4gIENhbGVuZGFyLFxuICBDYWxlbmRhckZyb21BcGksXG4gIEVudGl0eUFzc29jaWF0aW9ucyxcbiAgZ2V0RmllbGRNYXNrLFxuICBHcm91cCxcbiAgR3JvdXBGcm9tQXBpLFxuICBHcm91cFR5cGVUb0FQaSxcbiAgSG9zdFVybE1hcCxcbiAgTWVldGluZyxcbiAgTWVldGluZ0Zvcm0sXG4gIG1lZXRpbmdGcm9tQXBpLFxuICBNZWV0aW5nTWV0YWRhdGEsXG4gIE1lZXRpbmdTdGF0cyxcbiAgbWVldGluZ1N0YXRzRnJvbUFwaSxcbiAgTWVldGluZ1R5cGUsXG4gIE1lZXRpbmdUeXBlRnJvbUFwaSxcbiAgTWVldGluZ1R5cGVUb0FwaSxcbiAgUGFnZWRSZXNwb25zZSxcbiAgUHJlZmVyZW5jZXMsXG4gIFByZWZlcmVuY2VzRnJvbUFwaSxcbiAgU2VydmljZSxcbiAgU2VydmljZUZyb21BcGksXG4gIFNlcnZpY2VUeXBlVG9BcGksXG4gIFRpbWVTcGFuLFxuICBUaW1lU3BhbkZyb21BcGksXG59IGZyb20gXCIuLi9zaGFyZWRcIjtcbmltcG9ydCB7XG4gIGdldEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbixcbiAgZ2V0R2VuZXJhbEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbixcbn0gZnJvbSBcIi4vdXJsXCI7XG5pbXBvcnQgeyBIb3N0VXNlciwgaG9zdFVzZXJGcm9tQXBpIH0gZnJvbSBcIi4uL3NoYXJlZC9ob3N0LXVzZXJcIjtcbmltcG9ydCB7IEVudmlyb25tZW50LCBvblByb2R1Y3Rpb25HbG9iYWwgfSBmcm9tIFwiLi4vc2hhcmVkL2Vudmlyb25tZW50XCI7XG5pbXBvcnQgeyBIdHRwUmVzcG9uc2UgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCAqIGFzIGUgZnJvbSBcIi4uL19pbnRlcm5hbC9lbnVtc1wiO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgSG9zdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3RBUElTZXJ2aWNlOiBNZWV0aW5nSG9zdEFwaVNlcnZpY2UpIHt9XG5cbiAgLy8gVXNlIGJ1aWxkSG9zdElkIHRvIGdldCBhbiBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQgaW4gc3Vic2VxdWVudCByZXF1ZXN0cy4gU2VlIHZlbmRhc3RhYXBpcyBmb3IgbW9yZSBkZXRhaWxzXG4gIGJ1aWxkSG9zdElkKHJlcToge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIGFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXM6IEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNTZXQ7XG4gIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuYnVpbGRIb3N0SWQoe1xuICAgICAgICB1c2VySWQ6IHJlcS51c2VySWQsXG4gICAgICAgIC8vIEdyb3NzIHR5cGVjYXN0IGV4aXN0cyBiZWNhdXNlIEkgd2FudCB0byByZXN0cmljdCB0aGUgcHJvcGVydGllcyBvbiB0aGUgbWFwIChmb3Igbm93KS5cbiAgICAgICAgYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllczpcbiAgICAgICAgICByZXEuYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyBhcyBhbnkgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gcmVzLmhvc3RJZCB8fCBcIlwiKSk7XG4gIH1cblxuICBkb2VzQ2FsZW5kYXJFeGlzdChjYWxlbmRhcklkZW50aWZpZXI6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZG9lc0NhbGVuZGFyRXhpc3QoeyBjYWxlbmRhcklkZW50aWZpZXI6IGNhbGVuZGFySWRlbnRpZmllciB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwKSA9PiByZXNwLmV4aXN0cykpO1xuICB9XG5cbiAgZ2V0Q2FsZW5kYXIocmVxOiB7IGNhbGVuZGFySWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxDYWxlbmRhcj4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZ2V0Q2FsZW5kYXIoeyBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCB9KVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IENhbGVuZGFyRnJvbUFwaShyZXM/LmNhbGVuZGFyKSkpO1xuICB9XG5cbiAgZW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0cyhyZXE6IHtcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOiBBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzU2V0O1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHMoe1xuICAgICAgICB1c2VySWQ6IHJlcS51c2VySWQsXG4gICAgICAgIGFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXM6XG4gICAgICAgICAgcmVxLmFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMgYXMgYW55IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IChyZXMgPyByZXMuY2FsZW5kYXJJZCA6IFwiXCIpKSk7XG4gIH1cblxuICBlbnN1cmVHcm91cENhbGVuZGFyc0V4aXN0KHJlcToge1xuICAgIGV4dGVybmFsSWRzOiBzdHJpbmdbXTtcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3QoeyBleHRlcm5hbElkczogcmVxLmV4dGVybmFsSWRzIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gcmVzPy5jYWxlbmRhcklkcyB8fCBbXSkpO1xuICB9XG5cbiAgLypcbiAgICAgY3JlYXRlQ2FsZW5kYXIgY3JlYXRlcyBhIGNhbGVuZGFyIHdoaWNoIG1lZXRpbmcgdHlwZXMgY2FuIGJlIGNyZWF0ZWQgZm9yIGFuZCBldmVudHMgY2FuIGJlIGJvb2tlZCBvblxuICAgICBUaGUgZmllbGRzIG9mIGEgY2FsZW5kYXIgYXJlIGRvY3VtZW50ZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL3ZlbmRhc3RhL3ZlbmRhc3RhYXBpcy9ibG9iL21hc3Rlci9tZWV0aW5ncy92MS9zaGFyZWQucHJvdG9cbiAgICAqL1xuICBjcmVhdGVDYWxlbmRhcihcbiAgICByZXE6IENyZWF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSxcbiAgKTogT2JzZXJ2YWJsZTxDcmVhdGVDYWxlbmRhclJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuY3JlYXRlQ2FsZW5kYXIocmVxKTtcbiAgfVxuXG4gIHVwZGF0ZUNhbGVuZGFyU2x1ZyhjYWxlbmRhcklkOiBzdHJpbmcsIG5ld1NsdWc6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlQ2FsZW5kYXIoe1xuICAgICAgICBjYWxlbmRhcklkOiBjYWxlbmRhcklkLFxuICAgICAgICBjYWxlbmRhclVwZGF0ZTogeyBzbHVnOiBuZXdTbHVnIH0sXG4gICAgICAgIGZpZWxkTWFzazogeyBwYXRoczogW1wic2x1Z1wiXSB9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgdXBkYXRlQ2FsZW5kYXJIb3N0VXNlcklEcyhcbiAgICBjYWxlbmRhcklkOiBzdHJpbmcsXG4gICAgcmVwbGFjZW1lbnRIb3N0VXNlcklkczogc3RyaW5nW10sXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlQ2FsZW5kYXIoe1xuICAgICAgICBjYWxlbmRhcklkOiBjYWxlbmRhcklkLFxuICAgICAgICBjYWxlbmRhclVwZGF0ZTogeyBob3N0VXNlcklkczogcmVwbGFjZW1lbnRIb3N0VXNlcklkcyB9LFxuICAgICAgICBmaWVsZE1hc2s6IHsgcGF0aHM6IFtcImhvc3RfdXNlcl9pZHNcIl0gfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFycyhyZXE6IHtcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW107XG4gICAgbWV0YWRhdGE6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICB9KTogT2JzZXJ2YWJsZTx7IFtjYWxlbmRhcklkOiBzdHJpbmddOiBNZWV0aW5nVHlwZVtdIH0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFycyh7IGNhbGVuZGFySWRzOiByZXEuY2FsZW5kYXJJZHMgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICAgIGlmICghcmVzPy5jYWxlbmRhck1lZXRpbmdUeXBlc01hcCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocmVzLmNhbGVuZGFyTWVldGluZ1R5cGVzTWFwKS5yZWR1Y2UoXG4gICAgICAgICAgICAoY2FsZW5kYXJUb01lZXRpbmdUeXBlTWFwLCBjYWxlbmRhcklkKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1lZXRpbmdUeXBlcyA9IChcbiAgICAgICAgICAgICAgICByZXMuY2FsZW5kYXJNZWV0aW5nVHlwZXNNYXBbY2FsZW5kYXJJZF0/Lm1lZXRpbmdUeXBlcyB8fCBbXVxuICAgICAgICAgICAgICApLm1hcCgobXQpID0+XG4gICAgICAgICAgICAgICAgTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiBtdCxcbiAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgICAgICAgICAgY2FsZW5kYXJJZCxcbiAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uY2FsZW5kYXJUb01lZXRpbmdUeXBlTWFwLFxuICAgICAgICAgICAgICAgIFtjYWxlbmRhcklkXTogbWVldGluZ1R5cGVzLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHt9IGFzIHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IE1lZXRpbmdUeXBlW10gfSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICAvKlxuICAgICBsaXN0TWVldGluZ1R5cGVzIHJldHVybnMgYSBsaXN0IG9mIG1lZXRpbmcgdHlwZXMgZm9yIGEgaG9zdFxuICAgICBAcGFyYW0gaG9zdElkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3RcbiAgICAgQHBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCBtZXRhZGF0YSB0byBpbmNsdWRlIG9uIHRoZSBtZWV0aW5nIHR5cGUgYm9va2luZyBsaW5rXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAgICAtIGNhbGVuZGFyU2x1ZyBJUyBOT1QgVVNFRCBUTyBSRVRSSUVWRSBNRUVUSU5HIFRZUEVTLCBPTkxZIFRPIE1BS0UgVEhFIEJPT0tJTkcgVVJMU1xuICAgKi9cbiAgbGlzdE1lZXRpbmdUeXBlcyhyZXE6IHtcbiAgICBob3N0SWQ6IHN0cmluZztcbiAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8TWVldGluZ1R5cGVbXT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmxpc3RNZWV0aW5nVHlwZXMocmVxKS5waXBlKFxuICAgICAgbWFwKChyZXNwKSA9PiB7XG4gICAgICAgIGlmICghcmVzcCB8fCAhcmVzcC5tZWV0aW5nVHlwZXMpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3AubWVldGluZ1R5cGVzLm1hcCgobXQpID0+IHtcbiAgICAgICAgICByZXR1cm4gTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiBtdCxcbiAgICAgICAgICAgIGNhbGVuZGFySWQ6IHJlcS5ob3N0SWQsXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogb25Qcm9kdWN0aW9uR2xvYmFsKClcbiAgICAgICAgICAgICAgPyBFbnZpcm9ubWVudC5QUk9EXG4gICAgICAgICAgICAgIDogRW52aXJvbm1lbnQuREVNTyxcbiAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAgIGdldEV2ZW50VHlwZUJ5SWQgcmV0dXJucyBhIHNpbmdsZSBtZWV0aW5nIHR5cGUgYnkgSUQuXG4gICAgIEBwYXJhbSBldmVudFR5cGVJZDogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZXZlbnQgdHlwZVxuICAgICBAcGFyYW0gbWV0YWRhdGE6IG9wdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgb24gdGhlIG1lZXRpbmcgdHlwZSBib29raW5nIGxpbmtcbiAgICAgQHBhcmFtIGNhbGVuZGFyU2x1ZzogdXNlZCB0byByZXBsYWNlIGhvc3RJZCBpbiB0aGUgdXJsLiBVc2UgaXQgd2hlbiB5b3UgYXJlIGNvbmZpZGVudCB5b3Uga25vdyB0aGUgaG9zdCdzIHNsdWcuXG4gICAgICAgIC0gY2FsZW5kYXJTbHVnIElTIE5PVCBVU0VEIFRPIFJFVFJJRVZFIFRIRSBFVkVOVCBUWVBFLCBPTkxZIFRPIE1BS0UgVEhFIEJPT0tJTkcgVVJMXG4gICAqL1xuICBnZXRFdmVudFR5cGVCeUlkKHJlcToge1xuICAgIGV2ZW50VHlwZUlkOiBzdHJpbmc7XG4gICAgbWV0YWRhdGE/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBjYWxlbmRhclNsdWc/OiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPE1lZXRpbmdUeXBlIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZ2V0RXZlbnRUeXBlQnlJZCh7IGV2ZW50VHlwZUlkOiByZXEuZXZlbnRUeXBlSWQgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3ApID0+IHtcbiAgICAgICAgICBpZiAoIXJlc3AubWVldGluZ1R5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBNZWV0aW5nVHlwZUZyb21BcGkoe1xuICAgICAgICAgICAgbWVldGluZ1R5cGVBcGk6IHJlc3AubWVldGluZ1R5cGUsXG4gICAgICAgICAgICBjYWxlbmRhcklkOiByZXNwLm1lZXRpbmdUeXBlLmNhbGVuZGFySWQgfHwgXCJcIixcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHJlcS5tZXRhZGF0YSxcbiAgICAgICAgICAgIGNhbGVuZGFyU2x1ZzogcmVxLmNhbGVuZGFyU2x1ZyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKlxuICAgICBnZXRCb29raW5nVXJsIHJldHVybnMgYSBsaW5rIHRoYXQgY2FuIGJlIHVzZWQgdG8gYm9vayBhIG1lZXRpbmcgd2l0aCB0aGlzIGhvc3QuXG4gICAgIEBwYXJhbSBjYWxlbmRhcklkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3Qgb3IgZ3JvdXBpbmcgb2YgaG9zdHMgKGkuZS4sIHRlYW0pLlxuICAgICBAcGFyYW0gQGRlcHJlY2F0ZWQgaG9zdElkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3QuXG4gICAgIEBwYXJhbSBtZWV0aW5nVHlwZUlkOiBBbiBvcHRpb25hbCBpZGVudGlmaWVyIGZvciB0aGUgbWVldGluZyB0eXBlLiBEZWZhdWx0OiAzMC1taW51dGVzLlxuICAgICBAcGFyYW0gbWV0YWRhdGE6IG9wdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIHVybC5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBwcmUtZmlsbCBjZXJ0YWluIGZvcm0gZmllbGRzIGFuZCB3aWxsIGJlIHN0b3JlZCBkdXJpbmcgdGhlIGJvb2tpbmcgcHJvY2Vzcy5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgb2J0YWluZWQgYnkgc3Vic2NyaWJpbmcgdG8gdGhlIGJvb2tpbmcgZXZlbnQuXG4gICAgQHBhcmFtIGNhbGVuZGFyU2x1ZzogdXNlZCB0byByZXBsYWNlIGhvc3RJZCBpbiB0aGUgdXJsLiBVc2UgaXQgd2hlbiB5b3UgYXJlIGNvbmZpZGVudCB5b3Uga25vdyB0aGUgaG9zdCdzIHNsdWcuXG4gICAgICovXG4gIGdldEJvb2tpbmdVcmwocmVxOiB7XG4gICAgLy8gQGRlcHJlY2F0ZWQ6IHVzZSBjYWxlbmRhcklkIGluc3RlYWQuIGNhbGVuZGFySWQgbm90IHJlcXVpcmVkIHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNsaWVudHMuXG4gICAgaG9zdElkOiBzdHJpbmc7XG4gICAgY2FsZW5kYXJJZD86IHN0cmluZztcbiAgICAvLyBAZGVwcmVjYXRlZDogdXNlIG1lZXRpbmdUeXBlU2x1ZyBpbnN0ZWFkXG4gICAgbWVldGluZ1R5cGVJZD86IHN0cmluZztcbiAgICBtZWV0aW5nVHlwZVNsdWc/OiBzdHJpbmc7XG4gICAgbWV0YWRhdGE/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBjYWxlbmRhclNsdWc/OiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBvZihcbiAgICAgIGdldEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbih7XG4gICAgICAgIC4uLnJlcSxcbiAgICAgICAgY2FsZW5kYXJJZDogcmVxLmNhbGVuZGFySWQgfHwgcmVxLmhvc3RJZCxcbiAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpID8gRW52aXJvbm1lbnQuUFJPRCA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgIGNhbGVuZGFyU2x1ZzogcmVxLmNhbGVuZGFyU2x1ZyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKlxuICAgICBnZXRHZW5lcmFsQm9va2luZ1VybCByZXR1cm5zIGEgbGluayB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIG1lZXRpbmcgdHlwZSB0byBib29rIHdpdGggdGhlIGdpdmVuIGNhbGVuZGFyLlxuICAgICBAcGFyYW0gY2FsZW5kYXJJZDogQW4gaWRlbnRpZmllciBmb3IgYW4gaW5kaXZpZHVhbCBob3N0IG9yIGdyb3VwaW5nIG9mIGhvc3RzIChpLmUuLCB0ZWFtKS5cbiAgICAgQHBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCBtZXRhZGF0YSB0byBpbmNsdWRlIGluIHRoZSB1cmwuXG4gICAgIC0gbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gcHJlLWZpbGwgY2VydGFpbiBmb3JtIGZpZWxkcyBhbmQgd2lsbCBiZSBzdG9yZWQgZHVyaW5nIHRoZSBib29raW5nIHByb2Nlc3MuXG4gICAgIC0gbWV0YWRhdGEgY2FuIGJlIG9idGFpbmVkIGJ5IHN1YnNjcmliaW5nIHRvIHRoZSBib29raW5nIGV2ZW50LlxuICAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgKi9cbiAgZ2V0R2VuZXJhbEJvb2tpbmdVcmwocmVxOiB7XG4gICAgY2FsZW5kYXJJZDogc3RyaW5nO1xuICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgY2FsZW5kYXJTbHVnPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gb2YoXG4gICAgICBnZXRHZW5lcmFsQm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpID8gRW52aXJvbm1lbnQuUFJPRCA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgIGNhbGVuZGFySWQ6IHJlcS5jYWxlbmRhcklkLFxuICAgICAgICBtZXRhZGF0YTogcmVxLm1ldGFkYXRhLFxuICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICAgZ2V0Qm9va2luZ1VybHNNdWx0aSByZXR1cm5zIGEgbWFwcGluZyBvZiBob3N0cyAtPiBldmVudCB0eXBlcyAtPiBib29raW5nIGxpbmtzLlxuICAgICBAcGFyYW0gY2FsZW5kYXJJZDogQW4gaWRlbnRpZmllciBmb3IgYW4gaW5kaXZpZHVhbCBob3N0IG9yIGdyb3VwaW5nIG9mIGhvc3RzLlxuICAgICBAcGFyYW0gbWVldGluZ1R5cGVTbHVnOiBtZWV0aW5nVHlwZVNsdWdzIGFyZSBwYXNzZWQgaW4gdGhlIGZvcm0ge2hvc3RJZDogW21lZXRpbmdUeXBlU2x1ZzEsIG1lZXRpbmdUeXBlU2x1ZzJdfVxuICAgICBAcGFyYW0gbWV0YWRhdGE6IG9wdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIHVybC5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBwcmUtZmlsbCBjZXJ0YWluIGZvcm0gZmllbGRzIGFuZCB3aWxsIGJlIHN0b3JlZCBkdXJpbmcgdGhlIGJvb2tpbmcgcHJvY2Vzcy5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgb2J0YWluZWQgYnkgc3Vic2NyaWJpbmcgdG8gdGhlIGJvb2tpbmcgZXZlbnQuXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAqL1xuICBnZXRCb29raW5nVXJsc011bHRpKFxuICAgIHJlcTogeyBbY2FsZW5kYXJJZDogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxIb3N0VXJsTWFwPiB7XG4gICAgcmV0dXJuIG9mKFxuICAgICAgT2JqZWN0LmtleXMocmVxKS5yZWR1Y2UoKGhvc3RNYXAsIGNhbGVuZGFySWQpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5ob3N0TWFwLFxuICAgICAgICAgIFtjYWxlbmRhcklkXTogcmVxW2NhbGVuZGFySWRdLnJlZHVjZShcbiAgICAgICAgICAgIChtZWV0aW5nVHlwZU1hcCwgbWVldGluZ1R5cGVTbHVnKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4ubWVldGluZ1R5cGVNYXAsXG4gICAgICAgICAgICAgICAgW21lZXRpbmdUeXBlU2x1Z106IGdldEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbih7XG4gICAgICAgICAgICAgICAgICBjYWxlbmRhcklkLFxuICAgICAgICAgICAgICAgICAgbWVldGluZ1R5cGVTbHVnLFxuICAgICAgICAgICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogb25Qcm9kdWN0aW9uR2xvYmFsKClcbiAgICAgICAgICAgICAgICAgICAgPyBFbnZpcm9ubWVudC5QUk9EXG4gICAgICAgICAgICAgICAgICAgIDogRW52aXJvbm1lbnQuREVNTyxcbiAgICAgICAgICAgICAgICAgIGNhbGVuZGFyU2x1ZyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7fSBhcyB7IFttZWV0aW5nVHlwZUlkOiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgICAgfSwge30gYXMgSG9zdFVybE1hcCksXG4gICAgKTtcbiAgfVxuXG4gIGlzSG9zdENvbmZpZ3VyZWQocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuaXNIb3N0Q29uZmlndXJlZChyZXEpXG4gICAgICAucGlwZShtYXAoKHJlc3A6IElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZSkgPT4gcmVzcCkpO1xuICB9XG5cbiAgc2V0R2VuZXJhbEF2YWlsYWJpbGl0eShyZXE6IHtcbiAgICBob3N0SWQ6IHN0cmluZztcbiAgICBtZWV0aW5nVHlwZUlkOiBzdHJpbmc7XG4gICAgLy8gQGRlcHJlY2F0ZWQ6IHVzZSB3ZWVrZGF5c0F2YWlsYWJpbGl0eSBpbnN0ZWFkXG4gICAgZGF5cz86IERheU9mV2Vla1tdO1xuICAgIC8vIEBkZXByZWNhdGVkOiB1c2Ugd2Vla2RheXNBdmFpbGFiaWxpdHkgaW5zdGVhZFxuICAgIHRpbWVTbG90PzogVGltZVJhbmdlSW50ZXJmYWNlO1xuICAgIHdlZWtkYXlzQXZhaWxhYmlsaXR5PzogV2Vla2RheUF2YWlsYWJpbGl0eVtdO1xuICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZTtcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIGNvbnN0IGFwaVJlcSA9IHtcbiAgICAgIC4uLnJlcSxcbiAgICAgIHRpbWVab25lOiBuZXcgVGltZVpvbmUocmVxLnRpbWVab25lKSxcbiAgICB9O1xuICAgIGlmIChyZXEudGltZVNsb3QpIHtcbiAgICAgIGFwaVJlcS50aW1lU2xvdCA9IG5ldyBUaW1lUmFuZ2UocmVxLnRpbWVTbG90KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2Uuc2V0R2VuZXJhbEF2YWlsYWJpbGl0eShhcGlSZXEpLnBpcGUobWFwVG8obnVsbCkpO1xuICB9XG5cbiAgbGlzdEJvb2tlZE1lZXRpbmdzKHJlcToge1xuICAgIGZpbHRlcnM6IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlO1xuICAgIGN1cnNvcjogc3RyaW5nO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlO1xuICB9KTogT2JzZXJ2YWJsZTxQYWdlZFJlc3BvbnNlPE1lZXRpbmc+PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5saXN0Qm9va2VkTWVldGluZ3Moe1xuICAgICAgICAuLi5yZXEsXG4gICAgICAgIHBhZ2luZ09wdGlvbnM6IG5ldyBQYWdlZFJlcXVlc3RPcHRpb25zKHtcbiAgICAgICAgICBjdXJzb3I6IHJlcS5jdXJzb3IsXG4gICAgICAgICAgcGFnZVNpemU6IHJlcS5wYWdlU2l6ZSxcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcnM6IG5ldyBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyhyZXEuZmlsdGVycyksXG4gICAgICAgIHRpbWVab25lOiBuZXcgVGltZVpvbmUocmVxLnRpbWVab25lKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwOiBMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lZXRpbmdzID0gKHJlc3AubWVldGluZ3MgfHwgW10pLm1hcCgobWVldGluZykgPT5cbiAgICAgICAgICAgIG1lZXRpbmdGcm9tQXBpKG1lZXRpbmcpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQYWdlZFJlc3BvbnNlKFxuICAgICAgICAgICAgbWVldGluZ3MsXG4gICAgICAgICAgICByZXNwLnBhZ2luZ01ldGFkYXRhLm5leHRDdXJzb3IsXG4gICAgICAgICAgICByZXNwLnBhZ2luZ01ldGFkYXRhLmhhc01vcmUsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgY2FuY2VsTWVldGluZyhyZXE6IHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBjYW5jZWxsYXRpb25SZWFzb246IHN0cmluZztcbiAgICBib29raW5nU291cmNlPzogQm9va2luZ1NvdXJjZTtcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY2FuY2VsTWVldGluZyh7XG4gICAgICAgIC4uLnJlcSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyhudWxsKSk7XG4gIH1cblxuICByZXNjaGVkdWxlTWVldGluZyhyZXE6IHsgbWVldGluZ0lkOiBzdHJpbmc7IHN0YXJ0OiBEYXRlOyBib29raW5nU291cmNlPzogQm9va2luZ1NvdXJjZSB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5yZXNjaGVkdWxlTWVldGluZyh7XG4gICAgICAgIC4uLnJlcSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyhudWxsKSk7XG4gIH1cblxuICBsaXN0QXZhaWxhYmlsaXR5KHJlcToge1xuICAgIGZpbHRlcnM6IExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZTtcbiAgICBwYWdpbmdPcHRpb25zOiBQYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlO1xuICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZTtcbiAgfSk6IE9ic2VydmFibGU8UGFnZWRSZXNwb25zZTxBdmFpbGFiaWxpdHlSdWxlPj4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmxpc3RBdmFpbGFiaWxpdHkocmVxKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gKHJlc3BvbnNlLmF2YWlsYWJpbGl0eVJ1bGVzIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAubWFwKChhKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBob3N0SWQ6IGEuaG9zdElkIHx8IFwiXCIsXG4gICAgICAgICAgICAgIG1lZXRpbmdUeXBlSWQ6IGEubWVldGluZ1R5cGVJZCB8fCBcIlwiLFxuICAgICAgICAgICAgICBkYXk6IGEuZGF5LFxuICAgICAgICAgICAgICB0aW1lU2xvdDogYS50aW1lU2xvdCxcbiAgICAgICAgICAgICAgdGltZVpvbmU6IGEudGltZVpvbmUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFBhZ2VkUmVzcG9uc2UoXG4gICAgICAgICAgcmVzdWx0cyxcbiAgICAgICAgICByZXNwb25zZS5tZXRhZGF0YS5uZXh0Q3Vyc29yLFxuICAgICAgICAgIHJlc3BvbnNlLm1ldGFkYXRhLmhhc01vcmUsXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyogdXBkYXRlUHJlZmVyZW5jZXMgd2lsbCB1cGRhdGUgdGhlIGhvc3QncyBwcmVmZXJlbmNlcy5cbiAgICogSXQgaXMgZ3VhcmFudGVlZCB0byBvbmx5IHVwZGF0ZSB0aGUgZmllbGRzIHByb3ZpZGVkLlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogIHVwZGF0ZVByZWZlcmVuY2VzKHttZWV0aW5nSW50ZWdyYXRpb246IE1lZXRpbmdTb3VyY2UuTUVFVElOR19TT1VSQ0VfR09PR0xFX01FRVR9KVxuICAgKiAgd2lsbCBvbmx5IHVwZGF0ZSB0aGUgcHJlZmVyZW5jZSBtZWV0aW5nSW50ZWdyYXRpb24gdG8gR29vZ2xlIE1lZXQuIEtlZXBpbmcgdGhlIG90aGVyIHByZWZlcmVuY2VzIHRoZSBzYW1lLlxuICAgKlxuICAgKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHByb3ZpZGUgYSBsaXN0IG9mIGtleXMgdG8gdXBkYXRlIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuXG4gICAqIEZvciBleGFtcGxlOlxuICAgKiAgIHVwZGF0ZVByZWZlcmVuY2VzKHsuLi5vYmplY3Qgd2l0aCBhbGwgZmllbGRzfSwgWydtZWV0aW5nSW50ZWdyYXRpb24nXSlcbiAgICogICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBmaWVsZCAnbWVldGluZ0ludGVncmF0aW9uJyB0byB0aGUgdmFsdWUgaW4gcHJlZmVyZW5jZXMuXG4gICAqXG4gICAqIENhbGxpbmcgd2l0aCBhbiBlbXB0eSBvYmplY3QgYW5kIG5vIGtleXMgaXMgYSBuby1vcCwgb3IgYW4gdW5kZWZpbmVkIG9iamVjdC5cbiAgICogQ2FsbGluZyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIGZpZWxkcyBub3QgaW4gYFByZWZlcmVuY2VzYCBvciB3aXRoIHVwZGF0ZUZpZWxkcyBub3QgbGlua2VkIHRvIHByb3BlcnRpZXMgaW5cbiAgICogYFByZWZlcmVuY2VzYCBpcyBhbiBlcnJvci5cbiAgICovXG4gIHVwZGF0ZVByZWZlcmVuY2VzKHJlcToge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIHByZWZlcmVuY2VzOiBQYXJ0aWFsPFByZWZlcmVuY2VzPjtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgUHJlZmVyZW5jZXMpW107XG4gIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe1xuICAgICAgbzogcmVxLnByZWZlcmVuY2VzLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVIb3N0UHJlZmVyZW5jZXMoe1xuICAgICAgICBob3N0SWQ6IHJlcS5ob3N0SWQsXG4gICAgICAgIHByZWZlcmVuY2VzOiByZXEucHJlZmVyZW5jZXMsXG4gICAgICAgIGZpZWxkTWFzayxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGdldFByZWZlcmVuY2VzKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxQcmVmZXJlbmNlcz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZ2V0SG9zdFByZWZlcmVuY2VzKHtcbiAgICAgICAgaG9zdElkOiByZXEuaG9zdElkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2UpID0+IFByZWZlcmVuY2VzRnJvbUFwaShyZXNwb25zZS5wcmVmZXJlbmNlcykpKTtcbiAgfVxuXG4gIGdldE1lZXRpbmcobWVldGluZ0lkOiBzdHJpbmcsIGxvY2F0aW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1lZXRpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmdldEhvc3RNZWV0aW5nKHtcbiAgICAgICAgbWVldGluZ0lkOiBtZWV0aW5nSWQsXG4gICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwOiBHZXRIb3N0TWVldGluZ1Jlc3BvbnNlKSA9PiBtZWV0aW5nRnJvbUFwaShyZXNwLm1lZXRpbmcpKSxcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVNZWV0aW5nTWV0YWRhdGEocmVxOiB7XG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XG4gICAgbWV0YWRhdGE6IE1lZXRpbmdNZXRhZGF0YTtcbiAgfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlTWVldGluZ01ldGFkYXRhKHtcbiAgICAgICAgbWVldGluZ0lkOiByZXEubWVldGluZ0lkLFxuICAgICAgICBtZXRhZGF0YTogcmVxLm1ldGFkYXRhLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgaG9zdEJvb2tNZWV0aW5nKHJlcToge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlSWQ6IHN0cmluZztcbiAgICBzdGFydDogRGF0ZTtcbiAgICBjb21tZW50OiBzdHJpbmc7XG4gICAgbWV0YWRhdGE/OiBNZWV0aW5nTWV0YWRhdGE7XG4gICAgYXR0ZW5kZWVzOiAoT21pdDxcbiAgICAgIENvbnRhY3QsXG4gICAgICBcImZyb21Qcm90b1wiIHwgXCJ0b0FwaUpzb25cIiB8IFwiY29uc3RydWN0b3JcIiB8IFwidGltZVpvbmVcIlxuICAgID4gJiB7IHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZSB9KVtdO1xuICAgIGxvY2F0aW9uPzogc3RyaW5nO1xuICAgIHVzZXJJZD86IHN0cmluZztcbiAgICBib29raW5nU291cmNlPzogQm9va2luZ1NvdXJjZTtcbiAgfSk6IE9ic2VydmFibGU8Qm9va01lZXRpbmdSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmhvc3RCb29rTWVldGluZyh7XG4gICAgICAuLi5yZXEsXG4gICAgICBhdHRlbmRlZXM6IHJlcS5hdHRlbmRlZXMsXG4gICAgfSk7XG4gIH1cblxuICBob3N0Qm9va1Nlc3Npb24oXG4gICAgcmVxOiBIb3N0Qm9va1Nlc3Npb25SZXF1ZXN0SW50ZXJmYWNlLFxuICApOiBPYnNlcnZhYmxlPEJvb2tTZXNzaW9uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5ob3N0Qm9va1Nlc3Npb24oe1xuICAgICAgLi4ucmVxLFxuICAgIH0pO1xuICB9XG5cbiAgYm9va01lZXRpbmcocmVxOiBIb3N0Qm9va01lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmJvb2tNZWV0aW5nKHJlcSlcbiAgICAgIC5waXBlKG1hcCgocmVzcDogSG9zdEJvb2tNZWV0aW5nUmVzcG9uc2UpID0+IHJlc3AubWVldGluZ0lkKSk7XG4gIH1cblxuICAvLyBsaXN0Qm9va2VkTWVldGluZ3NWMiByZXR1cm5zIGJvb2tpbmdzIGdyb3VwZWQgYnkgYm9va2luZ19ncm91cF9pZC5cbiAgLy8gU3RhbmRhbG9uZSBtZWV0aW5ncyBhcHBlYXIgYXMgYSBzaW5nbGUtZW50cnkgQm9va2VkTWVldGluZ0dyb3VwIHdpdGggYW4gZW1wdHlcbiAgLy8gYm9va2luZ0dyb3VwSWQ7IGJhdGNoIGJvb2tpbmdzIGFwcGVhciBhcyBvbmUgQm9va2VkTWVldGluZ0dyb3VwIHdpdGggTiBzaWJsaW5ncy5cbiAgbGlzdEJvb2tlZE1lZXRpbmdzVjIocmVxOiB7XG4gICAgZmlsdGVyczogTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnNJbnRlcmZhY2U7XG4gICAgY3Vyc29yOiBzdHJpbmc7XG4gICAgcGFnZVNpemU6IG51bWJlcjtcbiAgICB0aW1lWm9uZTogVGltZVpvbmVJbnRlcmZhY2U7XG4gIH0pOiBPYnNlcnZhYmxlPFBhZ2VkUmVzcG9uc2U8Qm9va2VkTWVldGluZ0dyb3VwPj4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAubGlzdEJvb2tlZE1lZXRpbmdzVjIoe1xuICAgICAgICBmaWx0ZXJzOiBuZXcgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnMocmVxLmZpbHRlcnMpLFxuICAgICAgICBwYWdpbmdPcHRpb25zOiBuZXcgUGFnZWRSZXF1ZXN0T3B0aW9ucyh7XG4gICAgICAgICAgY3Vyc29yOiByZXEuY3Vyc29yLFxuICAgICAgICAgIHBhZ2VTaXplOiByZXEucGFnZVNpemUsXG4gICAgICAgIH0pLFxuICAgICAgICB0aW1lWm9uZTogbmV3IFRpbWVab25lKHJlcS50aW1lWm9uZSksXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcDogTGlzdEJvb2tlZE1lZXRpbmdzVjJSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGJvb2tpbmdzID0gKHJlc3AuYm9va2luZ3MgfHwgW10pLm1hcCgoYm9va2luZykgPT4gKHtcbiAgICAgICAgICAgIGJvb2tpbmdHcm91cElkOiBib29raW5nLmJvb2tpbmdHcm91cElkIHx8IFwiXCIsXG4gICAgICAgICAgICBtZWV0aW5nczogKGJvb2tpbmcubWVldGluZ3MgfHwgW10pLm1hcCgobWVldGluZykgPT5cbiAgICAgICAgICAgICAgbWVldGluZ0Zyb21BcGkobWVldGluZyksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VkUmVzcG9uc2UoXG4gICAgICAgICAgICBib29raW5ncyxcbiAgICAgICAgICAgIHJlc3AucGFnaW5nTWV0YWRhdGEubmV4dEN1cnNvcixcbiAgICAgICAgICAgIHJlc3AucGFnaW5nTWV0YWRhdGEuaGFzTW9yZSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICAvLyBob3N0Qm9va0JhdGNoTWVldGluZyBib29rcyBhIG1lZXRpbmcgb24gdGhlIGhvc3QgY2FsZW5kYXIg4oCUIHNpbmdsZS1zZXJ2aWNlXG4gIC8vIChOPTEgdGFyZ2V0KSBvciBtdWx0aS1zZXJ2aWNlIChOPjEgb3JkZXJlZCB0YXJnZXRzKS4gUmV0dXJucyB0aGUgYm9va2luZ19ncm91cF9pZC5cbiAgaG9zdEJvb2tCYXRjaE1lZXRpbmcocmVxOiB7XG4gICAgY2FsZW5kYXJJZDogc3RyaW5nO1xuICAgIHRhcmdldHM6IEJhdGNoQm9va2luZ1RhcmdldEludGVyZmFjZVtdO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIGF0dGVuZGVlcz86IENvbnRhY3RJbnRlcmZhY2VbXTtcbiAgICBjb21tZW50Pzogc3RyaW5nO1xuICAgIG1ldGFkYXRhPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBmb3JtQW5zd2Vycz86IE1lZXRpbmdGb3JtO1xuICAgIGxvY2F0aW9uPzogc3RyaW5nO1xuICAgIGJvb2tpbmdTb3VyY2U/OiBCb29raW5nU291cmNlO1xuICAgIGJvb2tpbmdPcmlnaW5JZD86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5ob3N0Qm9va0JhdGNoTWVldGluZyh7XG4gICAgICAgIC4uLnJlcSxcbiAgICAgICAgZm9ybUFuc3dlcnM6IGFuc3dlcnNUb0FQSShyZXEuZm9ybUFuc3dlcnMpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3A6IEhvc3RCb29rQmF0Y2hNZWV0aW5nUmVzcG9uc2UpID0+IHJlc3AuYm9va2luZ0dyb3VwSWQpLFxuICAgICAgKTtcbiAgfVxuXG4gIC8vIGhvc3RSZXNjaGVkdWxlQmF0Y2hNZWV0aW5nIGFjY2VwdHMgZWl0aGVyIGEgc2luZ2xlIG1lZXRpbmdfaWQgb3IgYSBib29raW5nX2dyb3VwX2lkLlxuICAvLyBXaGVuIGEgYm9va2luZ19ncm91cF9pZCBpcyBwYXNzZWQgdGhlIHNlcnZlciByZXNjaGVkdWxlcyBldmVyeSBzaWJsaW5nIGF0b21pY2FsbHksXG4gIC8vIHByZXNlcnZpbmcgcGVyLXNpYmxpbmcgZHVyYXRpb25zIGFuZCBzaGlmdGluZyBhbGwgYnkgdGhlIHNhbWUgZGVsdGEuXG4gIGhvc3RSZXNjaGVkdWxlQmF0Y2hNZWV0aW5nKHJlcToge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgc3RhcnQ6IERhdGU7XG4gICAgbG9jYXRpb24/OiBzdHJpbmc7XG4gICAgdGltZVpvbmU/OiBUaW1lWm9uZUludGVyZmFjZTtcbiAgICBib29raW5nU291cmNlPzogQm9va2luZ1NvdXJjZTtcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuaG9zdFJlc2NoZWR1bGVCYXRjaE1lZXRpbmcocmVxKVxuICAgICAgLnBpcGUobWFwVG8obnVsbCkpO1xuICB9XG5cbiAgLy8gaG9zdENhbmNlbEJhdGNoTWVldGluZyBhY2NlcHRzIGVpdGhlciBhIHNpbmdsZSBtZWV0aW5nX2lkIG9yIGEgYm9va2luZ19ncm91cF9pZC5cbiAgLy8gRm9yIHBhcnRpYWwtZ3JvdXAgY2FuY2VsbGF0aW9uIHRoZSBGRSBpc3N1ZXMgTiBwYXJhbGxlbCBjYWxscyBlYWNoIHdpdGggdGhlXG4gIC8vIGluZGl2aWR1YWwgbWVldGluZ19pZC5cbiAgaG9zdENhbmNlbEJhdGNoTWVldGluZyhyZXE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGNhbmNlbGxhdGlvblJlYXNvbj86IHN0cmluZztcbiAgICBib29raW5nU291cmNlPzogQm9va2luZ1NvdXJjZTtcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmhvc3RDYW5jZWxCYXRjaE1lZXRpbmcocmVxKS5waXBlKG1hcFRvKG51bGwpKTtcbiAgfVxuXG4gIC8vIGdldE1lZXRpbmdTdGF0cyByZXR1cm5zIGFnZ3JlZ2F0ZWQgbWVldGluZyBzdGF0aXN0aWNzIGZvciB0aGUgaG9zdCwgYmFja2luZyB0aGVcbiAgLy8gXCJNeSBNZWV0aW5nc1wiIGRhc2hib2FyZCBjYXJkLiB0aW1lU3BhbiBtdXN0IGJlIGV4cHJlc3NlZCBpbiB0aGUgY2FsbGVyJ3MgdGltZSB6b25lO1xuICAvLyB0aW1lWm9uZSBpcyB1c2VkIHRvIGJ1Y2tldCBtZWV0aW5ncyBpbnRvIGRheXMgYW5kIHRvIGFsaWduIHRoZSBjb21wYXJpc29uIHBlcmlvZC5cbiAgZ2V0TWVldGluZ1N0YXRzKHJlcToge1xuICAgIHRpbWVTcGFuOiBUaW1lU3BhbjtcbiAgICB0aW1lWm9uZTogVGltZVpvbmVJbnRlcmZhY2U7XG4gICAgYnVzaW5lc3NJZDogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxNZWV0aW5nU3RhdHM+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmdldE1lZXRpbmdTdGF0cyh7XG4gICAgICAgIHRpbWVTcGFuOiByZXEudGltZVNwYW4sXG4gICAgICAgIHRpbWVab25lOiByZXEudGltZVpvbmUsXG4gICAgICAgIGJ1c2luZXNzSWQ6IHJlcS5idXNpbmVzc0lkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcDogR2V0TWVldGluZ1N0YXRzUmVzcG9uc2UpID0+IG1lZXRpbmdTdGF0c0Zyb21BcGkocmVzcCkpKTtcbiAgfVxuXG4gIC8vIGhvc3RMaXN0QmF0Y2hBdmFpbGFibGVUaW1lU2xvdHMgcmV0dXJucyB2YWxpZCBjaGFpbiBzdGFydCB0aW1lcyBmb3IgYVxuICAvLyBtdWx0aS1zZXJ2aWNlIGhvc3QgYm9va2luZy4gRWFjaCBzbG90IGlzIHRoZSBzdGFydCBvZiB0aGUgZmlyc3QgbWVldGluZ1xuICAvLyBpbiB0aGUgY2hhaW4uXG4gIGhvc3RMaXN0QmF0Y2hBdmFpbGFibGVUaW1lU2xvdHMocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gICAgdGFyZ2V0czogQmF0Y2hFdmVudFR5cGVUYXJnZXRJbnRlcmZhY2VbXTtcbiAgICB0aW1lU3BhbjogVGltZVNwYW47XG4gICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlO1xuICB9KTogT2JzZXJ2YWJsZTxUaW1lU3BhbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5ob3N0TGlzdEJhdGNoQXZhaWxhYmxlVGltZVNsb3RzKHJlcSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3A6IEhvc3RMaXN0QmF0Y2hBdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwLmlzb1RpbWVTbG90cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcC5pc29UaW1lU2xvdHMubWFwKChpc28pID0+ICh7XG4gICAgICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZShpc28uc3RhcnQpLFxuICAgICAgICAgICAgICBlbmQ6IG5ldyBEYXRlKGlzby5lbmQpLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIC8vIGNyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXMgd2lsbCBjcmVhdGUgd2hhdCBNZWV0aW5nIFNjaGVkdWxlciBkZWVtcyB0byBiZSB0aGUgZGVmYXVsdCBtZWV0aW5nIHR5cGVzLlxuICAvLyBJZiB0aGUgY2FsZW5kYXIgYWxyZWFkeSBoYXMgbWVldGluZyB0eXBlcywgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGEgbm8tb3AuXG4gIGNyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXMocmVxOiB7IGNhbGVuZGFySWRzOiBzdHJpbmdbXSB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5jcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzKHsgY2FsZW5kYXJJZHM6IHJlcS5jYWxlbmRhcklkcyB9KVxuICAgICAgLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gIH1cblxuICBjcmVhdGVNZWV0aW5nVHlwZShyZXE6IHtcbiAgICBtZWV0aW5nVHlwZTogTWVldGluZ1R5cGU7XG4gICAgdXBkYXRlRmllbGRzPzogKGtleW9mIE1lZXRpbmdUeXBlKVtdO1xuICAgIEhvc3RJZD86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5tZWV0aW5nVHlwZSxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY3JlYXRlTWVldGluZ1R5cGUoe1xuICAgICAgICBtZWV0aW5nVHlwZTogTWVldGluZ1R5cGVUb0FwaSh7IG1lZXRpbmdUeXBlOiByZXEubWVldGluZ1R5cGUgfSksXG4gICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgaG9zdElkOiByZXEuSG9zdElkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXMuaWQpKTtcbiAgfVxuXG4gIC8qIHVwZGF0ZU1lZXRpbmdUeXBlIHdpbGwgdXBkYXRlIHRoZSBtZWV0aW5nIHR5cGUgZmllbGRzLlxuICAgKiBJdCBpcyBndWFyYW50ZWVkIHRvIG9ubHkgdXBkYXRlIHRoZSBmaWVsZHMgcHJvdmlkZWQuXG4gICAqIEZvciBleGFtcGxlOlxuICAgKiAgdXBkYXRlTWVldGluZ1R5cGUoe25hbWU6ICdPbmJvYXJkaW5nJ30pXG4gICAqICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBmaWVsZCAnbmFtZScgdG8gJ09uYm9hcmRpbmcnLiBLZWVwaW5nIHRoZSBvdGhlciBmaWVsZHMgdGhlIHNhbWUuXG4gICAqXG4gICAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gcHJvdmlkZSBhIGxpc3Qgb2Yga2V5cyB0byB1cGRhdGUgYXMgdGhlIHNlY29uZCBhcmd1bWVudC5cbiAgICogRm9yIGV4YW1wbGU6XG4gICAqICAgdXBkYXRlTWVldGluZ1R5cGUoey4uLm9iamVjdCB3aXRoIGFsbCBmaWVsZHN9LCBbJ25hbWUnXSlcbiAgICogICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBmaWVsZCAnbmFtZScgdG8gdGhlIHZhbHVlIHBhc3NlZCBpbi5cbiAgICpcbiAgICogQ2FsbGluZyB3aXRoIGFuIGVtcHR5IG9iamVjdCBhbmQgbm8ga2V5cyBpcyBhIG5vLW9wLCBvciBhbiB1bmRlZmluZWQgb2JqZWN0LlxuICAgKiBDYWxsaW5nIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgZmllbGRzIG5vdCBpbiBgTWVldGluZ1R5cGVgIG9yIHdpdGggdXBkYXRlRmllbGRzIG5vdCBsaW5rZWQgdG8gcHJvcGVydGllcyBpblxuICAgKiBgTWVldGluZ1R5cGVgIGlzIGFuIGVycm9yLlxuICAgKi9cbiAgdXBkYXRlTWVldGluZ1R5cGUocmVxOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBtZWV0aW5nVHlwZTogUGFydGlhbDxNZWV0aW5nVHlwZT47XG4gICAgdXBkYXRlRmllbGRzPzogKGtleW9mIE1lZXRpbmdUeXBlKVtdO1xuICAgIEhvc3RJZD86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGZpZWxkTWFzayA9IGdldEZpZWxkTWFzayh7XG4gICAgICBvOiByZXEubWVldGluZ1R5cGUsXG4gICAgICB1cGRhdGVGaWVsZHM6IHJlcS51cGRhdGVGaWVsZHMsXG4gICAgfSk7XG4gICAgaWYgKGZpZWxkTWFzay5wYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLnVwZGF0ZU1lZXRpbmdUeXBlKHtcbiAgICAgICAgaWQ6IHJlcS5pZCxcbiAgICAgICAgbWVldGluZ1R5cGU6IE1lZXRpbmdUeXBlVG9BcGkoeyBtZWV0aW5nVHlwZTogcmVxLm1lZXRpbmdUeXBlIH0pLFxuICAgICAgICBmaWVsZE1hc2ssXG4gICAgICAgIGhvc3RJZDogcmVxLkhvc3RJZCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGRlbGV0ZU1lZXRpbmdUeXBlKHJlcTogeyBpZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmRlbGV0ZU1lZXRpbmdUeXBlKHsgaWQ6IHJlcS5pZCB9KVxuICAgICAgLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gIH1cblxuICBnZXRIb3N0c0ZvckNhbGVuZGFyKHJlcTogeyBjYWxlbmRhcklkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8e1xuICAgIGhvc3RVc2VyczogSG9zdFVzZXJbXTtcbiAgICBhdmFpbGFiaWxpdHlSdWxlczogeyBba2V5OiBzdHJpbmddOiBBdmFpbGFiaWxpdHlSdWxlTGlzdCB9O1xuICB9PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5nZXRIb3N0c0ZvckNhbGVuZGFyKHsgY2FsZW5kYXJJZDogcmVxLmNhbGVuZGFySWQgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IGhvc3RVc2VycyA9IChyZXMuaG9zdFVzZXJzIHx8IFtdKS5tYXAoKGhvc3R1c2VyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaG9zdFVzZXJGcm9tQXBpKGhvc3R1c2VyKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGF2YWlsYWJpbGl0eVJ1bGVzID0gcmVzLmhvc3RVc2VyQXZhaWxhYmlsaXR5UnVsZSB8fCB7fTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBob3N0VXNlcnMsXG4gICAgICAgICAgICBhdmFpbGFiaWxpdHlSdWxlcyxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBJc0NhbGVuZGFyQ29uZmlndXJlZChcbiAgICByZXE6IElzQ2FsZW5kYXJDb25maWd1cmVkUmVxdWVzdEludGVyZmFjZSxcbiAgKTogT2JzZXJ2YWJsZTxJc0NhbGVuZGFyQ29uZmlndXJlZFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuaXNDYWxlbmRhckNvbmZpZ3VyZWQocmVxKTtcbiAgfVxuXG4gIHNlbmRNZWV0aW5nUmVxdWVzdEVtYWlsKFxuICAgIHJlcTogU2VuZE1lZXRpbmdSZXF1ZXN0RW1haWxSZXF1ZXN0SW50ZXJmYWNlLFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLnNlbmRNZWV0aW5nUmVxdWVzdEVtYWlsKHJlcSk7XG4gIH1cblxuICBjcmVhdGVTZXJ2aWNlKHJlcToge1xuICAgIHNlcnZpY2U6IFNlcnZpY2U7XG4gICAgdXBkYXRlRmllbGRzPzogKGtleW9mIFNlcnZpY2UpW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe1xuICAgICAgbzogcmVxLnNlcnZpY2UsXG4gICAgICB1cGRhdGVGaWVsZHM6IHJlcS51cGRhdGVGaWVsZHMsXG4gICAgfSk7XG4gICAgaWYgKGZpZWxkTWFzay5wYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmNyZWF0ZVNlcnZpY2Uoe1xuICAgICAgICBzZXJ2aWNlOiBTZXJ2aWNlVHlwZVRvQXBpKHsgc2VydmljZTogcmVxLnNlcnZpY2UgfSksXG4gICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgaG9zdElkOiByZXEuSG9zdElkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXMuaWQpKTtcbiAgfVxuXG4gIHVwZGF0ZVNlcnZpY2UocmVxOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBzZXJ2aWNlOiBQYXJ0aWFsPFNlcnZpY2U+O1xuICAgIHVwZGF0ZUZpZWxkcz86IChrZXlvZiBTZXJ2aWNlKVtdO1xuICAgIEhvc3RJZD86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGZpZWxkTWFzayA9IGdldEZpZWxkTWFzayh7XG4gICAgICBvOiByZXEuc2VydmljZSxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlU2VydmljZSh7XG4gICAgICAgIGlkOiByZXEuaWQsXG4gICAgICAgIHNlcnZpY2U6IFNlcnZpY2VUeXBlVG9BcGkoeyBzZXJ2aWNlOiByZXEuc2VydmljZSB9KSxcbiAgICAgICAgZmllbGRNYXNrLFxuICAgICAgICBob3N0SWQ6IHJlcS5Ib3N0SWQsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gIH1cblxuICBkZWxldGVTZXJ2aWNlKHJlcTogeyBpZDogc3RyaW5nOyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5kZWxldGVTZXJ2aWNlKHsgaWQ6IHJlcS5pZCwgaG9zdElkOiByZXEuaG9zdElkIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGxpc3RTZXJ2aWNlcyhyZXE6IHsgaG9zdElkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8U2VydmljZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdFNlcnZpY2VzKHsgaG9zdElkOiByZXEuaG9zdElkIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICBpZiAoIXJlcyB8fCAhcmVzLnNlcnZpY2VzKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXMuc2VydmljZXMubWFwKChzZXJ2aWNlKSA9PlxuICAgICAgICAgIFNlcnZpY2VGcm9tQXBpKHtcbiAgICAgICAgICAgIHNlcnZpY2VBcGk6IHNlcnZpY2UsXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogb25Qcm9kdWN0aW9uR2xvYmFsKClcbiAgICAgICAgICAgICAgPyBFbnZpcm9ubWVudC5QUk9EXG4gICAgICAgICAgICAgIDogRW52aXJvbm1lbnQuREVNTyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBjcmVhdGVHcm91cChyZXE6IHtcbiAgICBncm91cDogR3JvdXA7XG4gICAgdXBkYXRlRmllbGRzPzogKGtleW9mIEdyb3VwKVtdO1xuICAgIEhvc3RJZD86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5ncm91cCxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY3JlYXRlR3JvdXAoe1xuICAgICAgICBncm91cDogR3JvdXBUeXBlVG9BUGkoeyBncm91cDogcmVxLmdyb3VwIH0pLFxuICAgICAgICBmaWVsZE1hc2ssXG4gICAgICAgIGhvc3RJZDogcmVxLkhvc3RJZCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gcmVzLmlkKSk7XG4gIH1cblxuICB1cGRhdGVHcm91cChyZXE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGdyb3VwOiBQYXJ0aWFsPEdyb3VwPjtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgR3JvdXApW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5ncm91cCxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlR3JvdXAoe1xuICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICBncm91cDogR3JvdXBUeXBlVG9BUGkoeyBncm91cDogcmVxLmdyb3VwIH0pLFxuICAgICAgICBmaWVsZE1hc2ssXG4gICAgICAgIGhvc3RJZDogcmVxLkhvc3RJZCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGRlbGV0ZUdyb3VwKHJlcTogeyBpZDogc3RyaW5nOyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5kZWxldGVHcm91cCh7IGlkOiByZXEuaWQsIGhvc3RJZDogcmVxLmhvc3RJZCB9KVxuICAgICAgLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gIH1cblxuICBsaXN0R3JvdXBzKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEdyb3Vwcyh7IGhvc3RJZDogcmVxLmhvc3RJZCB9KS5waXBlKFxuICAgICAgbWFwKChyZXMpID0+IHtcbiAgICAgICAgaWYgKCFyZXMgfHwgIXJlcy5ncm91cHMpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcy5ncm91cHMubWFwKChncm91cCkgPT5cbiAgICAgICAgICBHcm91cEZyb21BcGkoe1xuICAgICAgICAgICAgZ3JvdXBBcGk6IGdyb3VwLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpXG4gICAgICAgICAgICAgID8gRW52aXJvbm1lbnQuUFJPRFxuICAgICAgICAgICAgICA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgZ2V0R3JvdXAocmVxOiB7XG4gICAgZ3JvdXBJZDogc3RyaW5nO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBob3N0SWQ6IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8R2V0R3JvdXBSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmdldEdyb3VwKHJlcSk7XG4gIH1cbiAgZ2V0U2VydmljZShyZXE6IHtcbiAgICBzZXJ2aWNlSWQ6IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPEdldFNlcnZpY2VSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmdldFNlcnZpY2UocmVxKTtcbiAgfVxuXG4gIGNoZWNrR3JvdXBPclNlcnZpY2VTbHVnRXhpc3QocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gICAgc2x1Z0lkZW50aWZpZXI6IHN0cmluZztcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5jaGVja0dyb3VwT3JTZXJ2aWNlU2x1Z0V4aXN0KHJlcSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXMuZXhpc3RzKSk7XG4gIH1cblxuICBjaGVja0V2ZW50VHlwZVNsdWdFeGlzdChyZXE6IHtcbiAgICBjYWxlbmRhcklkOiBzdHJpbmc7XG4gICAgc2x1Z0lkZW50aWZpZXI6IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY2hlY2tFdmVudFR5cGVTbHVnRXhpc3QocmVxKVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHJlcy5leGlzdHMpKTtcbiAgfVxuXG4gIGdldEVudGl0eUFzc29jaWF0aW9ucyhyZXE6IHtcbiAgICBlbnRpdHlJZDogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxFbnRpdHlBc3NvY2lhdGlvbnM+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRFbnRpdHlBc3NvY2lhdGlvbnMocmVxKTtcbiAgfVxuXG4gIGVuc3VyZVNlc3Npb25FdmVudENhbGVuZGFyc0V4aXN0KHJlcToge1xuICAgIGV4dGVybmFsSWQ6IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5lbnN1cmVTZXNzaW9uRXZlbnRDYWxlbmRhcnNFeGlzdCh7IGV4dGVybmFsSWQ6IHJlcS5leHRlcm5hbElkIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gcmVzPy5jYWxlbmRhcklkIHx8IFwiXCIpKTtcbiAgfVxuXG4gIGhvc3REZWxldGVBdHRlbmRlZXMocmVxOiB7XG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XG4gICAgZW1haWxzVG9EZWxldGU6IEVtYWlsc1RvRGVsZXRlW107XG4gIH0pOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmhvc3REZWxldGVBdHRlbmRlZXMoe1xuICAgICAgICAuLi5yZXEsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG8obnVsbCkpO1xuICB9XG5cbiAgbGlzdEF0dGVuZGVlcyhyZXE6IHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBwYWdpbmdPcHRpb25zOiBQYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlO1xuICB9KTogT2JzZXJ2YWJsZTxMaXN0QXR0ZW5kZWVzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5saXN0QXR0ZW5kZWVzKHJlcSk7XG4gIH1cblxuICBjYW5jZWxTZXNzaW9uKHJlcToge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIGNhbmNlbGxhdGlvblJlYXNvbjogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5jYW5jZWxTZXNzaW9uKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKG51bGwpKTtcbiAgfVxuXG4gIHJlc2NoZWR1bGVTZXNzaW9uKHJlcToge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIHNlc3Npb25JZDogc3RyaW5nO1xuICAgIGlzUmVjdXJyaW5nOiBib29sZWFuO1xuICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5yZXNjaGVkdWxlU2Vzc2lvbih7XG4gICAgICAgIC4uLnJlcSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyhudWxsKSk7XG4gIH1cblxuICBsaXN0QXZhaWxhYmxlVGltZXNsb3RzRm9yU2Vzc2lvbihyZXE6IHtcbiAgICBldmVudFR5cGVJZDogc3RyaW5nO1xuICAgIHRpbWVTcGFuOiBUaW1lU3BhbjtcbiAgICB0aW1lWm9uZTogVGltZVpvbmVJbnRlcmZhY2U7XG4gICAgdXNlcklkczogc3RyaW5nW107XG4gIH0pOiBPYnNlcnZhYmxlPFRpbWVTcGFuW10+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmxpc3RBdmFpbGFibGVUaW1lc2xvdHNGb3JTZXNzaW9uKHJlcSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3ApID0+XG4gICAgICAgICAgcmVzcC50aW1lU2xvdHMgPyByZXNwLnRpbWVTbG90cy5tYXAoKHRzKSA9PiBUaW1lU3BhbkZyb21BcGkodHMpKSA6IFtdLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgfVxuXG4gIGxpc3RFdmVudFR5cGVzRm9yTXVsdGlwbGVDYWxlbmRhcnMocmVxOiB7XG4gICAgY2FsZW5kYXJJZHM6IHN0cmluZ1tdO1xuICB9KTogT2JzZXJ2YWJsZTxMaXN0RXZlbnRUeXBlc0Zvck11bHRpcGxlQ2FsZW5kYXJzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5saXN0RXZlbnRUeXBlc0Zvck11bHRpcGxlQ2FsZW5kYXJzKHJlcSk7XG4gIH1cblxuICBsaXN0Qm9va2luZ1R5cGVzRm9yQWkocmVxOiB7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gICAgYm9va2luZ1NvdXJjZTogZS5Cb29raW5nU291cmNlO1xuICB9KTogT2JzZXJ2YWJsZTxMaXN0Qm9va2luZ1R5cGVzRm9yQUlSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmxpc3RCb29raW5nVHlwZXNGb3JBaShyZXEpO1xuICB9XG5cbn1cblxuIl19
|
|
678
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvaG9zdC9ob3N0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQXFCTCxnQ0FBZ0MsRUFJaEMscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUduQixTQUFTLEVBRVQsUUFBUSxHQVNULE1BQU0sY0FBYyxDQUFDO0FBSXRCLE9BQU8sRUFDTCxZQUFZLEVBS1osZUFBZSxFQUVmLFlBQVksRUFFWixZQUFZLEVBQ1osY0FBYyxFQUlkLGNBQWMsRUFHZCxtQkFBbUIsRUFFbkIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsa0JBQWtCLEVBRWxCLGNBQWMsRUFDZCxnQkFBZ0IsRUFFaEIsZUFBZSxHQUNoQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLGtDQUFrQyxHQUNuQyxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBWSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQUt4RSxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUFvQixjQUFxQztRQUFyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7SUFBRyxDQUFDO0lBRTdELGtIQUFrSDtJQUNsSCxXQUFXLENBQUMsR0FHWDtRQUNDLE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsV0FBVyxDQUFDO1lBQ1gsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1lB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Q3ZCLGlCQUFpQixDQUFDO1lBQ2pCLEdBQUcsR0FBRztTQUNQLENBQUM7YUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELGdDQUFnQyxDQUFDLEdBS2hDO1FBQ0MsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixnQ0FBZ0MsQ0FBQyxHQUFHLENBQUM7YUFDckMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3RFLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxrQ0FBa0MsQ0FBQyxHQUVsQztRQUNDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FJckI7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7d0dBaitCVSxXQUFXOzRHQUFYLFdBQVcsY0FERSxNQUFNOzJGQUNuQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBtYXAsIG1hcFRvIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge1xuICBBdmFpbGFiaWxpdHlSdWxlTGlzdCxcbiAgQmF0Y2hCb29raW5nVGFyZ2V0SW50ZXJmYWNlLFxuICBCYXRjaEV2ZW50VHlwZVRhcmdldEludGVyZmFjZSxcbiAgQ2hlY2tHcm91cE9yU2VydmljZVNsdWdFeGlzdFJlc3BvbnNlLFxuICBDb250YWN0SW50ZXJmYWNlLFxuICBDcmVhdGVDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UsXG4gIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2UsXG4gIERheU9mV2VlayxcbiAgR2V0R3JvdXBSZXNwb25zZSxcbiAgR2V0SG9zdE1lZXRpbmdSZXNwb25zZSxcbiAgR2V0TWVldGluZ1N0YXRzUmVzcG9uc2UsXG4gIEdldFNlcnZpY2VSZXNwb25zZSxcbiAgSG9zdEJvb2tCYXRjaE1lZXRpbmdSZXNwb25zZSxcbiAgSG9zdEJvb2tNZWV0aW5nUmVxdWVzdEludGVyZmFjZSxcbiAgSG9zdEJvb2tNZWV0aW5nUmVzcG9uc2UsXG4gIEhvc3RMaXN0QmF0Y2hBdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZSxcbiAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXF1ZXN0SW50ZXJmYWNlLFxuICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlc3BvbnNlLFxuICBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UsXG4gIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnMsXG4gIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlLFxuICBMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZSxcbiAgTGlzdEJvb2tlZE1lZXRpbmdzVjJSZXNwb25zZSxcbiAgTWVldGluZ0hvc3RBcGlTZXJ2aWNlLFxuICBQYWdlZFJlcXVlc3RPcHRpb25zLFxuICBQYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlLFxuICBTZW5kTWVldGluZ1JlcXVlc3RFbWFpbFJlcXVlc3RJbnRlcmZhY2UsXG4gIFRpbWVSYW5nZSxcbiAgVGltZVJhbmdlSW50ZXJmYWNlLFxuICBUaW1lWm9uZSxcbiAgVGltZVpvbmVJbnRlcmZhY2UsXG4gIFdlZWtkYXlBdmFpbGFiaWxpdHksXG4gIENvbnRhY3QsXG4gIEVtYWlsc1RvRGVsZXRlLFxuICBIb3N0Qm9va1Nlc3Npb25SZXF1ZXN0SW50ZXJmYWNlLFxuICBMaXN0QXR0ZW5kZWVzUmVzcG9uc2UsXG4gIEJvb2tpbmdTb3VyY2UsXG4gIExpc3RFdmVudFR5cGVzRm9yTXVsdGlwbGVDYWxlbmRhcnNSZXNwb25zZSwgTGlzdEJvb2tpbmdUeXBlc0ZvckFJUmVzcG9uc2UsXG59IGZyb20gXCIuLi9faW50ZXJuYWxcIjtcblxuaW1wb3J0IHsgQm9va01lZXRpbmdSZXNwb25zZSwgQm9va1Nlc3Npb25SZXNwb25zZSB9IGZyb20gXCIuLi9ndWVzdFwiO1xuXG5pbXBvcnQge1xuICBhbnN3ZXJzVG9BUEksXG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNTZXQsXG4gIEF2YWlsYWJpbGl0eVJ1bGUsXG4gIEJvb2tlZE1lZXRpbmdHcm91cCxcbiAgQ2FsZW5kYXIsXG4gIENhbGVuZGFyRnJvbUFwaSxcbiAgRW50aXR5QXNzb2NpYXRpb25zLFxuICBnZXRGaWVsZE1hc2ssXG4gIEdyb3VwLFxuICBHcm91cEZyb21BcGksXG4gIEdyb3VwVHlwZVRvQVBpLFxuICBIb3N0VXJsTWFwLFxuICBNZWV0aW5nLFxuICBNZWV0aW5nRm9ybSxcbiAgbWVldGluZ0Zyb21BcGksXG4gIE1lZXRpbmdNZXRhZGF0YSxcbiAgTWVldGluZ1N0YXRzLFxuICBtZWV0aW5nU3RhdHNGcm9tQXBpLFxuICBNZWV0aW5nVHlwZSxcbiAgTWVldGluZ1R5cGVGcm9tQXBpLFxuICBNZWV0aW5nVHlwZVRvQXBpLFxuICBQYWdlZFJlc3BvbnNlLFxuICBQcmVmZXJlbmNlcyxcbiAgUHJlZmVyZW5jZXNGcm9tQXBpLFxuICBTZXJ2aWNlLFxuICBTZXJ2aWNlRnJvbUFwaSxcbiAgU2VydmljZVR5cGVUb0FwaSxcbiAgVGltZVNwYW4sXG4gIFRpbWVTcGFuRnJvbUFwaSxcbn0gZnJvbSBcIi4uL3NoYXJlZFwiO1xuaW1wb3J0IHtcbiAgZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uLFxuICBnZXRHZW5lcmFsQm9va2luZ1VybEltcGxlbWVudGF0aW9uLFxufSBmcm9tIFwiLi91cmxcIjtcbmltcG9ydCB7IEhvc3RVc2VyLCBob3N0VXNlckZyb21BcGkgfSBmcm9tIFwiLi4vc2hhcmVkL2hvc3QtdXNlclwiO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIG9uUHJvZHVjdGlvbkdsb2JhbCB9IGZyb20gXCIuLi9zaGFyZWQvZW52aXJvbm1lbnRcIjtcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0ICogYXMgZSBmcm9tIFwiLi4vX2ludGVybmFsL2VudW1zXCI7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBIb3N0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdEFQSVNlcnZpY2U6IE1lZXRpbmdIb3N0QXBpU2VydmljZSkge31cblxuICAvLyBVc2UgYnVpbGRIb3N0SWQgdG8gZ2V0IGFuIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCBpbiBzdWJzZXF1ZW50IHJlcXVlc3RzLiBTZWUgdmVuZGFzdGFhcGlzIGZvciBtb3JlIGRldGFpbHNcbiAgYnVpbGRIb3N0SWQocmVxOiB7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllczogQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc1NldDtcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5idWlsZEhvc3RJZCh7XG4gICAgICAgIHVzZXJJZDogcmVxLnVzZXJJZCxcbiAgICAgICAgLy8gR3Jvc3MgdHlwZWNhc3QgZXhpc3RzIGJlY2F1c2UgSSB3YW50IHRvIHJlc3RyaWN0IHRoZSBwcm9wZXJ0aWVzIG9uIHRoZSBtYXAgKGZvciBub3cpLlxuICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOlxuICAgICAgICAgIHJlcS5hcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzIGFzIGFueSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXMuaG9zdElkIHx8IFwiXCIpKTtcbiAgfVxuXG4gIGRvZXNDYWxlbmRhckV4aXN0KGNhbGVuZGFySWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5kb2VzQ2FsZW5kYXJFeGlzdCh7IGNhbGVuZGFySWRlbnRpZmllcjogY2FsZW5kYXJJZGVudGlmaWVyIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3ApID0+IHJlc3AuZXhpc3RzKSk7XG4gIH1cblxuICBnZXRDYWxlbmRhcihyZXE6IHsgY2FsZW5kYXJJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPENhbGVuZGFyPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5nZXRDYWxlbmRhcih7IGNhbGVuZGFySWQ6IHJlcS5jYWxlbmRhcklkIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gQ2FsZW5kYXJGcm9tQXBpKHJlcz8uY2FsZW5kYXIpKSk7XG4gIH1cblxuICBlbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzKHJlcToge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIGFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXM6IEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNTZXQ7XG4gIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0cyh7XG4gICAgICAgIHVzZXJJZDogcmVxLnVzZXJJZCxcbiAgICAgICAgYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllczpcbiAgICAgICAgICByZXEuYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyBhcyBhbnkgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gKHJlcyA/IHJlcy5jYWxlbmRhcklkIDogXCJcIikpKTtcbiAgfVxuXG4gIGVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3QocmVxOiB7XG4gICAgZXh0ZXJuYWxJZHM6IHN0cmluZ1tdO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdCh7IGV4dGVybmFsSWRzOiByZXEuZXh0ZXJuYWxJZHMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXM/LmNhbGVuZGFySWRzIHx8IFtdKSk7XG4gIH1cblxuICAvKlxuICAgICBjcmVhdGVDYWxlbmRhciBjcmVhdGVzIGEgY2FsZW5kYXIgd2hpY2ggbWVldGluZyB0eXBlcyBjYW4gYmUgY3JlYXRlZCBmb3IgYW5kIGV2ZW50cyBjYW4gYmUgYm9va2VkIG9uXG4gICAgIFRoZSBmaWVsZHMgb2YgYSBjYWxlbmRhciBhcmUgZG9jdW1lbnRlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdmVuZGFzdGEvdmVuZGFzdGFhcGlzL2Jsb2IvbWFzdGVyL21lZXRpbmdzL3YxL3NoYXJlZC5wcm90b1xuICAgICovXG4gIGNyZWF0ZUNhbGVuZGFyKFxuICAgIHJlcTogQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlLFxuICApOiBPYnNlcnZhYmxlPENyZWF0ZUNhbGVuZGFyUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5jcmVhdGVDYWxlbmRhcihyZXEpO1xuICB9XG5cbiAgdXBkYXRlQ2FsZW5kYXJTbHVnKGNhbGVuZGFySWQ6IHN0cmluZywgbmV3U2x1Zzogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVDYWxlbmRhcih7XG4gICAgICAgIGNhbGVuZGFySWQ6IGNhbGVuZGFySWQsXG4gICAgICAgIGNhbGVuZGFyVXBkYXRlOiB7IHNsdWc6IG5ld1NsdWcgfSxcbiAgICAgICAgZmllbGRNYXNrOiB7IHBhdGhzOiBbXCJzbHVnXCJdIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gIH1cblxuICB1cGRhdGVDYWxlbmRhckhvc3RVc2VySURzKFxuICAgIGNhbGVuZGFySWQ6IHN0cmluZyxcbiAgICByZXBsYWNlbWVudEhvc3RVc2VySWRzOiBzdHJpbmdbXSxcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVDYWxlbmRhcih7XG4gICAgICAgIGNhbGVuZGFySWQ6IGNhbGVuZGFySWQsXG4gICAgICAgIGNhbGVuZGFyVXBkYXRlOiB7IGhvc3RVc2VySWRzOiByZXBsYWNlbWVudEhvc3RVc2VySWRzIH0sXG4gICAgICAgIGZpZWxkTWFzazogeyBwYXRoczogW1wiaG9zdF91c2VyX2lkc1wiXSB9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgZ2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzKHJlcToge1xuICAgIGNhbGVuZGFySWRzOiBzdHJpbmdbXTtcbiAgICBtZXRhZGF0YTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gIH0pOiBPYnNlcnZhYmxlPHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IE1lZXRpbmdUeXBlW10gfT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZ2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzKHsgY2FsZW5kYXJJZHM6IHJlcS5jYWxlbmRhcklkcyB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKCFyZXM/LmNhbGVuZGFyTWVldGluZ1R5cGVzTWFwKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhyZXMuY2FsZW5kYXJNZWV0aW5nVHlwZXNNYXApLnJlZHVjZShcbiAgICAgICAgICAgIChjYWxlbmRhclRvTWVldGluZ1R5cGVNYXAsIGNhbGVuZGFySWQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWVldGluZ1R5cGVzID0gKFxuICAgICAgICAgICAgICAgIHJlcy5jYWxlbmRhck1lZXRpbmdUeXBlc01hcFtjYWxlbmRhcklkXT8ubWVldGluZ1R5cGVzIHx8IFtdXG4gICAgICAgICAgICAgICkubWFwKChtdCkgPT5cbiAgICAgICAgICAgICAgICBNZWV0aW5nVHlwZUZyb21BcGkoe1xuICAgICAgICAgICAgICAgICAgbWVldGluZ1R5cGVBcGk6IG10LFxuICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpXG4gICAgICAgICAgICAgICAgICAgID8gRW52aXJvbm1lbnQuUFJPRFxuICAgICAgICAgICAgICAgICAgICA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgICAgICAgICAgICBjYWxlbmRhcklkLFxuICAgICAgICAgICAgICAgICAgbWV0YWRhdGE6IHJlcS5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5jYWxlbmRhclRvTWVldGluZ1R5cGVNYXAsXG4gICAgICAgICAgICAgICAgW2NhbGVuZGFySWRdOiBtZWV0aW5nVHlwZXMsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge30gYXMgeyBbY2FsZW5kYXJJZDogc3RyaW5nXTogTWVldGluZ1R5cGVbXSB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIC8qXG4gICAgIGxpc3RNZWV0aW5nVHlwZXMgcmV0dXJucyBhIGxpc3Qgb2YgbWVldGluZyB0eXBlcyBmb3IgYSBob3N0XG4gICAgIEBwYXJhbSBob3N0SWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdFxuICAgICBAcGFyYW0gbWV0YWRhdGE6IG9wdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgb24gdGhlIG1lZXRpbmcgdHlwZSBib29raW5nIGxpbmtcbiAgICAgQHBhcmFtIGNhbGVuZGFyU2x1ZzogdXNlZCB0byByZXBsYWNlIGhvc3RJZCBpbiB0aGUgdXJsLiBVc2UgaXQgd2hlbiB5b3UgYXJlIGNvbmZpZGVudCB5b3Uga25vdyB0aGUgaG9zdCdzIHNsdWcuXG4gICAgICAgIC0gY2FsZW5kYXJTbHVnIElTIE5PVCBVU0VEIFRPIFJFVFJJRVZFIE1FRVRJTkcgVFlQRVMsIE9OTFkgVE8gTUFLRSBUSEUgQk9PS0lORyBVUkxTXG4gICAqL1xuICBsaXN0TWVldGluZ1R5cGVzKHJlcToge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgY2FsZW5kYXJTbHVnPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxNZWV0aW5nVHlwZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdE1lZXRpbmdUeXBlcyhyZXEpLnBpcGUoXG4gICAgICBtYXAoKHJlc3ApID0+IHtcbiAgICAgICAgaWYgKCFyZXNwIHx8ICFyZXNwLm1lZXRpbmdUeXBlcykge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzcC5tZWV0aW5nVHlwZXMubWFwKChtdCkgPT4ge1xuICAgICAgICAgIHJldHVybiBNZWV0aW5nVHlwZUZyb21BcGkoe1xuICAgICAgICAgICAgbWVldGluZ1R5cGVBcGk6IG10LFxuICAgICAgICAgICAgY2FsZW5kYXJJZDogcmVxLmhvc3RJZCxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHJlcS5tZXRhZGF0YSxcbiAgICAgICAgICAgIGNhbGVuZGFyU2x1ZzogcmVxLmNhbGVuZGFyU2x1ZyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICAgZ2V0RXZlbnRUeXBlQnlJZCByZXR1cm5zIGEgc2luZ2xlIG1lZXRpbmcgdHlwZSBieSBJRC5cbiAgICAgQHBhcmFtIGV2ZW50VHlwZUlkOiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBldmVudCB0eXBlXG4gICAgIEBwYXJhbSBtZXRhZGF0YTogb3B0aW9uYWwgbWV0YWRhdGEgdG8gaW5jbHVkZSBvbiB0aGUgbWVldGluZyB0eXBlIGJvb2tpbmcgbGlua1xuICAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgICAgLSBjYWxlbmRhclNsdWcgSVMgTk9UIFVTRUQgVE8gUkVUUklFVkUgVEhFIEVWRU5UIFRZUEUsIE9OTFkgVE8gTUFLRSBUSEUgQk9PS0lORyBVUkxcbiAgICovXG4gIGdldEV2ZW50VHlwZUJ5SWQocmVxOiB7XG4gICAgZXZlbnRUeXBlSWQ6IHN0cmluZztcbiAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8TWVldGluZ1R5cGUgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5nZXRFdmVudFR5cGVCeUlkKHsgZXZlbnRUeXBlSWQ6IHJlcS5ldmVudFR5cGVJZCB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcCkgPT4ge1xuICAgICAgICAgIGlmICghcmVzcC5tZWV0aW5nVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIE1lZXRpbmdUeXBlRnJvbUFwaSh7XG4gICAgICAgICAgICBtZWV0aW5nVHlwZUFwaTogcmVzcC5tZWV0aW5nVHlwZSxcbiAgICAgICAgICAgIGNhbGVuZGFySWQ6IHJlc3AubWVldGluZ1R5cGUuY2FsZW5kYXJJZCB8fCBcIlwiLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpXG4gICAgICAgICAgICAgID8gRW52aXJvbm1lbnQuUFJPRFxuICAgICAgICAgICAgICA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgICAgICBtZXRhZGF0YTogcmVxLm1ldGFkYXRhLFxuICAgICAgICAgICAgY2FsZW5kYXJTbHVnOiByZXEuY2FsZW5kYXJTbHVnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qXG4gICAgIGdldEJvb2tpbmdVcmwgcmV0dXJucyBhIGxpbmsgdGhhdCBjYW4gYmUgdXNlZCB0byBib29rIGEgbWVldGluZyB3aXRoIHRoaXMgaG9zdC5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cyAoaS5lLiwgdGVhbSkuXG4gICAgIEBwYXJhbSBAZGVwcmVjYXRlZCBob3N0SWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdC5cbiAgICAgQHBhcmFtIG1lZXRpbmdUeXBlSWQ6IEFuIG9wdGlvbmFsIGlkZW50aWZpZXIgZm9yIHRoZSBtZWV0aW5nIHR5cGUuIERlZmF1bHQ6IDMwLW1pbnV0ZXMuXG4gICAgIEBwYXJhbSBtZXRhZGF0YTogb3B0aW9uYWwgbWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgdXJsLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIHByZS1maWxsIGNlcnRhaW4gZm9ybSBmaWVsZHMgYW5kIHdpbGwgYmUgc3RvcmVkIGR1cmluZyB0aGUgYm9va2luZyBwcm9jZXNzLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSBvYnRhaW5lZCBieSBzdWJzY3JpYmluZyB0byB0aGUgYm9va2luZyBldmVudC5cbiAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgKi9cbiAgZ2V0Qm9va2luZ1VybChyZXE6IHtcbiAgICAvLyBAZGVwcmVjYXRlZDogdXNlIGNhbGVuZGFySWQgaW5zdGVhZC4gY2FsZW5kYXJJZCBub3QgcmVxdWlyZWQgdG8gYXZvaWQgYnJlYWtpbmcgZXhpc3RpbmcgY2xpZW50cy5cbiAgICBob3N0SWQ6IHN0cmluZztcbiAgICBjYWxlbmRhcklkPzogc3RyaW5nO1xuICAgIC8vIEBkZXByZWNhdGVkOiB1c2UgbWVldGluZ1R5cGVTbHVnIGluc3RlYWRcbiAgICBtZWV0aW5nVHlwZUlkPzogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlU2x1Zz86IHN0cmluZztcbiAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG9mKFxuICAgICAgZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgICBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCB8fCByZXEuaG9zdElkLFxuICAgICAgICBlbnZpcm9ubWVudDogb25Qcm9kdWN0aW9uR2xvYmFsKCkgPyBFbnZpcm9ubWVudC5QUk9EIDogRW52aXJvbm1lbnQuREVNTyxcbiAgICAgICAgY2FsZW5kYXJTbHVnOiByZXEuY2FsZW5kYXJTbHVnLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAgIGdldEdlbmVyYWxCb29raW5nVXJsIHJldHVybnMgYSBsaW5rIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VsZWN0IGEgbWVldGluZyB0eXBlIHRvIGJvb2sgd2l0aCB0aGUgZ2l2ZW4gY2FsZW5kYXIuXG4gICAgIEBwYXJhbSBjYWxlbmRhcklkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3Qgb3IgZ3JvdXBpbmcgb2YgaG9zdHMgKGkuZS4sIHRlYW0pLlxuICAgICBAcGFyYW0gbWV0YWRhdGE6IG9wdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIHVybC5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBwcmUtZmlsbCBjZXJ0YWluIGZvcm0gZmllbGRzIGFuZCB3aWxsIGJlIHN0b3JlZCBkdXJpbmcgdGhlIGJvb2tpbmcgcHJvY2Vzcy5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgb2J0YWluZWQgYnkgc3Vic2NyaWJpbmcgdG8gdGhlIGJvb2tpbmcgZXZlbnQuXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAqL1xuICBnZXRHZW5lcmFsQm9va2luZ1VybChyZXE6IHtcbiAgICBjYWxlbmRhcklkOiBzdHJpbmc7XG4gICAgbWV0YWRhdGE/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBjYWxlbmRhclNsdWc/OiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBvZihcbiAgICAgIGdldEdlbmVyYWxCb29raW5nVXJsSW1wbGVtZW50YXRpb24oe1xuICAgICAgICBlbnZpcm9ubWVudDogb25Qcm9kdWN0aW9uR2xvYmFsKCkgPyBFbnZpcm9ubWVudC5QUk9EIDogRW52aXJvbm1lbnQuREVNTyxcbiAgICAgICAgY2FsZW5kYXJJZDogcmVxLmNhbGVuZGFySWQsXG4gICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgIGNhbGVuZGFyU2x1ZzogcmVxLmNhbGVuZGFyU2x1ZyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKlxuICAgICBnZXRCb29raW5nVXJsc011bHRpIHJldHVybnMgYSBtYXBwaW5nIG9mIGhvc3RzIC0+IGV2ZW50IHR5cGVzIC0+IGJvb2tpbmcgbGlua3MuXG4gICAgIEBwYXJhbSBjYWxlbmRhcklkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3Qgb3IgZ3JvdXBpbmcgb2YgaG9zdHMuXG4gICAgIEBwYXJhbSBtZWV0aW5nVHlwZVNsdWc6IG1lZXRpbmdUeXBlU2x1Z3MgYXJlIHBhc3NlZCBpbiB0aGUgZm9ybSB7aG9zdElkOiBbbWVldGluZ1R5cGVTbHVnMSwgbWVldGluZ1R5cGVTbHVnMl19XG4gICAgIEBwYXJhbSBtZXRhZGF0YTogb3B0aW9uYWwgbWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgdXJsLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIHByZS1maWxsIGNlcnRhaW4gZm9ybSBmaWVsZHMgYW5kIHdpbGwgYmUgc3RvcmVkIGR1cmluZyB0aGUgYm9va2luZyBwcm9jZXNzLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSBvYnRhaW5lZCBieSBzdWJzY3JpYmluZyB0byB0aGUgYm9va2luZyBldmVudC5cbiAgICAgQHBhcmFtIGNhbGVuZGFyU2x1ZzogdXNlZCB0byByZXBsYWNlIGhvc3RJZCBpbiB0aGUgdXJsLiBVc2UgaXQgd2hlbiB5b3UgYXJlIGNvbmZpZGVudCB5b3Uga25vdyB0aGUgaG9zdCdzIHNsdWcuXG4gICAgICovXG4gIGdldEJvb2tpbmdVcmxzTXVsdGkoXG4gICAgcmVxOiB7IFtjYWxlbmRhcklkOiBzdHJpbmddOiBzdHJpbmdbXSB9LFxuICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgY2FsZW5kYXJTbHVnPzogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPEhvc3RVcmxNYXA+IHtcbiAgICByZXR1cm4gb2YoXG4gICAgICBPYmplY3Qua2V5cyhyZXEpLnJlZHVjZSgoaG9zdE1hcCwgY2FsZW5kYXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmhvc3RNYXAsXG4gICAgICAgICAgW2NhbGVuZGFySWRdOiByZXFbY2FsZW5kYXJJZF0ucmVkdWNlKFxuICAgICAgICAgICAgKG1lZXRpbmdUeXBlTWFwLCBtZWV0aW5nVHlwZVNsdWcpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5tZWV0aW5nVHlwZU1hcCxcbiAgICAgICAgICAgICAgICBbbWVldGluZ1R5cGVTbHVnXTogZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgIGNhbGVuZGFySWQsXG4gICAgICAgICAgICAgICAgICBtZWV0aW5nVHlwZVNsdWcsXG4gICAgICAgICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgICAgICAgICAgY2FsZW5kYXJTbHVnLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHt9IGFzIHsgW21lZXRpbmdUeXBlSWQ6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgICB9LCB7fSBhcyBIb3N0VXJsTWFwKSxcbiAgICApO1xuICB9XG5cbiAgaXNIb3N0Q29uZmlndXJlZChyZXE6IHtcbiAgICBob3N0SWQ6IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8SXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5pc0hvc3RDb25maWd1cmVkKHJlcSlcbiAgICAgIC5waXBlKG1hcCgocmVzcDogSXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlKSA9PiByZXNwKSk7XG4gIH1cblxuICBzZXRHZW5lcmFsQXZhaWxhYmlsaXR5KHJlcToge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlSWQ6IHN0cmluZztcbiAgICAvLyBAZGVwcmVjYXRlZDogdXNlIHdlZWtkYXlzQXZhaWxhYmlsaXR5IGluc3RlYWRcbiAgICBkYXlzPzogRGF5T2ZXZWVrW107XG4gICAgLy8gQGRlcHJlY2F0ZWQ6IHVzZSB3ZWVrZGF5c0F2YWlsYWJpbGl0eSBpbnN0ZWFkXG4gICAgdGltZVNsb3Q/OiBUaW1lUmFuZ2VJbnRlcmZhY2U7XG4gICAgd2Vla2RheXNBdmFpbGFiaWxpdHk/OiBXZWVrZGF5QXZhaWxhYmlsaXR5W107XG4gICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlO1xuICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgY29uc3QgYXBpUmVxID0ge1xuICAgICAgLi4ucmVxLFxuICAgICAgdGltZVpvbmU6IG5ldyBUaW1lWm9uZShyZXEudGltZVpvbmUpLFxuICAgIH07XG4gICAgaWYgKHJlcS50aW1lU2xvdCkge1xuICAgICAgYXBpUmVxLnRpbWVTbG90ID0gbmV3IFRpbWVSYW5nZShyZXEudGltZVNsb3QpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5zZXRHZW5lcmFsQXZhaWxhYmlsaXR5KGFwaVJlcSkucGlwZShtYXBUbyhudWxsKSk7XG4gIH1cblxuICBsaXN0Qm9va2VkTWVldGluZ3MocmVxOiB7XG4gICAgZmlsdGVyczogTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnNJbnRlcmZhY2U7XG4gICAgY3Vyc29yOiBzdHJpbmc7XG4gICAgcGFnZVNpemU6IG51bWJlcjtcbiAgICB0aW1lWm9uZTogVGltZVpvbmVJbnRlcmZhY2U7XG4gIH0pOiBPYnNlcnZhYmxlPFBhZ2VkUmVzcG9uc2U8TWVldGluZz4+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmxpc3RCb29rZWRNZWV0aW5ncyh7XG4gICAgICAgIC4uLnJlcSxcbiAgICAgICAgcGFnaW5nT3B0aW9uczogbmV3IFBhZ2VkUmVxdWVzdE9wdGlvbnMoe1xuICAgICAgICAgIGN1cnNvcjogcmVxLmN1cnNvcixcbiAgICAgICAgICBwYWdlU2l6ZTogcmVxLnBhZ2VTaXplLFxuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyczogbmV3IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzKHJlcS5maWx0ZXJzKSxcbiAgICAgICAgdGltZVpvbmU6IG5ldyBUaW1lWm9uZShyZXEudGltZVpvbmUpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3A6IExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgbWVldGluZ3MgPSAocmVzcC5tZWV0aW5ncyB8fCBbXSkubWFwKChtZWV0aW5nKSA9PlxuICAgICAgICAgICAgbWVldGluZ0Zyb21BcGkobWVldGluZyksXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VkUmVzcG9uc2UoXG4gICAgICAgICAgICBtZWV0aW5ncyxcbiAgICAgICAgICAgIHJlc3AucGFnaW5nTWV0YWRhdGEubmV4dEN1cnNvcixcbiAgICAgICAgICAgIHJlc3AucGFnaW5nTWV0YWRhdGEuaGFzTW9yZSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBjYW5jZWxNZWV0aW5nKHJlcToge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIGNhbmNlbGxhdGlvblJlYXNvbjogc3RyaW5nO1xuICAgIGJvb2tpbmdTb3VyY2U/OiBCb29raW5nU291cmNlO1xuICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5jYW5jZWxNZWV0aW5nKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKG51bGwpKTtcbiAgfVxuXG4gIHJlc2NoZWR1bGVNZWV0aW5nKHJlcTogeyBtZWV0aW5nSWQ6IHN0cmluZzsgc3RhcnQ6IERhdGU7IGJvb2tpbmdTb3VyY2U/OiBCb29raW5nU291cmNlIH0pOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLnJlc2NoZWR1bGVNZWV0aW5nKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKG51bGwpKTtcbiAgfVxuXG4gIGxpc3RBdmFpbGFiaWxpdHkocmVxOiB7XG4gICAgZmlsdGVyczogTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlO1xuICAgIHBhZ2luZ09wdGlvbnM6IFBhZ2VkUmVxdWVzdE9wdGlvbnNJbnRlcmZhY2U7XG4gICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlO1xuICB9KTogT2JzZXJ2YWJsZTxQYWdlZFJlc3BvbnNlPEF2YWlsYWJpbGl0eVJ1bGU+PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEF2YWlsYWJpbGl0eShyZXEpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSAocmVzcG9uc2UuYXZhaWxhYmlsaXR5UnVsZXMgfHwgW10pXG4gICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgIC5tYXAoKGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGhvc3RJZDogYS5ob3N0SWQgfHwgXCJcIixcbiAgICAgICAgICAgICAgbWVldGluZ1R5cGVJZDogYS5tZWV0aW5nVHlwZUlkIHx8IFwiXCIsXG4gICAgICAgICAgICAgIGRheTogYS5kYXksXG4gICAgICAgICAgICAgIHRpbWVTbG90OiBhLnRpbWVTbG90LFxuICAgICAgICAgICAgICB0aW1lWm9uZTogYS50aW1lWm9uZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFnZWRSZXNwb25zZShcbiAgICAgICAgICByZXN1bHRzLFxuICAgICAgICAgIHJlc3BvbnNlLm1ldGFkYXRhLm5leHRDdXJzb3IsXG4gICAgICAgICAgcmVzcG9uc2UubWV0YWRhdGEuaGFzTW9yZSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKiB1cGRhdGVQcmVmZXJlbmNlcyB3aWxsIHVwZGF0ZSB0aGUgaG9zdCdzIHByZWZlcmVuY2VzLlxuICAgKiBJdCBpcyBndWFyYW50ZWVkIHRvIG9ubHkgdXBkYXRlIHRoZSBmaWVsZHMgcHJvdmlkZWQuXG4gICAqIEZvciBleGFtcGxlOlxuICAgKiAgdXBkYXRlUHJlZmVyZW5jZXMoe21lZXRpbmdJbnRlZ3JhdGlvbjogTWVldGluZ1NvdXJjZS5NRUVUSU5HX1NPVVJDRV9HT09HTEVfTUVFVH0pXG4gICAqICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBwcmVmZXJlbmNlIG1lZXRpbmdJbnRlZ3JhdGlvbiB0byBHb29nbGUgTWVldC4gS2VlcGluZyB0aGUgb3RoZXIgcHJlZmVyZW5jZXMgdGhlIHNhbWUuXG4gICAqXG4gICAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gcHJvdmlkZSBhIGxpc3Qgb2Yga2V5cyB0byB1cGRhdGUgYXMgdGhlIHNlY29uZCBhcmd1bWVudC5cbiAgICogRm9yIGV4YW1wbGU6XG4gICAqICAgdXBkYXRlUHJlZmVyZW5jZXMoey4uLm9iamVjdCB3aXRoIGFsbCBmaWVsZHN9LCBbJ21lZXRpbmdJbnRlZ3JhdGlvbiddKVxuICAgKiAgIHdpbGwgb25seSB1cGRhdGUgdGhlIGZpZWxkICdtZWV0aW5nSW50ZWdyYXRpb24nIHRvIHRoZSB2YWx1ZSBpbiBwcmVmZXJlbmNlcy5cbiAgICpcbiAgICogQ2FsbGluZyB3aXRoIGFuIGVtcHR5IG9iamVjdCBhbmQgbm8ga2V5cyBpcyBhIG5vLW9wLCBvciBhbiB1bmRlZmluZWQgb2JqZWN0LlxuICAgKiBDYWxsaW5nIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgZmllbGRzIG5vdCBpbiBgUHJlZmVyZW5jZXNgIG9yIHdpdGggdXBkYXRlRmllbGRzIG5vdCBsaW5rZWQgdG8gcHJvcGVydGllcyBpblxuICAgKiBgUHJlZmVyZW5jZXNgIGlzIGFuIGVycm9yLlxuICAgKi9cbiAgdXBkYXRlUHJlZmVyZW5jZXMocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gICAgcHJlZmVyZW5jZXM6IFBhcnRpYWw8UHJlZmVyZW5jZXM+O1xuICAgIHVwZGF0ZUZpZWxkcz86IChrZXlvZiBQcmVmZXJlbmNlcylbXTtcbiAgfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGZpZWxkTWFzayA9IGdldEZpZWxkTWFzayh7XG4gICAgICBvOiByZXEucHJlZmVyZW5jZXMsXG4gICAgICB1cGRhdGVGaWVsZHM6IHJlcS51cGRhdGVGaWVsZHMsXG4gICAgfSk7XG4gICAgaWYgKGZpZWxkTWFzay5wYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLnVwZGF0ZUhvc3RQcmVmZXJlbmNlcyh7XG4gICAgICAgIGhvc3RJZDogcmVxLmhvc3RJZCxcbiAgICAgICAgcHJlZmVyZW5jZXM6IHJlcS5wcmVmZXJlbmNlcyxcbiAgICAgICAgZmllbGRNYXNrLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgZ2V0UHJlZmVyZW5jZXMocmVxOiB7IGhvc3RJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPFByZWZlcmVuY2VzPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5nZXRIb3N0UHJlZmVyZW5jZXMoe1xuICAgICAgICBob3N0SWQ6IHJlcS5ob3N0SWQsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZSkgPT4gUHJlZmVyZW5jZXNGcm9tQXBpKHJlc3BvbnNlLnByZWZlcmVuY2VzKSkpO1xuICB9XG5cbiAgZ2V0TWVldGluZyhtZWV0aW5nSWQ6IHN0cmluZywgbG9jYXRpb246IHN0cmluZyk6IE9ic2VydmFibGU8TWVldGluZz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZ2V0SG9zdE1lZXRpbmcoe1xuICAgICAgICBtZWV0aW5nSWQ6IG1lZXRpbmdJZCxcbiAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3A6IEdldEhvc3RNZWV0aW5nUmVzcG9uc2UpID0+IG1lZXRpbmdGcm9tQXBpKHJlc3AubWVldGluZykpLFxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZU1lZXRpbmdNZXRhZGF0YShyZXE6IHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBtZXRhZGF0YTogTWVldGluZ01ldGFkYXRhO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVNZWV0aW5nTWV0YWRhdGEoe1xuICAgICAgICBtZWV0aW5nSWQ6IHJlcS5tZWV0aW5nSWQsXG4gICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gIH1cblxuICBob3N0Qm9va01lZXRpbmcocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gICAgbWVldGluZ1R5cGVJZDogc3RyaW5nO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIGNvbW1lbnQ6IHN0cmluZztcbiAgICBtZXRhZGF0YT86IE1lZXRpbmdNZXRhZGF0YTtcbiAgICBhdHRlbmRlZXM6IChPbWl0PFxuICAgICAgQ29udGFjdCxcbiAgICAgIFwiZnJvbVByb3RvXCIgfCBcInRvQXBpSnNvblwiIHwgXCJjb25zdHJ1Y3RvclwiIHwgXCJ0aW1lWm9uZVwiXG4gICAgPiAmIHsgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlIH0pW107XG4gICAgbG9jYXRpb24/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xuICAgIGJvb2tpbmdTb3VyY2U/OiBCb29raW5nU291cmNlO1xuICB9KTogT2JzZXJ2YWJsZTxCb29rTWVldGluZ1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuaG9zdEJvb2tNZWV0aW5nKHtcbiAgICAgIC4uLnJlcSxcbiAgICAgIGF0dGVuZGVlczogcmVxLmF0dGVuZGVlcyxcbiAgICB9KTtcbiAgfVxuXG4gIGhvc3RCb29rU2Vzc2lvbihcbiAgICByZXE6IEhvc3RCb29rU2Vzc2lvblJlcXVlc3RJbnRlcmZhY2UsXG4gICk6IE9ic2VydmFibGU8Qm9va1Nlc3Npb25SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmhvc3RCb29rU2Vzc2lvbih7XG4gICAgICAuLi5yZXEsXG4gICAgfSk7XG4gIH1cblxuICBib29rTWVldGluZyhyZXE6IEhvc3RCb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuYm9va01lZXRpbmcocmVxKVxuICAgICAgLnBpcGUobWFwKChyZXNwOiBIb3N0Qm9va01lZXRpbmdSZXNwb25zZSkgPT4gcmVzcC5tZWV0aW5nSWQpKTtcbiAgfVxuXG4gIC8vIGxpc3RCb29rZWRNZWV0aW5nc1YyIHJldHVybnMgYm9va2luZ3MgZ3JvdXBlZCBieSBib29raW5nX2dyb3VwX2lkLlxuICAvLyBTdGFuZGFsb25lIG1lZXRpbmdzIGFwcGVhciBhcyBhIHNpbmdsZS1lbnRyeSBCb29rZWRNZWV0aW5nR3JvdXAgd2l0aCBhbiBlbXB0eVxuICAvLyBib29raW5nR3JvdXBJZDsgYmF0Y2ggYm9va2luZ3MgYXBwZWFyIGFzIG9uZSBCb29rZWRNZWV0aW5nR3JvdXAgd2l0aCBOIHNpYmxpbmdzLlxuICBsaXN0Qm9va2VkTWVldGluZ3NWMihyZXE6IHtcbiAgICBmaWx0ZXJzOiBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZTtcbiAgICBjdXJzb3I6IHN0cmluZztcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZTtcbiAgfSk6IE9ic2VydmFibGU8UGFnZWRSZXNwb25zZTxCb29rZWRNZWV0aW5nR3JvdXA+PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5saXN0Qm9va2VkTWVldGluZ3NWMih7XG4gICAgICAgIGZpbHRlcnM6IG5ldyBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyhyZXEuZmlsdGVycyksXG4gICAgICAgIHBhZ2luZ09wdGlvbnM6IG5ldyBQYWdlZFJlcXVlc3RPcHRpb25zKHtcbiAgICAgICAgICBjdXJzb3I6IHJlcS5jdXJzb3IsXG4gICAgICAgICAgcGFnZVNpemU6IHJlcS5wYWdlU2l6ZSxcbiAgICAgICAgfSksXG4gICAgICAgIHRpbWVab25lOiBuZXcgVGltZVpvbmUocmVxLnRpbWVab25lKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwOiBMaXN0Qm9va2VkTWVldGluZ3NWMlJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYm9va2luZ3MgPSAocmVzcC5ib29raW5ncyB8fCBbXSkubWFwKChib29raW5nKSA9PiAoe1xuICAgICAgICAgICAgYm9va2luZ0dyb3VwSWQ6IGJvb2tpbmcuYm9va2luZ0dyb3VwSWQgfHwgXCJcIixcbiAgICAgICAgICAgIG1lZXRpbmdzOiAoYm9va2luZy5tZWV0aW5ncyB8fCBbXSkubWFwKChtZWV0aW5nKSA9PlxuICAgICAgICAgICAgICBtZWV0aW5nRnJvbUFwaShtZWV0aW5nKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIHJldHVybiBuZXcgUGFnZWRSZXNwb25zZShcbiAgICAgICAgICAgIGJvb2tpbmdzLFxuICAgICAgICAgICAgcmVzcC5wYWdpbmdNZXRhZGF0YS5uZXh0Q3Vyc29yLFxuICAgICAgICAgICAgcmVzcC5wYWdpbmdNZXRhZGF0YS5oYXNNb3JlLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIC8vIGhvc3RCb29rQmF0Y2hNZWV0aW5nIGJvb2tzIGEgbWVldGluZyBvbiB0aGUgaG9zdCBjYWxlbmRhciDigJQgc2luZ2xlLXNlcnZpY2VcbiAgLy8gKE49MSB0YXJnZXQpIG9yIG11bHRpLXNlcnZpY2UgKE4+MSBvcmRlcmVkIHRhcmdldHMpLiBSZXR1cm5zIHRoZSBib29raW5nX2dyb3VwX2lkLlxuICBob3N0Qm9va0JhdGNoTWVldGluZyhyZXE6IHtcbiAgICBjYWxlbmRhcklkOiBzdHJpbmc7XG4gICAgdGFyZ2V0czogQmF0Y2hCb29raW5nVGFyZ2V0SW50ZXJmYWNlW107XG4gICAgc3RhcnQ6IERhdGU7XG4gICAgYXR0ZW5kZWVzPzogQ29udGFjdEludGVyZmFjZVtdO1xuICAgIGNvbW1lbnQ/OiBzdHJpbmc7XG4gICAgbWV0YWRhdGE/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGZvcm1BbnN3ZXJzPzogTWVldGluZ0Zvcm07XG4gICAgbG9jYXRpb24/OiBzdHJpbmc7XG4gICAgYm9va2luZ1NvdXJjZT86IEJvb2tpbmdTb3VyY2U7XG4gICAgYm9va2luZ09yaWdpbklkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmhvc3RCb29rQmF0Y2hNZWV0aW5nKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgICBmb3JtQW5zd2VyczogYW5zd2Vyc1RvQVBJKHJlcS5mb3JtQW5zd2VycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcDogSG9zdEJvb2tCYXRjaE1lZXRpbmdSZXNwb25zZSkgPT4gcmVzcC5ib29raW5nR3JvdXBJZCksXG4gICAgICApO1xuICB9XG5cbiAgLy8gaG9zdFJlc2NoZWR1bGVCYXRjaE1lZXRpbmcgYWNjZXB0cyBlaXRoZXIgYSBzaW5nbGUgbWVldGluZ19pZCBvciBhIGJvb2tpbmdfZ3JvdXBfaWQuXG4gIC8vIFdoZW4gYSBib29raW5nX2dyb3VwX2lkIGlzIHBhc3NlZCB0aGUgc2VydmVyIHJlc2NoZWR1bGVzIGV2ZXJ5IHNpYmxpbmcgYXRvbWljYWxseSxcbiAgLy8gcHJlc2VydmluZyBwZXItc2libGluZyBkdXJhdGlvbnMgYW5kIHNoaWZ0aW5nIGFsbCBieSB0aGUgc2FtZSBkZWx0YS5cbiAgaG9zdFJlc2NoZWR1bGVCYXRjaE1lZXRpbmcocmVxOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBzdGFydDogRGF0ZTtcbiAgICBsb2NhdGlvbj86IHN0cmluZztcbiAgICB0aW1lWm9uZT86IFRpbWVab25lSW50ZXJmYWNlO1xuICAgIGJvb2tpbmdTb3VyY2U/OiBCb29raW5nU291cmNlO1xuICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5ob3N0UmVzY2hlZHVsZUJhdGNoTWVldGluZyhyZXEpXG4gICAgICAucGlwZShtYXBUbyhudWxsKSk7XG4gIH1cblxuICAvLyBob3N0Q2FuY2VsQmF0Y2hNZWV0aW5nIGFjY2VwdHMgZWl0aGVyIGEgc2luZ2xlIG1lZXRpbmdfaWQgb3IgYSBib29raW5nX2dyb3VwX2lkLlxuICAvLyBGb3IgcGFydGlhbC1ncm91cCBjYW5jZWxsYXRpb24gdGhlIEZFIGlzc3VlcyBOIHBhcmFsbGVsIGNhbGxzIGVhY2ggd2l0aCB0aGVcbiAgLy8gaW5kaXZpZHVhbCBtZWV0aW5nX2lkLlxuICBob3N0Q2FuY2VsQmF0Y2hNZWV0aW5nKHJlcToge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY2FuY2VsbGF0aW9uUmVhc29uPzogc3RyaW5nO1xuICAgIGJvb2tpbmdTb3VyY2U/OiBCb29raW5nU291cmNlO1xuICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuaG9zdENhbmNlbEJhdGNoTWVldGluZyhyZXEpLnBpcGUobWFwVG8obnVsbCkpO1xuICB9XG5cbiAgLy8gZ2V0TWVldGluZ1N0YXRzIHJldHVybnMgYWdncmVnYXRlZCBtZWV0aW5nIHN0YXRpc3RpY3MgZm9yIHRoZSBob3N0LCBiYWNraW5nIHRoZVxuICAvLyBcIk15IE1lZXRpbmdzXCIgZGFzaGJvYXJkIGNhcmQuIHRpbWVTcGFuIG11c3QgYmUgZXhwcmVzc2VkIGluIHRoZSBjYWxsZXIncyB0aW1lIHpvbmU7XG4gIC8vIHRpbWVab25lIGlzIHVzZWQgdG8gYnVja2V0IG1lZXRpbmdzIGludG8gZGF5cyBhbmQgdG8gYWxpZ24gdGhlIGNvbXBhcmlzb24gcGVyaW9kLlxuICBnZXRNZWV0aW5nU3RhdHMocmVxOiB7XG4gICAgdGltZVNwYW46IFRpbWVTcGFuO1xuICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZTtcbiAgICBidXNpbmVzc0lkOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPE1lZXRpbmdTdGF0cz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZ2V0TWVldGluZ1N0YXRzKHtcbiAgICAgICAgdGltZVNwYW46IHJlcS50aW1lU3BhbixcbiAgICAgICAgdGltZVpvbmU6IHJlcS50aW1lWm9uZSxcbiAgICAgICAgYnVzaW5lc3NJZDogcmVxLmJ1c2luZXNzSWQsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwOiBHZXRNZWV0aW5nU3RhdHNSZXNwb25zZSkgPT4gbWVldGluZ1N0YXRzRnJvbUFwaShyZXNwKSkpO1xuICB9XG5cbiAgLy8gaG9zdExpc3RCYXRjaEF2YWlsYWJsZVRpbWVTbG90cyByZXR1cm5zIHZhbGlkIGNoYWluIHN0YXJ0IHRpbWVzIGZvciBhXG4gIC8vIG11bHRpLXNlcnZpY2UgaG9zdCBib29raW5nLiBFYWNoIHNsb3QgaXMgdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBtZWV0aW5nXG4gIC8vIGluIHRoZSBjaGFpbi5cbiAgaG9zdExpc3RCYXRjaEF2YWlsYWJsZVRpbWVTbG90cyhyZXE6IHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICB0YXJnZXRzOiBCYXRjaEV2ZW50VHlwZVRhcmdldEludGVyZmFjZVtdO1xuICAgIHRpbWVTcGFuOiBUaW1lU3BhbjtcbiAgICB0aW1lWm9uZTogVGltZVpvbmVJbnRlcmZhY2U7XG4gIH0pOiBPYnNlcnZhYmxlPFRpbWVTcGFuW10+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmhvc3RMaXN0QmF0Y2hBdmFpbGFibGVUaW1lU2xvdHMocmVxKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcDogSG9zdExpc3RCYXRjaEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3AuaXNvVGltZVNsb3RzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNwLmlzb1RpbWVTbG90cy5tYXAoKGlzbykgPT4gKHtcbiAgICAgICAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKGlzby5zdGFydCksXG4gICAgICAgICAgICAgIGVuZDogbmV3IERhdGUoaXNvLmVuZCksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgLy8gaG9zdExpc3RCYXRjaEF2YWlsYWJsZVRpbWVTbG90c0ZvclJlc2NoZWR1bGUgcmV0dXJucyB2YWxpZCBjaGFpbiBzdGFydCB0aW1lcyBmb3IgcmVzY2hlZHVsaW5nXG4gIC8vIGFuIGV4aXN0aW5nIG1lZXRpbmcgb3IgYm9va2luZyBncm91cCAoaWQgaXMgYSBtZWV0aW5nX2lkIG9yIEJHLSBncm91cCBpZCkuIENvbmZpZyBpcyByZXNvbHZlZFxuICAvLyBmcm9tIHRoZSBib29rZWQgcmVjb3JkKHMpIHJhdGhlciB0aGFuIHRoZSBjdXJyZW50IGV2ZW50LXR5cGUgc2V0dGluZ3MuXG4gIGhvc3RMaXN0QmF0Y2hBdmFpbGFibGVUaW1lU2xvdHNGb3JSZXNjaGVkdWxlKHJlcToge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGltZVNwYW46IFRpbWVTcGFuO1xuICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZTtcbiAgfSk6IE9ic2VydmFibGU8VGltZVNwYW5bXT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuaG9zdExpc3RCYXRjaEF2YWlsYWJsZVRpbWVTbG90c0ZvclJlc2NoZWR1bGUocmVxKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcDogSG9zdExpc3RCYXRjaEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3AuaXNvVGltZVNsb3RzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNwLmlzb1RpbWVTbG90cy5tYXAoKGlzbykgPT4gKHtcbiAgICAgICAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKGlzby5zdGFydCksXG4gICAgICAgICAgICAgIGVuZDogbmV3IERhdGUoaXNvLmVuZCksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgLy8gY3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlcyB3aWxsIGNyZWF0ZSB3aGF0IE1lZXRpbmcgU2NoZWR1bGVyIGRlZW1zIHRvIGJlIHRoZSBkZWZhdWx0IG1lZXRpbmcgdHlwZXMuXG4gIC8vIElmIHRoZSBjYWxlbmRhciBhbHJlYWR5IGhhcyBtZWV0aW5nIHR5cGVzLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBuby1vcC5cbiAgY3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlcyhyZXE6IHsgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmNyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXMoeyBjYWxlbmRhcklkczogcmVxLmNhbGVuZGFySWRzIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGNyZWF0ZU1lZXRpbmdUeXBlKHJlcToge1xuICAgIG1lZXRpbmdUeXBlOiBNZWV0aW5nVHlwZTtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgTWVldGluZ1R5cGUpW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe1xuICAgICAgbzogcmVxLm1lZXRpbmdUeXBlLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5jcmVhdGVNZWV0aW5nVHlwZSh7XG4gICAgICAgIG1lZXRpbmdUeXBlOiBNZWV0aW5nVHlwZVRvQXBpKHsgbWVldGluZ1R5cGU6IHJlcS5tZWV0aW5nVHlwZSB9KSxcbiAgICAgICAgZmllbGRNYXNrLFxuICAgICAgICBob3N0SWQ6IHJlcS5Ib3N0SWQsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHJlcy5pZCkpO1xuICB9XG5cbiAgLyogdXBkYXRlTWVldGluZ1R5cGUgd2lsbCB1cGRhdGUgdGhlIG1lZXRpbmcgdHlwZSBmaWVsZHMuXG4gICAqIEl0IGlzIGd1YXJhbnRlZWQgdG8gb25seSB1cGRhdGUgdGhlIGZpZWxkcyBwcm92aWRlZC5cbiAgICogRm9yIGV4YW1wbGU6XG4gICAqICB1cGRhdGVNZWV0aW5nVHlwZSh7bmFtZTogJ09uYm9hcmRpbmcnfSlcbiAgICogIHdpbGwgb25seSB1cGRhdGUgdGhlIGZpZWxkICduYW1lJyB0byAnT25ib2FyZGluZycuIEtlZXBpbmcgdGhlIG90aGVyIGZpZWxkcyB0aGUgc2FtZS5cbiAgICpcbiAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwcm92aWRlIGEgbGlzdCBvZiBrZXlzIHRvIHVwZGF0ZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogICB1cGRhdGVNZWV0aW5nVHlwZSh7Li4ub2JqZWN0IHdpdGggYWxsIGZpZWxkc30sIFsnbmFtZSddKVxuICAgKiAgIHdpbGwgb25seSB1cGRhdGUgdGhlIGZpZWxkICduYW1lJyB0byB0aGUgdmFsdWUgcGFzc2VkIGluLlxuICAgKlxuICAgKiBDYWxsaW5nIHdpdGggYW4gZW1wdHkgb2JqZWN0IGFuZCBubyBrZXlzIGlzIGEgbm8tb3AsIG9yIGFuIHVuZGVmaW5lZCBvYmplY3QuXG4gICAqIENhbGxpbmcgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyBmaWVsZHMgbm90IGluIGBNZWV0aW5nVHlwZWAgb3Igd2l0aCB1cGRhdGVGaWVsZHMgbm90IGxpbmtlZCB0byBwcm9wZXJ0aWVzIGluXG4gICAqIGBNZWV0aW5nVHlwZWAgaXMgYW4gZXJyb3IuXG4gICAqL1xuICB1cGRhdGVNZWV0aW5nVHlwZShyZXE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlOiBQYXJ0aWFsPE1lZXRpbmdUeXBlPjtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgTWVldGluZ1R5cGUpW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5tZWV0aW5nVHlwZSxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlTWVldGluZ1R5cGUoe1xuICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICBtZWV0aW5nVHlwZTogTWVldGluZ1R5cGVUb0FwaSh7IG1lZXRpbmdUeXBlOiByZXEubWVldGluZ1R5cGUgfSksXG4gICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgaG9zdElkOiByZXEuSG9zdElkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgZGVsZXRlTWVldGluZ1R5cGUocmVxOiB7IGlkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZGVsZXRlTWVldGluZ1R5cGUoeyBpZDogcmVxLmlkIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGdldEhvc3RzRm9yQ2FsZW5kYXIocmVxOiB7IGNhbGVuZGFySWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTx7XG4gICAgaG9zdFVzZXJzOiBIb3N0VXNlcltdO1xuICAgIGF2YWlsYWJpbGl0eVJ1bGVzOiB7IFtrZXk6IHN0cmluZ106IEF2YWlsYWJpbGl0eVJ1bGVMaXN0IH07XG4gIH0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmdldEhvc3RzRm9yQ2FsZW5kYXIoeyBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgaG9zdFVzZXJzID0gKHJlcy5ob3N0VXNlcnMgfHwgW10pLm1hcCgoaG9zdHVzZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBob3N0VXNlckZyb21BcGkoaG9zdHVzZXIpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgYXZhaWxhYmlsaXR5UnVsZXMgPSByZXMuaG9zdFVzZXJBdmFpbGFiaWxpdHlSdWxlIHx8IHt9O1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhvc3RVc2VycyxcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eVJ1bGVzLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIElzQ2FsZW5kYXJDb25maWd1cmVkKFxuICAgIHJlcTogSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXF1ZXN0SW50ZXJmYWNlLFxuICApOiBPYnNlcnZhYmxlPElzQ2FsZW5kYXJDb25maWd1cmVkUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5pc0NhbGVuZGFyQ29uZmlndXJlZChyZXEpO1xuICB9XG5cbiAgc2VuZE1lZXRpbmdSZXF1ZXN0RW1haWwoXG4gICAgcmVxOiBTZW5kTWVldGluZ1JlcXVlc3RFbWFpbFJlcXVlc3RJbnRlcmZhY2UsXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2Uuc2VuZE1lZXRpbmdSZXF1ZXN0RW1haWwocmVxKTtcbiAgfVxuXG4gIGNyZWF0ZVNlcnZpY2UocmVxOiB7XG4gICAgc2VydmljZTogU2VydmljZTtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgU2VydmljZSlbXTtcbiAgICBIb3N0SWQ/OiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IGZpZWxkTWFzayA9IGdldEZpZWxkTWFzayh7XG4gICAgICBvOiByZXEuc2VydmljZSxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY3JlYXRlU2VydmljZSh7XG4gICAgICAgIHNlcnZpY2U6IFNlcnZpY2VUeXBlVG9BcGkoeyBzZXJ2aWNlOiByZXEuc2VydmljZSB9KSxcbiAgICAgICAgZmllbGRNYXNrLFxuICAgICAgICBob3N0SWQ6IHJlcS5Ib3N0SWQsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHJlcy5pZCkpO1xuICB9XG5cbiAgdXBkYXRlU2VydmljZShyZXE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHNlcnZpY2U6IFBhcnRpYWw8U2VydmljZT47XG4gICAgdXBkYXRlRmllbGRzPzogKGtleW9mIFNlcnZpY2UpW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5zZXJ2aWNlLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVTZXJ2aWNlKHtcbiAgICAgICAgaWQ6IHJlcS5pZCxcbiAgICAgICAgc2VydmljZTogU2VydmljZVR5cGVUb0FwaSh7IHNlcnZpY2U6IHJlcS5zZXJ2aWNlIH0pLFxuICAgICAgICBmaWVsZE1hc2ssXG4gICAgICAgIGhvc3RJZDogcmVxLkhvc3RJZCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGRlbGV0ZVNlcnZpY2UocmVxOiB7IGlkOiBzdHJpbmc7IGhvc3RJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmRlbGV0ZVNlcnZpY2UoeyBpZDogcmVxLmlkLCBob3N0SWQ6IHJlcS5ob3N0SWQgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgbGlzdFNlcnZpY2VzKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxTZXJ2aWNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5saXN0U2VydmljZXMoeyBob3N0SWQ6IHJlcS5ob3N0SWQgfSkucGlwZShcbiAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgIGlmICghcmVzIHx8ICFyZXMuc2VydmljZXMpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcy5zZXJ2aWNlcy5tYXAoKHNlcnZpY2UpID0+XG4gICAgICAgICAgU2VydmljZUZyb21BcGkoe1xuICAgICAgICAgICAgc2VydmljZUFwaTogc2VydmljZSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUdyb3VwKHJlcToge1xuICAgIGdyb3VwOiBHcm91cDtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgR3JvdXApW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe1xuICAgICAgbzogcmVxLmdyb3VwLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5jcmVhdGVHcm91cCh7XG4gICAgICAgIGdyb3VwOiBHcm91cFR5cGVUb0FQaSh7IGdyb3VwOiByZXEuZ3JvdXAgfSksXG4gICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgaG9zdElkOiByZXEuSG9zdElkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXMuaWQpKTtcbiAgfVxuXG4gIHVwZGF0ZUdyb3VwKHJlcToge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZ3JvdXA6IFBhcnRpYWw8R3JvdXA+O1xuICAgIHVwZGF0ZUZpZWxkcz86IChrZXlvZiBHcm91cClbXTtcbiAgICBIb3N0SWQ/OiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe1xuICAgICAgbzogcmVxLmdyb3VwLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVHcm91cCh7XG4gICAgICAgIGlkOiByZXEuaWQsXG4gICAgICAgIGdyb3VwOiBHcm91cFR5cGVUb0FQaSh7IGdyb3VwOiByZXEuZ3JvdXAgfSksXG4gICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgaG9zdElkOiByZXEuSG9zdElkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgZGVsZXRlR3JvdXAocmVxOiB7IGlkOiBzdHJpbmc7IGhvc3RJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmRlbGV0ZUdyb3VwKHsgaWQ6IHJlcS5pZCwgaG9zdElkOiByZXEuaG9zdElkIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGxpc3RHcm91cHMocmVxOiB7IGhvc3RJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPEdyb3VwW10+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5saXN0R3JvdXBzKHsgaG9zdElkOiByZXEuaG9zdElkIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICBpZiAoIXJlcyB8fCAhcmVzLmdyb3Vwcykge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzLmdyb3Vwcy5tYXAoKGdyb3VwKSA9PlxuICAgICAgICAgIEdyb3VwRnJvbUFwaSh7XG4gICAgICAgICAgICBncm91cEFwaTogZ3JvdXAsXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogb25Qcm9kdWN0aW9uR2xvYmFsKClcbiAgICAgICAgICAgICAgPyBFbnZpcm9ubWVudC5QUk9EXG4gICAgICAgICAgICAgIDogRW52aXJvbm1lbnQuREVNTyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBnZXRHcm91cChyZXE6IHtcbiAgICBncm91cElkOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxHZXRHcm91cFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZ2V0R3JvdXAocmVxKTtcbiAgfVxuICBnZXRTZXJ2aWNlKHJlcToge1xuICAgIHNlcnZpY2VJZDogc3RyaW5nO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBob3N0SWQ6IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8R2V0U2VydmljZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZ2V0U2VydmljZShyZXEpO1xuICB9XG5cbiAgY2hlY2tHcm91cE9yU2VydmljZVNsdWdFeGlzdChyZXE6IHtcbiAgICBob3N0SWQ6IHN0cmluZztcbiAgICBzbHVnSWRlbnRpZmllcjogc3RyaW5nO1xuICAgIGNhdGVnb3J5OiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmNoZWNrR3JvdXBPclNlcnZpY2VTbHVnRXhpc3QocmVxKVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHJlcy5leGlzdHMpKTtcbiAgfVxuXG4gIGNoZWNrRXZlbnRUeXBlU2x1Z0V4aXN0KHJlcToge1xuICAgIGNhbGVuZGFySWQ6IHN0cmluZztcbiAgICBzbHVnSWRlbnRpZmllcjogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5jaGVja0V2ZW50VHlwZVNsdWdFeGlzdChyZXEpXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gcmVzLmV4aXN0cykpO1xuICB9XG5cbiAgZ2V0RW50aXR5QXNzb2NpYXRpb25zKHJlcToge1xuICAgIGVudGl0eUlkOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPEVudGl0eUFzc29jaWF0aW9ucz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmdldEVudGl0eUFzc29jaWF0aW9ucyhyZXEpO1xuICB9XG5cbiAgZW5zdXJlU2Vzc2lvbkV2ZW50Q2FsZW5kYXJzRXhpc3QocmVxOiB7XG4gICAgZXh0ZXJuYWxJZDogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmVuc3VyZVNlc3Npb25FdmVudENhbGVuZGFyc0V4aXN0KHsgZXh0ZXJuYWxJZDogcmVxLmV4dGVybmFsSWQgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXM/LmNhbGVuZGFySWQgfHwgXCJcIikpO1xuICB9XG5cbiAgaG9zdERlbGV0ZUF0dGVuZGVlcyhyZXE6IHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBlbWFpbHNUb0RlbGV0ZTogRW1haWxzVG9EZWxldGVbXTtcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuaG9zdERlbGV0ZUF0dGVuZGVlcyh7XG4gICAgICAgIC4uLnJlcSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyhudWxsKSk7XG4gIH1cblxuICBsaXN0QXR0ZW5kZWVzKHJlcToge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIHBhZ2luZ09wdGlvbnM6IFBhZ2VkUmVxdWVzdE9wdGlvbnNJbnRlcmZhY2U7XG4gIH0pOiBPYnNlcnZhYmxlPExpc3RBdHRlbmRlZXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmxpc3RBdHRlbmRlZXMocmVxKTtcbiAgfVxuXG4gIGNhbmNlbFNlc3Npb24ocmVxOiB7XG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XG4gICAgY2FuY2VsbGF0aW9uUmVhc29uOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmNhbmNlbFNlc3Npb24oe1xuICAgICAgICAuLi5yZXEsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG8obnVsbCkpO1xuICB9XG5cbiAgcmVzY2hlZHVsZVNlc3Npb24ocmVxOiB7XG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XG4gICAgc3RhcnQ6IERhdGU7XG4gICAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gICAgaXNSZWN1cnJpbmc6IGJvb2xlYW47XG4gIH0pOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLnJlc2NoZWR1bGVTZXNzaW9uKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKG51bGwpKTtcbiAgfVxuXG4gIGxpc3RBdmFpbGFibGVUaW1lc2xvdHNGb3JTZXNzaW9uKHJlcToge1xuICAgIGV2ZW50VHlwZUlkOiBzdHJpbmc7XG4gICAgdGltZVNwYW46IFRpbWVTcGFuO1xuICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZTtcbiAgICB1c2VySWRzOiBzdHJpbmdbXTtcbiAgfSk6IE9ic2VydmFibGU8VGltZVNwYW5bXT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAubGlzdEF2YWlsYWJsZVRpbWVzbG90c0ZvclNlc3Npb24ocmVxKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcCkgPT5cbiAgICAgICAgICByZXNwLnRpbWVTbG90cyA/IHJlc3AudGltZVNsb3RzLm1hcCgodHMpID0+IFRpbWVTcGFuRnJvbUFwaSh0cykpIDogW10sXG4gICAgICAgICksXG4gICAgICApO1xuICB9XG5cbiAgbGlzdEV2ZW50VHlwZXNGb3JNdWx0aXBsZUNhbGVuZGFycyhyZXE6IHtcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW107XG4gIH0pOiBPYnNlcnZhYmxlPExpc3RFdmVudFR5cGVzRm9yTXVsdGlwbGVDYWxlbmRhcnNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmxpc3RFdmVudFR5cGVzRm9yTXVsdGlwbGVDYWxlbmRhcnMocmVxKTtcbiAgfVxuXG4gIGxpc3RCb29raW5nVHlwZXNGb3JBaShyZXE6IHtcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICBib29raW5nU291cmNlOiBlLkJvb2tpbmdTb3VyY2U7XG4gIH0pOiBPYnNlcnZhYmxlPExpc3RCb29raW5nVHlwZXNGb3JBSVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEJvb2tpbmdUeXBlc0ZvckFpKHJlcSk7XG4gIH1cblxufVxuXG4iXX0=
|
|
@@ -13,6 +13,9 @@ export function GroupTypeToAPi(req) {
|
|
|
13
13
|
associations: m.associations ? m.associations.map(AssociationTypeToApi) : undefined,
|
|
14
14
|
hexColor: m.hexColor || undefined,
|
|
15
15
|
isBatchBookingEnabled: m.isBatchBookingEnabled || undefined,
|
|
16
|
+
redirectEnabled: m.redirectEnabled || false,
|
|
17
|
+
redirectUrl: m.redirectUrl || undefined,
|
|
18
|
+
redirectDelaySeconds: m.redirectDelaySeconds || 0,
|
|
16
19
|
};
|
|
17
20
|
}
|
|
18
21
|
export function ServiceTypeToApi(req) {
|
|
@@ -29,6 +32,9 @@ export function ServiceTypeToApi(req) {
|
|
|
29
32
|
associations: m.associations ? m.associations.map(AssociationTypeToApi) : undefined,
|
|
30
33
|
hexColor: m.hexColor || undefined,
|
|
31
34
|
isBatchBookingEnabled: m.isBatchBookingEnabled || undefined,
|
|
35
|
+
redirectEnabled: m.redirectEnabled || false,
|
|
36
|
+
redirectUrl: m.redirectUrl || undefined,
|
|
37
|
+
redirectDelaySeconds: m.redirectDelaySeconds || 0,
|
|
32
38
|
};
|
|
33
39
|
}
|
|
34
40
|
export function AssociationTypeToApi(association) {
|
|
@@ -75,6 +81,9 @@ export function GroupFromApi(req) {
|
|
|
75
81
|
hexColor: req.groupApi.hexColor || '',
|
|
76
82
|
bookingUrl: bookingUrl,
|
|
77
83
|
isBatchBookingEnabled: req.groupApi.isBatchBookingEnabled || false,
|
|
84
|
+
redirectEnabled: req.groupApi.redirectEnabled || false,
|
|
85
|
+
redirectUrl: req.groupApi.redirectUrl || "",
|
|
86
|
+
redirectDelaySeconds: req.groupApi.redirectDelaySeconds || 0,
|
|
78
87
|
};
|
|
79
88
|
}
|
|
80
89
|
export function getBookingURL(environment, slug, calendarId) {
|
|
@@ -102,6 +111,9 @@ export function ServiceFromApi(req) {
|
|
|
102
111
|
hexColor: req.serviceApi.hexColor || '',
|
|
103
112
|
bookingUrl: bookingUrl,
|
|
104
113
|
isBatchBookingEnabled: req.serviceApi.isBatchBookingEnabled || false,
|
|
114
|
+
redirectEnabled: req.serviceApi.redirectEnabled || false,
|
|
115
|
+
redirectUrl: req.serviceApi.redirectUrl || "",
|
|
116
|
+
redirectDelaySeconds: req.serviceApi.redirectDelaySeconds || 0,
|
|
105
117
|
};
|
|
106
118
|
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLWFuZC1zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21lZXRpbmdzX3Nkay9zcmMvbGliL3NoYXJlZC9ncm91cHMtYW5kLXNlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQWdEeEQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUE4QjtJQUN6RCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUU7UUFDSixPQUFPLEVBQUUsQ0FBQztLQUNiO0lBQ0QsT0FBTztRQUNILEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFNBQVM7UUFDckIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUztRQUN6QixXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxTQUFTO1FBQ3ZDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLFNBQVM7UUFDekIsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksU0FBUztRQUNqQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUNuRixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxTQUFTO1FBQ2pDLHFCQUFxQixFQUFDLENBQUMsQ0FBQyxxQkFBcUIsSUFBSSxTQUFTO0tBQzdELENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFhLGdCQUFnQixDQUFDLEdBQWtDO0lBQ2xFLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDdEIsSUFBSSxDQUFDLENBQUMsRUFBRTtRQUNKLE9BQU8sRUFBRSxDQUFDO0tBQ2I7SUFDRCxPQUFPO1FBQ0gs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ekcsT0FBTztRQUNILEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFO1FBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxFQUFFO1FBQy9CLFdBQVcsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxFQUFFO1FBQzdDLElBQUksRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxFQUFFO1FBQy9CLFFBQVEsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxLQUFLO1FBQzFDLFlBQVksRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDcEcsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLEVBQUU7UUFDdkMsVUFBVSxFQUFFLFVBQVU7UUFDdEIscUJBQXFCLEVBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsSUFBSSxLQUFLO0tBQ3RFLENBQUE7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBFdmVudEdyb3VwQW5kU2VydmljZUFzc29jaWF0aW9uc0ludGVyZmFjZSxcbiAgICBHcm91cEludGVyZmFjZSxcbiAgICBTZXJ2aWNlSW50ZXJmYWNlXG59IGZyb20gXCIuLi9faW50ZXJuYWxcIjtcbmltcG9ydCB7Z2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9ufSBmcm9tIFwiLi4vaG9zdC91cmxcIjtcbmltcG9ydCB7RW52aXJvbm1lbnR9IGZyb20gXCIuL2Vudmlyb25tZW50XCI7XG5cblxuZXhwb3J0IGludGVyZmFjZSBHcm91cCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgaXNQaW5uZWQ6IGJvb2xlYW47XG4gICAgYXNzb2NpYXRpb25zOiBFdmVudEdyb3VwQW5kU2VydmljZUFzc29jaWF0aW9uc1tdO1xuICAgIGhleENvbG9yPzogc3RyaW5nO1xuICAgIGJvb2tpbmdVcmw/OiBzdHJpbmc7XG4gICAgaXNCYXRjaEJvb2tpbmdFbmFibGVkPzpib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zIHtcbiAgICBpZD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGV2ZW50VHlwZT86IHN0cmluZztcbiAgICBpZGVudGlmaWVyPzogc3RyaW5nO1xuICAgIGlzRWRpdGFibGU/OiBib29sZWFuO1xuICAgIGNyZWF0b3JVc2VyTmFtZT86IHN0cmluZztcbiAgICBjYWxlbmRhcklkPzogc3RyaW5nO1xuICAgIGhleENvbG9yPzogc3RyaW5nO1xuICAgIGR1cmF0aW9uPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGJvb2tpbmdVcmw/OiBzdHJpbmc7XG5cbiB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgaXNQaW5uZWQ6IGJvb2xlYW47XG4gICAgYXNzb2NpYXRpb25zOiBFdmVudEdyb3VwQW5kU2VydmljZUFzc29jaWF0aW9uc1tdO1xuICAgIGhleENvbG9yPzogc3RyaW5nO1xuICAgIGJvb2tpbmdVcmw/OiBzdHJpbmc7XG4gICAgaXNCYXRjaEJvb2tpbmdFbmFibGVkPzpib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUFzc29jaWF0aW9ucyB7XG4gICAgc2VydmljZXM/OiBzdHJpbmdbXTtcbiAgICBncm91cHM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEdyb3VwVHlwZVRvQVBpKHJlcTogeyBncm91cDogUGFydGlhbDxHcm91cD4gfSk6IEdyb3VwSW50ZXJmYWNlIHtcbiAgICBjb25zdCBtID0gcmVxLmdyb3VwO1xuICAgIGlmICghbSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBtLmlkIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZTogbS5uYW1lIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZGVzY3JpcHRpb246IG0uZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgICBzbHVnOiBtLnNsdWcgfHwgdW5kZWZpbmVkLFxuICAgICAgICBpc1Bpbm5lZDogbS5pc1Bpbm5lZCB8fCB1bmRlZmluZWQsXG4gICAgICAgIGFzc29jaWF0aW9uczogbS5hc3NvY2lhdGlvbnMgPyBtLmFzc29jaWF0aW9ucy5tYXAoQXNzb2NpYXRpb25UeXBlVG9BcGkpIDogdW5kZWZpbmVkLFxuICAgICAgICBoZXhDb2xvcjogbS5oZXhDb2xvciB8fCB1bmRlZmluZWQsXG4gICAgICAgIGlzQmF0Y2hCb29raW5nRW5hYmxlZDptLmlzQmF0Y2hCb29raW5nRW5hYmxlZCB8fCB1bmRlZmluZWQsXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gICAgU2VydmljZVR5cGVUb0FwaShyZXE6IHsgc2VydmljZTogUGFydGlhbDxTZXJ2aWNlPiB9KTogU2VydmljZUludGVyZmFjZSB7XG4gICAgY29uc3QgbSA9IHJlcS5zZXJ2aWNlO1xuICAgIGlmICghbSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBtLmlkIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZTogbS5uYW1lIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZGVzY3JpcHRpb246IG0uZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgICBzbHVnOiBtLnNsdWcgfHwgdW5kZWZpbmVkLFxuICAgICAgICBpc1Bpbm5lZDogbS5pc1Bpbm5lZCB8fCB1bmRlZmluZWQsXG4gICAgICAgIGFzc29jaWF0aW9uczogbS5hc3NvY2lhdGlvbnMgPyBtLmFzc29jaWF0aW9ucy5tYXAoQXNzb2NpYXRpb25UeXBlVG9BcGkpIDogdW5kZWZpbmVkLFxuICAgICAgICBoZXhDb2xvcjogbS5oZXhDb2xvciB8fCB1bmRlZmluZWQsXG4gICAgICAgIGlzQmF0Y2hCb29raW5nRW5hYmxlZDptLmlzQmF0Y2hCb29raW5nRW5hYmxlZCB8fCB1bmRlZmluZWQsXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQXNzb2NpYXRpb25UeXBlVG9BcGkoYXNzb2NpYXRpb246IEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zKTogRXZlbnRHcm91cEFuZFNlcnZpY2VBc3NvY2lhdGlvbnNJbnRlcmZhY2Uge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBhc3NvY2lhdGlvbi5pZCB8fCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU6IGFzc29jaWF0aW9uLm5hbWUgfHwgdW5kZWZpbmVkLFxuICAgICAgICBldmVudFR5cGU6IGFzc29jaWF0aW9uLmV2ZW50VHlwZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IGFzc29jaWF0aW9uLmlkZW50aWZpZXIgfHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0VkaXRhYmxlOiBhc3NvY2lhdGlvbi5pc0VkaXRhYmxlIHx8IGZhbHNlLFxuICAgICAgICBjcmVhdG9yVXNlck5hbWU6IGFzc29jaWF0aW9uLmNyZWF0b3JVc2VyTmFtZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGNhbGVuZGFySWQ6IGFzc29jaWF0aW9uLmNhbGVuZGFySWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICBoZXhDb2xvcjogYXNzb2NpYXRpb24uaGV4Q29sb3IgfHwgdW5kZWZpbmVkLFxuICAgICAgICBkdXJhdGlvbjogYXNzb2NpYXRpb24uZHVyYXRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgICBkZXNjcmlwdGlvbjogYXNzb2NpYXRpb24uZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgICBib29raW5nVXJsOiBhc3NvY2lhdGlvbi5ib29raW5nVXJsIHx8IHVuZGVmaW5lZFxuXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQXNzb2NpYXRpb25Gcm9tQXBpKGFzc29jaWF0aW9uQXBpOiBFdmVudEdyb3VwQW5kU2VydmljZUFzc29jaWF0aW9uc0ludGVyZmFjZSk6IEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogYXNzb2NpYXRpb25BcGkuaWQgfHwgJycsXG4gICAgICAgIG5hbWU6IGFzc29jaWF0aW9uQXBpLm5hbWUgfHwgJycsXG4gICAgICAgIGV2ZW50VHlwZTogYXNzb2NpYXRpb25BcGkuZXZlbnRUeXBlIHx8ICcnLFxuICAgICAgICBpZGVudGlmaWVyOiBhc3NvY2lhdGlvbkFwaS5pZGVudGlmaWVyIHx8ICcnLFxuICAgICAgICBpc0VkaXRhYmxlOiBhc3NvY2lhdGlvbkFwaS5pc0VkaXRhYmxlIHx8ZmFsc2UsXG4gICAgICAgIGNyZWF0b3JVc2VyTmFtZTogYXNzb2NpYXRpb25BcGkuY3JlYXRvclVzZXJOYW1lIHx8ICcnLFxuICAgICAgICBjYWxlbmRhcklkOiBhc3NvY2lhdGlvbkFwaS5jYWxlbmRhcklkIHx8ICcnLFxuICAgICAgICBoZXhDb2xvcjogYXNzb2NpYXRpb25BcGkuaGV4Q29sb3IgfHwgJycsXG4gICAgICAgIGR1cmF0aW9uOiBhc3NvY2lhdGlvbkFwaS5kdXJhdGlvbiB8fCAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IGFzc29jaWF0aW9uQXBpLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBib29raW5nVXJsOiBhc3NvY2lhdGlvbkFwaS5ib29raW5nVXJsIHx8ICcnXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gR3JvdXBGcm9tQXBpKHJlcTp7Z3JvdXBBcGk6IEdyb3VwSW50ZXJmYWNlLGVudmlyb25tZW50OiBFbnZpcm9ubWVudH0pOiBHcm91cCB7XG4gICAgY29uc3QgZ3JvdXBJZCA9IHJlcS5ncm91cEFwaS5pZCB8fCAnJztcbiAgICBjb25zdCBncm91cFNsdWcgPSByZXEuZ3JvdXBBcGkuc2x1ZyB8fCAnJztcbiAgICBjb25zdCBib29raW5nVXJsID0gcmVxPy5ncm91cEFwaT8uYm9va2luZ1VybCB8fCBnZXRCb29raW5nVVJMKHJlcS5lbnZpcm9ubWVudCwgZ3JvdXBTbHVnLCBncm91cElkKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogZ3JvdXBJZCxcbiAgICAgICAgbmFtZTogcmVxLmdyb3VwQXBpLm5hbWUgfHwgJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiByZXEuZ3JvdXBBcGkuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNsdWc6IGdyb3VwU2x1ZyxcbiAgICAgICAgaXNQaW5uZWQ6IHJlcS5ncm91cEFwaS5pc1Bpbm5lZCB8fCBmYWxzZSxcbiAgICAgICAgYXNzb2NpYXRpb25zOiByZXEuZ3JvdXBBcGkuYXNzb2NpYXRpb25zID8gcmVxLmdyb3VwQXBpLmFzc29jaWF0aW9ucy5tYXAoQXNzb2NpYXRpb25Gcm9tQXBpKSA6IFtdLFxuICAgICAgICBoZXhDb2xvcjogcmVxLmdyb3VwQXBpLmhleENvbG9yIHx8ICcnLFxuICAgICAgICBib29raW5nVXJsOiBib29raW5nVXJsLFxuICAgICAgICBpc0JhdGNoQm9va2luZ0VuYWJsZWQ6cmVxLmdyb3VwQXBpLmlzQmF0Y2hCb29raW5nRW5hYmxlZCB8fCBmYWxzZSxcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29raW5nVVJMKGVudmlyb25tZW50OiBFbnZpcm9ubWVudCwgc2x1Zzogc3RyaW5nLCBjYWxlbmRhcklkOnN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGJvb2tpbmdVcmwgPSAnJztcbiAgICBpZiAoc2x1ZyAhPSAnJyApIHtcbiAgICAgICAgYm9va2luZ1VybCA9IGdldEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbih7XG4gICAgICAgICAgICBlbnZpcm9ubWVudDogZW52aXJvbm1lbnQsXG4gICAgICAgICAgICBjYWxlbmRhcklkOiBjYWxlbmRhcklkLFxuICAgICAgICAgICAgbWVldGluZ1R5cGVTbHVnOiBzbHVnICxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBib29raW5nVXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2VydmljZUZyb21BcGkocmVxOntzZXJ2aWNlQXBpOiBTZXJ2aWNlSW50ZXJmYWNlLGVudmlyb25tZW50OiBFbnZpcm9ubWVudH0pOiBTZXJ2aWNlIHtcbiAgICBjb25zdCBzZXJ2aWNlSWQgPSByZXEuc2VydmljZUFwaS5pZCB8fCAnJztcbiAgICBjb25zdCBzZXJ2aWNlU2x1ZyA9IHJlcS5zZXJ2aWNlQXBpLnNsdWcgfHwgJyc7XG4gICAgY29uc3QgYm9va2luZ1VybCA9IHJlcT8uc2VydmljZUFwaT8uYm9va2luZ1VybCB8fCBnZXRCb29raW5nVVJMKHJlcS5lbnZpcm9ubWVudCwgc2VydmljZVNsdWcsIHNlcnZpY2VJZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHJlcS5zZXJ2aWNlQXBpLmlkIHx8ICcnLFxuICAgICAgICBuYW1lOiByZXEuc2VydmljZUFwaS5uYW1lIHx8ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogcmVxLnNlcnZpY2VBcGkuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNsdWc6IHJlcS5zZXJ2aWNlQXBpLnNsdWcgfHwgJycsXG4gICAgICAgIGlzUGlubmVkOiByZXEuc2VydmljZUFwaS5pc1Bpbm5lZCB8fCBmYWxzZSxcbiAgICAgICAgYXNzb2NpYXRpb25zOiByZXEuc2VydmljZUFwaS5hc3NvY2lhdGlvbnMgPyByZXEuc2VydmljZUFwaS5hc3NvY2lhdGlvbnMubWFwKEFzc29jaWF0aW9uRnJvbUFwaSkgOiBbXSxcbiAgICAgICAgaGV4Q29sb3I6IHJlcS5zZXJ2aWNlQXBpLmhleENvbG9yIHx8ICcnLFxuICAgICAgICBib29raW5nVXJsOiBib29raW5nVXJsLFxuICAgICAgICBpc0JhdGNoQm9va2luZ0VuYWJsZWQ6cmVxLnNlcnZpY2VBcGkuaXNCYXRjaEJvb2tpbmdFbmFibGVkIHx8IGZhbHNlLFxuICAgIH1cbn0iXX0=
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLWFuZC1zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21lZXRpbmdzX3Nkay9zcmMvbGliL3NoYXJlZC9ncm91cHMtYW5kLXNlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQXNEeEQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUE4QjtJQUN6RCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUU7UUFDSixPQUFPLEVBQUUsQ0FBQztLQUNiO0lBQ0QsT0FBTztRQUNILEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFNBQVM7UUFDckIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUztRQUN6QixXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxTQUFTO1FBQ3ZDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLFNBQVM7UUFDekIsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksU0FBUztRQUNqQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUNuRixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxTQUFTO1FBQ2pDLHFCQUFxQixFQUFDLENBQUMsQ0FBQyxxQkFBcUIsSUFBSSxTQUFTO1FBQzFELGVBQWUsRUFBQyxDQUFDLENBQUMsZUFBZSxJQUFFLEtBQUs7UUFDeEMsV0FBVyxFQUFDLENBQUMsQ0FBQyxXQUFXLElBQUUsU0FBUztRQUNwQyxvQkFBb0IsRUFBQyxDQUFDLENBQUMsb0JBQW9CLElBQUUsQ0FBQztLQUNqRCxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFB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LFVBQVUsQ0FBQyxxQkFBcUIsSUFBSSxLQUFLO1FBQ25FLGVBQWUsRUFBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGVBQWUsSUFBSSxLQUFLO1FBQ3ZELFdBQVcsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxFQUFFO1FBQzdDLG9CQUFvQixFQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLElBQUksQ0FBQztLQUNoRSxDQUFBO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRXZlbnRHcm91cEFuZFNlcnZpY2VBc3NvY2lhdGlvbnNJbnRlcmZhY2UsXG4gICAgR3JvdXBJbnRlcmZhY2UsXG4gICAgU2VydmljZUludGVyZmFjZVxufSBmcm9tIFwiLi4vX2ludGVybmFsXCI7XG5pbXBvcnQge2dldEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbn0gZnJvbSBcIi4uL2hvc3QvdXJsXCI7XG5pbXBvcnQge0Vudmlyb25tZW50fSBmcm9tIFwiLi9lbnZpcm9ubWVudFwiO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXAge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIGlzUGlubmVkOiBib29sZWFuO1xuICAgIGFzc29jaWF0aW9uczogRXZlbnRHcm91cEFuZFNlcnZpY2VBc3NvY2lhdGlvbnNbXTtcbiAgICBoZXhDb2xvcj86IHN0cmluZztcbiAgICBib29raW5nVXJsPzogc3RyaW5nO1xuICAgIGlzQmF0Y2hCb29raW5nRW5hYmxlZD86Ym9vbGVhbjtcbiAgICByZWRpcmVjdEVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHJlZGlyZWN0VXJsPzogc3RyaW5nO1xuICAgIHJlZGlyZWN0RGVsYXlTZWNvbmRzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zIHtcbiAgICBpZD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGV2ZW50VHlwZT86IHN0cmluZztcbiAgICBpZGVudGlmaWVyPzogc3RyaW5nO1xuICAgIGlzRWRpdGFibGU/OiBib29sZWFuO1xuICAgIGNyZWF0b3JVc2VyTmFtZT86IHN0cmluZztcbiAgICBjYWxlbmRhcklkPzogc3RyaW5nO1xuICAgIGhleENvbG9yPzogc3RyaW5nO1xuICAgIGR1cmF0aW9uPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGJvb2tpbmdVcmw/OiBzdHJpbmc7XG5cbiB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgaXNQaW5uZWQ6IGJvb2xlYW47XG4gICAgYXNzb2NpYXRpb25zOiBFdmVudEdyb3VwQW5kU2VydmljZUFzc29jaWF0aW9uc1tdO1xuICAgIGhleENvbG9yPzogc3RyaW5nO1xuICAgIGJvb2tpbmdVcmw/OiBzdHJpbmc7XG4gICAgaXNCYXRjaEJvb2tpbmdFbmFibGVkPzpib29sZWFuO1xuICAgIHJlZGlyZWN0RW5hYmxlZD86IGJvb2xlYW47XG4gICAgcmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gICAgcmVkaXJlY3REZWxheVNlY29uZHM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5QXNzb2NpYXRpb25zIHtcbiAgICBzZXJ2aWNlcz86IHN0cmluZ1tdO1xuICAgIGdyb3Vwcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gR3JvdXBUeXBlVG9BUGkocmVxOiB7IGdyb3VwOiBQYXJ0aWFsPEdyb3VwPiB9KTogR3JvdXBJbnRlcmZhY2Uge1xuICAgIGNvbnN0IG0gPSByZXEuZ3JvdXA7XG4gICAgaWYgKCFtKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IG0uaWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICBuYW1lOiBtLm5hbWUgfHwgdW5kZWZpbmVkLFxuICAgICAgICBkZXNjcmlwdGlvbjogbS5kZXNjcmlwdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgICAgIHNsdWc6IG0uc2x1ZyB8fCB1bmRlZmluZWQsXG4gICAgICAgIGlzUGlubmVkOiBtLmlzUGlubmVkIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgYXNzb2NpYXRpb25zOiBtLmFzc29jaWF0aW9ucyA/IG0uYXNzb2NpYXRpb25zLm1hcChBc3NvY2lhdGlvblR5cGVUb0FwaSkgOiB1bmRlZmluZWQsXG4gICAgICAgIGhleENvbG9yOiBtLmhleENvbG9yIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgaXNCYXRjaEJvb2tpbmdFbmFibGVkOm0uaXNCYXRjaEJvb2tpbmdFbmFibGVkIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgcmVkaXJlY3RFbmFibGVkOm0ucmVkaXJlY3RFbmFibGVkfHxmYWxzZSxcbiAgICAgICAgcmVkaXJlY3RVcmw6bS5yZWRpcmVjdFVybHx8dW5kZWZpbmVkLFxuICAgICAgICByZWRpcmVjdERlbGF5U2Vjb25kczptLnJlZGlyZWN0RGVsYXlTZWNvbmRzfHwwLFxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICAgIFNlcnZpY2VUeXBlVG9BcGkocmVxOiB7IHNlcnZpY2U6IFBhcnRpYWw8U2VydmljZT4gfSk6IFNlcnZpY2VJbnRlcmZhY2Uge1xuICAgIGNvbnN0IG0gPSByZXEuc2VydmljZTtcbiAgICBpZiAoIW0pIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogbS5pZCB8fCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU6IG0ubmFtZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtLmRlc2NyaXB0aW9uIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgc2x1ZzogbS5zbHVnIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgaXNQaW5uZWQ6IG0uaXNQaW5uZWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICBhc3NvY2lhdGlvbnM6IG0uYXNzb2NpYXRpb25zID8gbS5hc3NvY2lhdGlvbnMubWFwKEFzc29jaWF0aW9uVHlwZVRvQXBpKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgaGV4Q29sb3I6IG0uaGV4Q29sb3IgfHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0JhdGNoQm9va2luZ0VuYWJsZWQ6bS5pc0JhdGNoQm9va2luZ0VuYWJsZWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICByZWRpcmVjdEVuYWJsZWQ6bS5yZWRpcmVjdEVuYWJsZWR8fGZhbHNlLFxuICAgICAgICByZWRpcmVjdFVybDptLnJlZGlyZWN0VXJsfHx1bmRlZmluZWQsXG4gICAgICAgIHJlZGlyZWN0RGVsYXlTZWNvbmRzOm0ucmVkaXJlY3REZWxheVNlY29uZHN8fDAsXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQXNzb2NpYXRpb25UeXBlVG9BcGkoYXNzb2NpYXRpb246IEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zKTogRXZlbnRHcm91cEFuZFNlcnZpY2VBc3NvY2lhdGlvbnNJbnRlcmZhY2Uge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBhc3NvY2lhdGlvbi5pZCB8fCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU6IGFzc29jaWF0aW9uLm5hbWUgfHwgdW5kZWZpbmVkLFxuICAgICAgICBldmVudFR5cGU6IGFzc29jaWF0aW9uLmV2ZW50VHlwZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IGFzc29jaWF0aW9uLmlkZW50aWZpZXIgfHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0VkaXRhYmxlOiBhc3NvY2lhdGlvbi5pc0VkaXRhYmxlIHx8IGZhbHNlLFxuICAgICAgICBjcmVhdG9yVXNlck5hbWU6IGFzc29jaWF0aW9uLmNyZWF0b3JVc2VyTmFtZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGNhbGVuZGFySWQ6IGFzc29jaWF0aW9uLmNhbGVuZGFySWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICBoZXhDb2xvcjogYXNzb2NpYXRpb24uaGV4Q29sb3IgfHwgdW5kZWZpbmVkLFxuICAgICAgICBkdXJhdGlvbjogYXNzb2NpYXRpb24uZHVyYXRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgICBkZXNjcmlwdGlvbjogYXNzb2NpYXRpb24uZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgICBib29raW5nVXJsOiBhc3NvY2lhdGlvbi5ib29raW5nVXJsIHx8IHVuZGVmaW5lZFxuXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQXNzb2NpYXRpb25Gcm9tQXBpKGFzc29jaWF0aW9uQXBpOiBFdmVudEdyb3VwQW5kU2VydmljZUFzc29jaWF0aW9uc0ludGVyZmFjZSk6IEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogYXNzb2NpYXRpb25BcGkuaWQgfHwgJycsXG4gICAgICAgIG5hbWU6IGFzc29jaWF0aW9uQXBpLm5hbWUgfHwgJycsXG4gICAgICAgIGV2ZW50VHlwZTogYXNzb2NpYXRpb25BcGkuZXZlbnRUeXBlIHx8ICcnLFxuICAgICAgICBpZGVudGlmaWVyOiBhc3NvY2lhdGlvbkFwaS5pZGVudGlmaWVyIHx8ICcnLFxuICAgICAgICBpc0VkaXRhYmxlOiBhc3NvY2lhdGlvbkFwaS5pc0VkaXRhYmxlIHx8ZmFsc2UsXG4gICAgICAgIGNyZWF0b3JVc2VyTmFtZTogYXNzb2NpYXRpb25BcGkuY3JlYXRvclVzZXJOYW1lIHx8ICcnLFxuICAgICAgICBjYWxlbmRhcklkOiBhc3NvY2lhdGlvbkFwaS5jYWxlbmRhcklkIHx8ICcnLFxuICAgICAgICBoZXhDb2xvcjogYXNzb2NpYXRpb25BcGkuaGV4Q29sb3IgfHwgJycsXG4gICAgICAgIGR1cmF0aW9uOiBhc3NvY2lhdGlvbkFwaS5kdXJhdGlvbiB8fCAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IGFzc29jaWF0aW9uQXBpLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBib29raW5nVXJsOiBhc3NvY2lhdGlvbkFwaS5ib29raW5nVXJsIHx8ICcnXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gR3JvdXBGcm9tQXBpKHJlcTp7Z3JvdXBBcGk6IEdyb3VwSW50ZXJmYWNlLGVudmlyb25tZW50OiBFbnZpcm9ubWVudH0pOiBHcm91cCB7XG4gICAgY29uc3QgZ3JvdXBJZCA9IHJlcS5ncm91cEFwaS5pZCB8fCAnJztcbiAgICBjb25zdCBncm91cFNsdWcgPSByZXEuZ3JvdXBBcGkuc2x1ZyB8fCAnJztcbiAgICBjb25zdCBib29raW5nVXJsID0gcmVxPy5ncm91cEFwaT8uYm9va2luZ1VybCB8fCBnZXRCb29raW5nVVJMKHJlcS5lbnZpcm9ubWVudCwgZ3JvdXBTbHVnLCBncm91cElkKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogZ3JvdXBJZCxcbiAgICAgICAgbmFtZTogcmVxLmdyb3VwQXBpLm5hbWUgfHwgJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiByZXEuZ3JvdXBBcGkuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNsdWc6IGdyb3VwU2x1ZyxcbiAgICAgICAgaXNQaW5uZWQ6IHJlcS5ncm91cEFwaS5pc1Bpbm5lZCB8fCBmYWxzZSxcbiAgICAgICAgYXNzb2NpYXRpb25zOiByZXEuZ3JvdXBBcGkuYXNzb2NpYXRpb25zID8gcmVxLmdyb3VwQXBpLmFzc29jaWF0aW9ucy5tYXAoQXNzb2NpYXRpb25Gcm9tQXBpKSA6IFtdLFxuICAgICAgICBoZXhDb2xvcjogcmVxLmdyb3VwQXBpLmhleENvbG9yIHx8ICcnLFxuICAgICAgICBib29raW5nVXJsOiBib29raW5nVXJsLFxuICAgICAgICBpc0JhdGNoQm9va2luZ0VuYWJsZWQ6cmVxLmdyb3VwQXBpLmlzQmF0Y2hCb29raW5nRW5hYmxlZCB8fCBmYWxzZSxcbiAgICAgICAgcmVkaXJlY3RFbmFibGVkOnJlcS5ncm91cEFwaS5yZWRpcmVjdEVuYWJsZWQgfHwgZmFsc2UsXG4gICAgICAgIHJlZGlyZWN0VXJsOiByZXEuZ3JvdXBBcGkucmVkaXJlY3RVcmwgfHwgXCJcIixcbiAgICAgICAgcmVkaXJlY3REZWxheVNlY29uZHM6cmVxLmdyb3VwQXBpLnJlZGlyZWN0RGVsYXlTZWNvbmRzIHx8IDAsXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm9va2luZ1VSTChlbnZpcm9ubWVudDogRW52aXJvbm1lbnQsIHNsdWc6IHN0cmluZywgY2FsZW5kYXJJZDpzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBib29raW5nVXJsID0gJyc7XG4gICAgaWYgKHNsdWcgIT0gJycgKSB7XG4gICAgICAgIGJvb2tpbmdVcmwgPSBnZXRCb29raW5nVXJsSW1wbGVtZW50YXRpb24oe1xuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IGVudmlyb25tZW50LFxuICAgICAgICAgICAgY2FsZW5kYXJJZDogY2FsZW5kYXJJZCxcbiAgICAgICAgICAgIG1lZXRpbmdUeXBlU2x1Zzogc2x1ZyAsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYm9va2luZ1VybDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlcnZpY2VGcm9tQXBpKHJlcTp7c2VydmljZUFwaTogU2VydmljZUludGVyZmFjZSxlbnZpcm9ubWVudDogRW52aXJvbm1lbnR9KTogU2VydmljZSB7XG4gICAgY29uc3Qgc2VydmljZUlkID0gcmVxLnNlcnZpY2VBcGkuaWQgfHwgJyc7XG4gICAgY29uc3Qgc2VydmljZVNsdWcgPSByZXEuc2VydmljZUFwaS5zbHVnIHx8ICcnO1xuICAgIGNvbnN0IGJvb2tpbmdVcmwgPSByZXE/LnNlcnZpY2VBcGk/LmJvb2tpbmdVcmwgfHwgZ2V0Qm9va2luZ1VSTChyZXEuZW52aXJvbm1lbnQsIHNlcnZpY2VTbHVnLCBzZXJ2aWNlSWQpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiByZXEuc2VydmljZUFwaS5pZCB8fCAnJyxcbiAgICAgICAgbmFtZTogcmVxLnNlcnZpY2VBcGkubmFtZSB8fCAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IHJlcS5zZXJ2aWNlQXBpLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzbHVnOiByZXEuc2VydmljZUFwaS5zbHVnIHx8ICcnLFxuICAgICAgICBpc1Bpbm5lZDogcmVxLnNlcnZpY2VBcGkuaXNQaW5uZWQgfHwgZmFsc2UsXG4gICAgICAgIGFzc29jaWF0aW9uczogcmVxLnNlcnZpY2VBcGkuYXNzb2NpYXRpb25zID8gcmVxLnNlcnZpY2VBcGkuYXNzb2NpYXRpb25zLm1hcChBc3NvY2lhdGlvbkZyb21BcGkpIDogW10sXG4gICAgICAgIGhleENvbG9yOiByZXEuc2VydmljZUFwaS5oZXhDb2xvciB8fCAnJyxcbiAgICAgICAgYm9va2luZ1VybDogYm9va2luZ1VybCxcbiAgICAgICAgaXNCYXRjaEJvb2tpbmdFbmFibGVkOnJlcS5zZXJ2aWNlQXBpLmlzQmF0Y2hCb29raW5nRW5hYmxlZCB8fCBmYWxzZSxcbiAgICAgICAgcmVkaXJlY3RFbmFibGVkOnJlcS5zZXJ2aWNlQXBpLnJlZGlyZWN0RW5hYmxlZCB8fCBmYWxzZSxcbiAgICAgICAgcmVkaXJlY3RVcmw6IHJlcS5zZXJ2aWNlQXBpLnJlZGlyZWN0VXJsIHx8IFwiXCIsXG4gICAgICAgIHJlZGlyZWN0RGVsYXlTZWNvbmRzOnJlcS5zZXJ2aWNlQXBpLnJlZGlyZWN0RGVsYXlTZWNvbmRzIHx8IDAsXG4gICAgfVxufSJdfQ==
|
|
@@ -67,6 +67,9 @@ export function MeetingTypeFromApi(req) {
|
|
|
67
67
|
isEmailRequired: req.meetingTypeApi.isEmailRequired || false,
|
|
68
68
|
isPhoneNumberRequired: req.meetingTypeApi.isPhoneNumberRequired || false,
|
|
69
69
|
notificationType: req.meetingTypeApi.notificationType || NotificationType.EMAIL,
|
|
70
|
+
redirectEnabled: req.meetingTypeApi.redirectEnabled || false,
|
|
71
|
+
redirectUrl: req.meetingTypeApi.redirectUrl || "",
|
|
72
|
+
redirectDelaySeconds: req.meetingTypeApi.redirectDelaySeconds || 0,
|
|
70
73
|
};
|
|
71
74
|
}
|
|
72
75
|
export function MeetingTypeToApi(req) {
|
|
@@ -107,6 +110,9 @@ export function MeetingTypeToApi(req) {
|
|
|
107
110
|
isEmailRequired: m.isEmailRequired || false,
|
|
108
111
|
isPhoneNumberRequired: m.isPhoneNumberRequired || false,
|
|
109
112
|
notificationType: m.notificationType || NotificationType.EMAIL,
|
|
113
|
+
redirectEnabled: m.redirectEnabled || false,
|
|
114
|
+
redirectUrl: m.redirectUrl || undefined,
|
|
115
|
+
redirectDelaySeconds: m.redirectDelaySeconds || 0,
|
|
110
116
|
};
|
|
111
117
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvc2hhcmVkL21lZXRpbmctdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsMkJBQTJCLEdBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsR0FBRSxNQUFNLG9CQUFvQixDQUFDO0FBdUQvRyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FNbEM7SUFDQyxJQUFJLFVBQVUsR0FBRyxHQUFHLEVBQUUsY0FBYyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7SUFDdkQsSUFBSSxVQUFVLEtBQUssRUFBRSxFQUFFO1FBQ3JCLFVBQVUsR0FBRywyQkFBMkIsQ0FBQztZQUN2QyxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7WUFDNUIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVO1lBQzFCLGVBQWUsRUFDYixHQUFHLENBQUMsY0FBYyxDQUFDLGVBQWUsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFO1lBQ25FLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtZQUN0QixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7U0FDL0IsQ0FBQyxDQUFDO0tBQ0o7U0FBTTtRQUNMLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQztZQUNwQyxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO1NBQzdCLENBQUMsQ0FBQztLQUNKO0lBRUQsTUFBTSxJQUFJLEdBQW9CO1FBQzVCLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUM5QyxNQUFNLEVBQUUsQ0FBQyxHQUFH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WUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZLElBQUksU0FBUztRQUN6QyxnQkFBZ0IsRUFBQyxDQUFDLENBQUMsZ0JBQWdCLElBQUksU0FBUztRQUNoRCxlQUFlLEVBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBRSxLQUFLO1FBQ3hDLHFCQUFxQixFQUFDLENBQUMsQ0FBQyxxQkFBcUIsSUFBRSxLQUFLO1FBQ3BELGdCQUFnQixFQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLO0tBQzlELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRXZlbnRUeXBlRGF0ZVJhbmdlSW50ZXJmYWNlLFxuICBGaWVsZEludGVyZmFjZSxcbiAgRm9ybUludGVyZmFjZSxcbiAgSG9zdE9yZGVyRGV0YWlsc0ludGVyZmFjZSxcbiAgSG9zdFVzZXJJbnRlcmZhY2UsXG4gIE1lZXRpbmdUeXBlSW50ZXJmYWNlIGFzIEFwaU1lZXRpbmdUeXBlLFxuICBSZWdpc3RyYXRpb25DdXRPZmZJbnRlcmZhY2UsXG59IGZyb20gXCIuLi9faW50ZXJuYWwvaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHthZGRNZXRhZGF0YVRvQm9va2luZ0xpbmssIGdldEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbix9IGZyb20gXCIuLi9ob3N0L3VybFwiO1xuaW1wb3J0IHtGb3JtRmllbGRUeXBlLCBNZWV0aW5nTG9jYXRpb25UeXBlLCBOb3RpZmljYXRpb25UeXBlLCBUZWFtRXZlbnRNZWV0aW5nVHlwZSx9IGZyb20gXCIuLi9faW50ZXJuYWwvZW51bXNcIjtcbmltcG9ydCB7RW52aXJvbm1lbnR9IGZyb20gXCIuL2Vudmlyb25tZW50XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVldGluZ1R5cGUge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIC8vIHN0cmluZyBmb3JtYXR0ZWQgYXM6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3Byb3RvY29sLWJ1ZmZlcnMvZG9jcy9yZWZlcmVuY2UvamF2YS9jb20vZ29vZ2xlL3Byb3RvYnVmL0R1cmF0aW9uXG4gIC8vIHVzZSBoZWxwZXJzIGluIGR1cmF0aW9uLnRzIGZvciBoZWxwZXJzIG9yIHBhc3MgaW50byBtb21lbnQuXG4gIGR1cmF0aW9uOiBzdHJpbmc7XG4gIGNhbGVuZGFySWQ6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaGV4Q29sb3I6IHN0cmluZztcbiAgLy8gaHR0cHM6Ly92ZW5kYXN0YS5qaXJhLmNvbS93aWtpL3NwYWNlcy9CT09LTUUvcGFnZXMvMjI3ODM2MTU3L1Rlcm1pbm9sb2d5I01lZXRpbmctVHlwZS1TbHVnXG4gIG1lZXRpbmdUeXBlU2x1Zzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgbWVldGluZ1R5cGVTbHVnIGluc3RlYWRcbiAgICovXG4gIGJvb2tpbmdMaW5rPzogc3RyaW5nO1xuICBob3N0VXNlcklkczogc3RyaW5nW107XG5cbiAgLy8gcmVhZG9ubHkgZmllbGRzLiBoYXMgbm8gaW1wYWN0IHdoZW4gdXBkYXRpbmcuXG4gIC8vIFRoaXMgaXMgdGhlIGZ1bGwgdXJsIGEgcGVyc29uIGNvdWxkIG5hdmlnYXRlIHRvIGZvciBib29raW5nLiBNYXkgaW5jbHVkZSBtZXRhZGF0YSBxdWVyeSBwYXJhbXMuXG4gIGJvb2tpbmdVcmw6IHN0cmluZztcbiAgZm9ybTogTWVldGluZ1R5cGVGb3JtO1xuICBhdmFpbGFiaWxpdHlJbmNyZW1lbnQ/OiBudW1iZXI7XG4gIGJ1ZmZlckR1cmF0aW9uQWZ0ZXJNZWV0aW5nPzogbnVtYmVyO1xuICBidWZmZXJEdXJhdGlvbkJlZm9yZU1lZXRpbmc/OiBudW1iZXI7XG4gIG5vdGljZVRpbWU/OiBudW1iZXI7XG4gIGxvY2F0aW9uPzogc3RyaW5nO1xuICBsb2NhdGlvbkd1aWRlbGluZXM/OiBzdHJpbmc7XG4gIGVtYWlsU3ViamVjdD86IHN0cmluZztcbiAgZW1haWxEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xuICBDYWxlbmRhclR5cGU/OiBzdHJpbmc7XG4gIGhvc3RVc2VyczogSG9zdFVzZXJJbnRlcmZhY2VbXTtcbiAgdGVhbU5hbWU/OiBzdHJpbmc7XG4gIGlzVmlkZW9MaW5rRGlzYWJsZWQ/OiBib29sZWFuO1xuICBsb2NhdGlvblR5cGU/OiBNZWV0aW5nTG9jYXRpb25UeXBlO1xuICBtZWV0aW5nVHlwZT86IFRlYW1FdmVudE1lZXRpbmdUeXBlO1xuICBkYXRlUmFuZ2U/OiBFdmVudFR5cGVEYXRlUmFuZ2VJbnRlcmZhY2U7XG4gIGF0dGVuZGVlQ291bnQ/OiBudW1iZXI7XG4gIHJlZ2lzdHJhdGlvbkN1dG9mZj86IFJlZ2lzdHJhdGlvbkN1dE9mZkludGVyZmFjZTtcbiAgc2Vzc2lvblRpdGxlPzogc3RyaW5nO1xuICBob3N0T3JkZXJEZXRhaWxzPzpIb3N0T3JkZXJEZXRhaWxzSW50ZXJmYWNlW107XG4gIGlzRW1haWxSZXF1aXJlZD86IGJvb2xlYW47XG4gIGlzUGhvbmVOdW1iZXJSZXF1aXJlZD86IGJvb2xlYW47XG4gIG5vdGlmaWNhdGlvblR5cGU/Ok5vdGlmaWNhdGlvblR5cGU7XG59XG5cbmV4cG9ydCB0eXBlIE1lZXRpbmdUeXBlRm9ybUZpZWxkID0gUmVxdWlyZWQ8RmllbGRJbnRlcmZhY2U+O1xuZXhwb3J0IHR5cGUgTWVldGluZ1R5cGVGb3JtID0gUmVxdWlyZWQ8T21pdDxGb3JtSW50ZXJmYWNlLCBcImZpZWxkc1wiPj4gJiB7XG4gIGZpZWxkczogTWVldGluZ1R5cGVGb3JtRmllbGRbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBNZWV0aW5nVHlwZUZyb21BcGkocmVxOiB7XG4gIG1lZXRpbmdUeXBlQXBpOiBBcGlNZWV0aW5nVHlwZTtcbiAgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuICBjYWxlbmRhcklkOiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gIGNhbGVuZGFyU2x1Zz86IHN0cmluZztcbn0pOiBNZWV0aW5nVHlwZSB7XG4gIGxldCBib29raW5nVXJsID0gcmVxPy5tZWV0aW5nVHlwZUFwaT8uYm9va2luZ1VybCB8fCBcIlwiO1xuICBpZiAoYm9va2luZ1VybCA9PT0gXCJcIikge1xuICAgIGJvb2tpbmdVcmwgPSBnZXRCb29raW5nVXJsSW1wbGVtZW50YXRpb24oe1xuICAgICAgZW52aXJvbm1lbnQ6IHJlcS5lbnZpcm9ubWVudCxcbiAgICAgIGNhbGVuZGFySWQ6IHJlcS5jYWxlbmRhcklkLFxuICAgICAgbWVldGluZ1R5cGVTbHVnOlxuICAgICAgICByZXEubWVldGluZ1R5cGVBcGkubWVldGluZ1R5cGVTbHVnIHx8IHJlcS5tZWV0aW5nVHlwZUFwaS5pZCB8fCBcIlwiLFxuICAgICAgbWV0YWRhdGE6IHJlcS5tZXRhZGF0YSxcbiAgICAgIGNhbGVuZGFyU2x1ZzogcmVxLmNhbGVuZGFyU2x1ZyxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBib29raW5nVXJsID0gYWRkTWV0YWRhdGFUb0Jvb2tpbmdMaW5rKHtcbiAgICAgIGxpbms6IGJvb2tpbmdVcmwsXG4gICAgICBtZXRhZGF0YTogcmVxLm1ldGFkYXRhIHx8IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgZm9ybTogTWVldGluZ1R5cGVGb3JtID0ge1xuICAgIC4uLihyZXEubWVldGluZ1R5cGVBcGkuZm9ybSB8fCB7IGZpZWxkczogW10gfSksXG4gICAgZmllbGRzOiAocmVxLm1lZXRpbmdUeXBlQXBpLmZvcm0gJiYgcmVxLm1lZXRpbmdUeXBlQXBpLmZvcm0uZmllbGRzXG4gICAgICA/IHJlcS5tZWV0aW5nVHlwZUFwaS5mb3JtLmZpZWxkc1xuICAgICAgOiBbXVxuICAgICkubWFwKChmaWVsZCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIGlkOiBmaWVsZC5pZCB8fCBcIlwiLFxuICAgICAgICBsYWJlbDogZmllbGQubGFiZWwgfHwgXCJcIixcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSB8fCBGb3JtRmllbGRUeXBlLkZPUk1fRklFTERfVFlQRV9JTlZBTElELFxuICAgICAgICByZXF1aXJlZDogZmllbGQucmVxdWlyZWQgfHwgZmFsc2UsXG4gICAgICAgIG9wdGlvbnM6IGZpZWxkLm9wdGlvbnMgfHwgW10sXG4gICAgICB9O1xuICAgIH0pLFxuICB9O1xuICByZXR1cm4ge1xuICAgIGlkOiByZXEubWVldGluZ1R5cGVBcGkuaWQgfHwgXCJcIixcbiAgICBjYWxlbmRhcklkOiByZXEubWVldGluZ1R5cGVBcGkuY2FsZW5kYXJJZCB8fCBcIlwiLFxuICAgIG5hbWU6IHJlcS5tZWV0aW5nVHlwZUFwaS5uYW1lIHx8IFwiXCIsXG4gICAgZHVyYXRpb246IHJlcS5tZWV0aW5nVHlwZUFwaS5kdXJhdGlvbiB8fCBcIlwiLFxuICAgIGJvb2tpbmdVcmw6IGJvb2tpbmdVcmwsXG4gICAgYm9va2luZ0xpbms6IHJlcS5tZWV0aW5nVHlwZUFwaS5tZWV0aW5nVHlwZVNsdWcgfHwgXCJcIixcbiAgICBtZWV0aW5nVHlwZVNsdWc6IHJlcS5tZWV0aW5nVHlwZUFwaS5tZWV0aW5nVHlwZVNsdWcgfHwgXCJcIixcbiAgICBkZXNjcmlwdGlvbjogcmVxLm1lZXRpbmdUeXBlQXBpLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgaGV4Q29sb3I6IHJlcS5tZWV0aW5nVHlwZUFwaS5oZXhDb2xvciB8fCBcIlwiLFxuICAgIGZvcm06IGZvcm0sXG4gICAgaG9zdFVzZXJJZHM6IHJlcS5tZWV0aW5nVHlwZUFwaS5ob3N0VXNlcklkcyB8fCBbXSxcbiAgICBhdmFpbGFiaWxpdHlJbmNyZW1lbnQ6IHJlcS5tZWV0aW5nVHlwZUFwaS5hdmFpbGFiaWxpdHlJbmNyZW1lbnQgfHwgLTEsXG4gICAgYnVmZmVyRHVyYXRpb25BZnRlck1lZXRpbmc6XG4gICAgICByZXEubWVldGluZ1R5cGVBcGkuYnVmZmVyRHVyYXRpb25BZnRlck1lZXRpbmcgfHwgMCxcbiAgICBidWZmZXJEdXJhdGlvbkJlZm9yZU1lZXRpbmc6XG4gICAgICByZXEubWVldGluZ1R5cGVBcGkuYnVmZmVyRHVyYXRpb25CZWZvcmVNZWV0aW5nIHx8IDAsXG4gICAgbm90aWNlVGltZTogcmVxLm1lZXRpbmdUeXBlQXBpLm5vdGljZVRpbWUgfHwgMCxcbiAgICBsb2NhdGlvbjogcmVxLm1lZXRpbmdUeXBlQXBpLmxvY2F0aW9uIHx8IFwiXCIsXG4gICAgbG9jYXRpb25HdWlkZWxpbmVzOiByZXEubWVldGluZ1R5cGVBcGkubG9jYXRpb25HdWlkZWxpbmVzIHx8IFwiXCIsXG4gICAgZW1haWxTdWJqZWN0OiByZXEubWVldGluZ1R5cGVBcGkuZW1haWxTdWJqZWN0IHx8IFwiXCIsXG4gICAgZW1haWxEZXNjcmlwdGlvbjogcmVxLm1lZXRpbmdUeXBlQXBpLmVtYWlsRGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICBpc1Bpbm5lZDogcmVxLm1lZXRpbmdUeXBlQXBpLmlzUGlubmVkIHx8IGZhbHNlLFxuICAgIENhbGVuZGFyVHlwZTogcmVxLm1lZXRpbmdUeXBlQXBpLmNhbGVuZGFyVHlwZSB8fCBcIlwiLFxuICAgIGhvc3RVc2VyczogcmVxLm1lZXRpbmdUeXBlQXBpLmhvc3RVc2VycyB8fCBbXSxcbiAgICB0ZWFtTmFtZTogcmVxLm1lZXRpbmdUeXBlQXBpLnRlYW1OYW1lIHx8IFwiXCIsXG4gICAgaXNWaWRlb0xpbmtEaXNhYmxlZDogcmVxLm1lZXRpbmdUeXBlQXBpLmlzVmlkZW9MaW5rRGlzYWJsZWQgfHwgZmFsc2UsXG4gICAgbG9jYXRpb25UeXBlOiByZXEubWVldGluZ1R5cGVBcGkubG9jYXRpb25UeXBlIHx8IE1lZXRpbmdMb2NhdGlvblR5cGUuVklERU8sXG4gICAgbWVldGluZ1R5cGU6XG4gICAgICByZXEubWVldGluZ1R5cGVBcGkubWVldGluZ1R5cGUgfHwgVGVhbUV2ZW50TWVldGluZ1R5cGUuUk9VTkRfUk9CSU4sXG4gICAgZGF0ZVJhbmdlOiByZXEubWVldGluZ1R5cGVBcGkuZGF0ZVJhbmdlIHx8IHt9LFxuICAgIGF0dGVuZGVlQ291bnQ6IHJlcS5tZWV0aW5nVHlwZUFwaS5hdHRlbmRlZUNvdW50IHx8IDAsXG4gICAgcmVnaXN0cmF0aW9uQ3V0b2ZmOiByZXEubWVldGluZ1R5cGVBcGkucmVnaXN0cmF0aW9uQ3V0b2ZmIHx8IHVuZGVmaW5lZCxcbiAgICBzZXNzaW9uVGl0bGU6IHJlcS5tZWV0aW5nVHlwZUFwaS5zZXNzaW9uVGl0bGUgfHwgXCJcIixcbiAgICBob3N0T3JkZXJEZXRhaWxzOnJlcS5tZWV0aW5nVHlwZUFwaS5ob3N0T3JkZXJEZXRhaWxzIHx8IFtdLFxuICAgIGlzRW1haWxSZXF1aXJlZDogcmVxLm1lZXRpbmdUeXBlQXBpLmlzRW1haWxSZXF1aXJlZCB8fCBmYWxzZSxcbiAgICBpc1Bob25lTnVtYmVyUmVxdWlyZWQ6IHJlcS5tZWV0aW5nVHlwZUFwaS5pc1Bob25lTnVtYmVyUmVxdWlyZWQgfHwgZmFsc2UsXG4gICAgbm90aWZpY2F0aW9uVHlwZTpyZXEubWVldGluZ1R5cGVBcGkubm90aWZpY2F0aW9uVHlwZSB8fCBOb3RpZmljYXRpb25UeXBlLkVNQUlMLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVldGluZ1R5cGVUb0FwaShyZXE6IHtcbiAgbWVldGluZ1R5cGU6IFBhcnRpYWw8TWVldGluZ1R5cGU+O1xufSk6IEFwaU1lZXRpbmdUeXBlIHtcbiAgY29uc3QgbSA9IHJlcS5tZWV0aW5nVHlwZTtcbiAgaWYgKCFtKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgaWQ6IG0uaWQgfHwgdW5kZWZpbmVkLFxuICAgIG5hbWU6IG0ubmFtZSB8fCB1bmRlZmluZWQsXG4gICAgaGV4Q29sb3I6IG0uaGV4Q29sb3IgfHwgdW5kZWZpbmVkLFxuICAgIG1lZXRpbmdUeXBlU2x1ZzogbS5tZWV0aW5nVHlwZVNsdWcgfHwgbS5ib29raW5nTGluayB8fCB1bmRlZmluZWQsXG4gICAgY2FsZW5kYXJJZDogbS5jYWxlbmRhcklkIHx8IHVuZGVmaW5lZCxcbiAgICBkZXNjcmlwdGlvbjogbS5kZXNjcmlwdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgZHVyYXRpb246IG0uZHVyYXRpb24gPyBtLmR1cmF0aW9uIDogdW5kZWZpbmVkLFxuICAgIGZvcm06IG0uZm9ybSB8fCB1bmRlZmluZWQsXG4gICAgaG9zdFVzZXJJZHM6IG0uaG9zdFVzZXJJZHMgfHwgdW5kZWZpbmVkLFxuICAgIGF2YWlsYWJpbGl0eUluY3JlbWVudDogbS5hdmFpbGFiaWxpdHlJbmNyZW1lbnQgfHwgdW5kZWZpbmVkLFxuICAgIGJ1ZmZlckR1cmF0aW9uQWZ0ZXJNZWV0aW5nOiBtLmJ1ZmZlckR1cmF0aW9uQWZ0ZXJNZWV0aW5nIHx8IDAsXG4gICAgbm90aWNlVGltZTogbS5ub3RpY2VUaW1lIHx8IDAsXG4gICAgbG9jYXRpb246IG0ubG9jYXRpb24gfHwgdW5kZWZpbmVkLFxuICAgIGxvY2F0aW9uR3VpZGVsaW5lczogbS5sb2NhdGlvbkd1aWRlbGluZXMgfHwgdW5kZWZpbmVkLFxuICAgIGVtYWlsU3ViamVjdDogbS5lbWFpbFN1YmplY3QgfHwgdW5kZWZpbmVkLFxuICAgIGVtYWlsRGVzY3JpcHRpb246IG0uZW1haWxEZXNjcmlwdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgaXNQaW5uZWQ6IG0uaXNQaW5uZWQgfHwgdW5kZWZpbmVkLFxuICAgIGNhbGVuZGFyVHlwZTogbS5DYWxlbmRhclR5cGUgfHwgdW5kZWZpbmVkLFxuICAgIGhvc3RVc2VyczogbS5ob3N0VXNlcnMgfHwgdW5kZWZpbmVkLFxuICAgIHRlYW1OYW1lOiBtLnRlYW1OYW1lIHx8IHVuZGVmaW5lZCxcbiAgICBpc1ZpZGVvTGlua0Rpc2FibGVkOiBtLmlzVmlkZW9MaW5rRGlzYWJsZWQgfHwgZmFsc2UsXG4gICAgbG9jYXRpb25UeXBlOiBtLmxvY2F0aW9uVHlwZSB8fCBNZWV0aW5nTG9jYXRpb25UeXBlLlZJREVPLFxuICAgIGJ1ZmZlckR1cmF0aW9uQmVmb3JlTWVldGluZzogbS5idWZmZXJEdXJhdGlvbkJlZm9yZU1lZXRpbmcgfHwgMCxcbiAgICBtZWV0aW5nVHlwZTogbS5tZWV0aW5nVHlwZSB8fCBUZWFtRXZlbnRNZWV0aW5nVHlwZS5ST1VORF9ST0JJTixcbiAgICBkYXRlUmFuZ2U6IG0uZGF0ZVJhbmdlIHx8IHVuZGVmaW5lZCxcbiAgICBhdHRlbmRlZUNvdW50OiBtLmF0dGVuZGVlQ291bnQgfHwgMCxcbiAgICByZWdpc3RyYXRpb25DdXRvZmY6IG0ucmVnaXN0cmF0aW9uQ3V0b2ZmIHx8IHVuZGVmaW5lZCxcbiAgICBzZXNzaW9uVGl0bGU6IG0uc2Vzc2lvblRpdGxlIHx8IHVuZGVmaW5lZCxcbiAgICBob3N0T3JkZXJEZXRhaWxzOm0uaG9zdE9yZGVyRGV0YWlscyB8fCB1bmRlZmluZWQsXG4gICAgaXNFbWFpbFJlcXVpcmVkOm0uaXNFbWFpbFJlcXVpcmVkfHxmYWxzZSxcbiAgICBpc1Bob25lTnVtYmVyUmVxdWlyZWQ6bS5pc1Bob25lTnVtYmVyUmVxdWlyZWR8fGZhbHNlLFxuICAgIG5vdGlmaWNhdGlvblR5cGU6bS5ub3RpZmljYXRpb25UeXBlIHx8IE5vdGlmaWNhdGlvblR5cGUuRU1BSUwsXG4gIH07XG59XG4iXX0=
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvc2hhcmVkL21lZXRpbmctdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsMkJBQTJCLEdBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsR0FBRSxNQUFNLG9CQUFvQixDQUFDO0FBMEQvRyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FNbEM7SUFDQyxJQUFJLFVBQVUsR0FBRyxHQUFHLEVBQUUsY0FBYyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7SUFDdkQsSUFBSSxVQUFVLEtBQUssRUFBRSxFQUFFO1FBQ3JCLFVBQVUsR0FBRywyQkFBMkIsQ0FBQztZQUN2QyxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7WUFDNUIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVO1lBQzFCLGVBQWUsRUFDYixHQUFHLENBQUMsY0FBYyxDQUFDLGVBQWUsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFO1lBQ25FLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtZQUN0QixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7U0FDL0IsQ0FBQyxDQUFDO0tBQ0o7U0FBTTtRQUNMLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQztZQUNwQyxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO1NBQzdCLENBQUMsQ0FBQztLQUNKO0lBRUQsTUFBTSxJQUFJLEdBQW9CO1FBQzVCLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUM5QyxNQUFNLEVBQUUsQ0FBQyxHQUFH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VyxJQUFJLG9CQUFvQixDQUFDLFdBQVc7UUFDOUQsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksU0FBUztRQUNuQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDO1FBQ25DLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxTQUFTO1FBQ3JELFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLFNBQVM7UUFDekMsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLFNBQVM7UUFDaEQsZUFBZSxFQUFDLENBQUMsQ0FBQyxlQUFlLElBQUUsS0FBSztRQUN4QyxxQkFBcUIsRUFBQyxDQUFDLENBQUMscUJBQXFCLElBQUUsS0FBSztRQUNwRCxnQkFBZ0IsRUFBQyxDQUFDLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsS0FBSztRQUM3RCxlQUFlLEVBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBRSxLQUFLO1FBQ3hDLFdBQVcsRUFBQyxDQUFDLENBQUMsV0FBVyxJQUFFLFNBQVM7UUFDcEMsb0JBQW9CLEVBQUMsQ0FBQyxDQUFDLG9CQUFvQixJQUFFLENBQUM7S0FDL0MsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFdmVudFR5cGVEYXRlUmFuZ2VJbnRlcmZhY2UsXG4gIEZpZWxkSW50ZXJmYWNlLFxuICBGb3JtSW50ZXJmYWNlLFxuICBIb3N0T3JkZXJEZXRhaWxzSW50ZXJmYWNlLFxuICBIb3N0VXNlckludGVyZmFjZSxcbiAgTWVldGluZ1R5cGVJbnRlcmZhY2UgYXMgQXBpTWVldGluZ1R5cGUsXG4gIFJlZ2lzdHJhdGlvbkN1dE9mZkludGVyZmFjZSxcbn0gZnJvbSBcIi4uL19pbnRlcm5hbC9pbnRlcmZhY2VzXCI7XG5pbXBvcnQge2FkZE1ldGFkYXRhVG9Cb29raW5nTGluaywgZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uLH0gZnJvbSBcIi4uL2hvc3QvdXJsXCI7XG5pbXBvcnQge0Zvcm1GaWVsZFR5cGUsIE1lZXRpbmdMb2NhdGlvblR5cGUsIE5vdGlmaWNhdGlvblR5cGUsIFRlYW1FdmVudE1lZXRpbmdUeXBlLH0gZnJvbSBcIi4uL19pbnRlcm5hbC9lbnVtc1wiO1xuaW1wb3J0IHtFbnZpcm9ubWVudH0gZnJvbSBcIi4vZW52aXJvbm1lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNZWV0aW5nVHlwZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgLy8gc3RyaW5nIGZvcm1hdHRlZCBhczogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy9kb2NzL3JlZmVyZW5jZS9qYXZhL2NvbS9nb29nbGUvcHJvdG9idWYvRHVyYXRpb25cbiAgLy8gdXNlIGhlbHBlcnMgaW4gZHVyYXRpb24udHMgZm9yIGhlbHBlcnMgb3IgcGFzcyBpbnRvIG1vbWVudC5cbiAgZHVyYXRpb246IHN0cmluZztcbiAgY2FsZW5kYXJJZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBoZXhDb2xvcjogc3RyaW5nO1xuICAvLyBodHRwczovL3ZlbmRhc3RhLmppcmEuY29tL3dpa2kvc3BhY2VzL0JPT0tNRS9wYWdlcy8yMjc4MzYxNTcvVGVybWlub2xvZ3kjTWVldGluZy1UeXBlLVNsdWdcbiAgbWVldGluZ1R5cGVTbHVnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBtZWV0aW5nVHlwZVNsdWcgaW5zdGVhZFxuICAgKi9cbiAgYm9va2luZ0xpbms/OiBzdHJpbmc7XG4gIGhvc3RVc2VySWRzOiBzdHJpbmdbXTtcblxuICAvLyByZWFkb25seSBmaWVsZHMuIGhhcyBubyBpbXBhY3Qgd2hlbiB1cGRhdGluZy5cbiAgLy8gVGhpcyBpcyB0aGUgZnVsbCB1cmwgYSBwZXJzb24gY291bGQgbmF2aWdhdGUgdG8gZm9yIGJvb2tpbmcuIE1heSBpbmNsdWRlIG1ldGFkYXRhIHF1ZXJ5IHBhcmFtcy5cbiAgYm9va2luZ1VybDogc3RyaW5nO1xuICBmb3JtOiBNZWV0aW5nVHlwZUZvcm07XG4gIGF2YWlsYWJpbGl0eUluY3JlbWVudD86IG51bWJlcjtcbiAgYnVmZmVyRHVyYXRpb25BZnRlck1lZXRpbmc/OiBudW1iZXI7XG4gIGJ1ZmZlckR1cmF0aW9uQmVmb3JlTWVldGluZz86IG51bWJlcjtcbiAgbm90aWNlVGltZT86IG51bWJlcjtcbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIGxvY2F0aW9uR3VpZGVsaW5lcz86IHN0cmluZztcbiAgZW1haWxTdWJqZWN0Pzogc3RyaW5nO1xuICBlbWFpbERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpc1Bpbm5lZD86IGJvb2xlYW47XG4gIENhbGVuZGFyVHlwZT86IHN0cmluZztcbiAgaG9zdFVzZXJzOiBIb3N0VXNlckludGVyZmFjZVtdO1xuICB0ZWFtTmFtZT86IHN0cmluZztcbiAgaXNWaWRlb0xpbmtEaXNhYmxlZD86IGJvb2xlYW47XG4gIGxvY2F0aW9uVHlwZT86IE1lZXRpbmdMb2NhdGlvblR5cGU7XG4gIG1lZXRpbmdUeXBlPzogVGVhbUV2ZW50TWVldGluZ1R5cGU7XG4gIGRhdGVSYW5nZT86IEV2ZW50VHlwZURhdGVSYW5nZUludGVyZmFjZTtcbiAgYXR0ZW5kZWVDb3VudD86IG51bWJlcjtcbiAgcmVnaXN0cmF0aW9uQ3V0b2ZmPzogUmVnaXN0cmF0aW9uQ3V0T2ZmSW50ZXJmYWNlO1xuICBzZXNzaW9uVGl0bGU/OiBzdHJpbmc7XG4gIGhvc3RPcmRlckRldGFpbHM/Okhvc3RPcmRlckRldGFpbHNJbnRlcmZhY2VbXTtcbiAgaXNFbWFpbFJlcXVpcmVkPzogYm9vbGVhbjtcbiAgaXNQaG9uZU51bWJlclJlcXVpcmVkPzogYm9vbGVhbjtcbiAgbm90aWZpY2F0aW9uVHlwZT86Tm90aWZpY2F0aW9uVHlwZTtcbiAgcmVkaXJlY3RFbmFibGVkPzogYm9vbGVhbjtcbiAgcmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gIHJlZGlyZWN0RGVsYXlTZWNvbmRzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBNZWV0aW5nVHlwZUZvcm1GaWVsZCA9IFJlcXVpcmVkPEZpZWxkSW50ZXJmYWNlPjtcbmV4cG9ydCB0eXBlIE1lZXRpbmdUeXBlRm9ybSA9IFJlcXVpcmVkPE9taXQ8Rm9ybUludGVyZmFjZSwgXCJmaWVsZHNcIj4+ICYge1xuICBmaWVsZHM6IE1lZXRpbmdUeXBlRm9ybUZpZWxkW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gTWVldGluZ1R5cGVGcm9tQXBpKHJlcToge1xuICBtZWV0aW5nVHlwZUFwaTogQXBpTWVldGluZ1R5cGU7XG4gIGVudmlyb25tZW50OiBFbnZpcm9ubWVudDtcbiAgY2FsZW5kYXJJZDogc3RyaW5nO1xuICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICBjYWxlbmRhclNsdWc/OiBzdHJpbmc7XG59KTogTWVldGluZ1R5cGUge1xuICBsZXQgYm9va2luZ1VybCA9IHJlcT8ubWVldGluZ1R5cGVBcGk/LmJvb2tpbmdVcmwgfHwgXCJcIjtcbiAgaWYgKGJvb2tpbmdVcmwgPT09IFwiXCIpIHtcbiAgICBib29raW5nVXJsID0gZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgIGVudmlyb25tZW50OiByZXEuZW52aXJvbm1lbnQsXG4gICAgICBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCxcbiAgICAgIG1lZXRpbmdUeXBlU2x1ZzpcbiAgICAgICAgcmVxLm1lZXRpbmdUeXBlQXBpLm1lZXRpbmdUeXBlU2x1ZyB8fCByZXEubWVldGluZ1R5cGVBcGkuaWQgfHwgXCJcIixcbiAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgYm9va2luZ1VybCA9IGFkZE1ldGFkYXRhVG9Cb29raW5nTGluayh7XG4gICAgICBsaW5rOiBib29raW5nVXJsLFxuICAgICAgbWV0YWRhdGE6IHJlcS5tZXRhZGF0YSB8fCB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGZvcm06IE1lZXRpbmdUeXBlRm9ybSA9IHtcbiAgICAuLi4ocmVxLm1lZXRpbmdUeXBlQXBpLmZvcm0gfHwgeyBmaWVsZHM6IFtdIH0pLFxuICAgIGZpZWxkczogKHJlcS5tZWV0aW5nVHlwZUFwaS5mb3JtICYmIHJlcS5tZWV0aW5nVHlwZUFwaS5mb3JtLmZpZWxkc1xuICAgICAgPyByZXEubWVldGluZ1R5cGVBcGkuZm9ybS5maWVsZHNcbiAgICAgIDogW11cbiAgICApLm1hcCgoZmllbGQpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpZWxkLFxuICAgICAgICBpZDogZmllbGQuaWQgfHwgXCJcIixcbiAgICAgICAgbGFiZWw6IGZpZWxkLmxhYmVsIHx8IFwiXCIsXG4gICAgICAgIHR5cGU6IGZpZWxkLnR5cGUgfHwgRm9ybUZpZWxkVHlwZS5GT1JNX0ZJRUxEX1RZUEVfSU5WQUxJRCxcbiAgICAgICAgcmVxdWlyZWQ6IGZpZWxkLnJlcXVpcmVkIHx8IGZhbHNlLFxuICAgICAgICBvcHRpb25zOiBmaWVsZC5vcHRpb25zIHx8IFtdLFxuICAgICAgfTtcbiAgICB9KSxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBpZDogcmVxLm1lZXRpbmdUeXBlQXBpLmlkIHx8IFwiXCIsXG4gICAgY2FsZW5kYXJJZDogcmVxLm1lZXRpbmdUeXBlQXBpLmNhbGVuZGFySWQgfHwgXCJcIixcbiAgICBuYW1lOiByZXEubWVldGluZ1R5cGVBcGkubmFtZSB8fCBcIlwiLFxuICAgIGR1cmF0aW9uOiByZXEubWVldGluZ1R5cGVBcGkuZHVyYXRpb24gfHwgXCJcIixcbiAgICBib29raW5nVXJsOiBib29raW5nVXJsLFxuICAgIGJvb2tpbmdMaW5rOiByZXEubWVldGluZ1R5cGVBcGkubWVldGluZ1R5cGVTbHVnIHx8IFwiXCIsXG4gICAgbWVldGluZ1R5cGVTbHVnOiByZXEubWVldGluZ1R5cGVBcGkubWVldGluZ1R5cGVTbHVnIHx8IFwiXCIsXG4gICAgZGVzY3JpcHRpb246IHJlcS5tZWV0aW5nVHlwZUFwaS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgIGhleENvbG9yOiByZXEubWVldGluZ1R5cGVBcGkuaGV4Q29sb3IgfHwgXCJcIixcbiAgICBmb3JtOiBmb3JtLFxuICAgIGhvc3RVc2VySWRzOiByZXEubWVldGluZ1R5cGVBcGkuaG9zdFVzZXJJZHMgfHwgW10sXG4gICAgYXZhaWxhYmlsaXR5SW5jcmVtZW50OiByZXEubWVldGluZ1R5cGVBcGkuYXZhaWxhYmlsaXR5SW5jcmVtZW50IHx8IC0xLFxuICAgIGJ1ZmZlckR1cmF0aW9uQWZ0ZXJNZWV0aW5nOlxuICAgICAgcmVxLm1lZXRpbmdUeXBlQXBpLmJ1ZmZlckR1cmF0aW9uQWZ0ZXJNZWV0aW5nIHx8IDAsXG4gICAgYnVmZmVyRHVyYXRpb25CZWZvcmVNZWV0aW5nOlxuICAgICAgcmVxLm1lZXRpbmdUeXBlQXBpLmJ1ZmZlckR1cmF0aW9uQmVmb3JlTWVldGluZyB8fCAwLFxuICAgIG5vdGljZVRpbWU6IHJlcS5tZWV0aW5nVHlwZUFwaS5ub3RpY2VUaW1lIHx8IDAsXG4gICAgbG9jYXRpb246IHJlcS5tZWV0aW5nVHlwZUFwaS5sb2NhdGlvbiB8fCBcIlwiLFxuICAgIGxvY2F0aW9uR3VpZGVsaW5lczogcmVxLm1lZXRpbmdUeXBlQXBpLmxvY2F0aW9uR3VpZGVsaW5lcyB8fCBcIlwiLFxuICAgIGVtYWlsU3ViamVjdDogcmVxLm1lZXRpbmdUeXBlQXBpLmVtYWlsU3ViamVjdCB8fCBcIlwiLFxuICAgIGVtYWlsRGVzY3JpcHRpb246IHJlcS5tZWV0aW5nVHlwZUFwaS5lbWFpbERlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgaXNQaW5uZWQ6IHJlcS5tZWV0aW5nVHlwZUFwaS5pc1Bpbm5lZCB8fCBmYWxzZSxcbiAgICBDYWxlbmRhclR5cGU6IHJlcS5tZWV0aW5nVHlwZUFwaS5jYWxlbmRhclR5cGUgfHwgXCJcIixcbiAgICBob3N0VXNlcnM6IHJlcS5tZWV0aW5nVHlwZUFwaS5ob3N0VXNlcnMgfHwgW10sXG4gICAgdGVhbU5hbWU6IHJlcS5tZWV0aW5nVHlwZUFwaS50ZWFtTmFtZSB8fCBcIlwiLFxuICAgIGlzVmlkZW9MaW5rRGlzYWJsZWQ6IHJlcS5tZWV0aW5nVHlwZUFwaS5pc1ZpZGVvTGlua0Rpc2FibGVkIHx8IGZhbHNlLFxuICAgIGxvY2F0aW9uVHlwZTogcmVxLm1lZXRpbmdUeXBlQXBpLmxvY2F0aW9uVHlwZSB8fCBNZWV0aW5nTG9jYXRpb25UeXBlLlZJREVPLFxuICAgIG1lZXRpbmdUeXBlOlxuICAgICAgcmVxLm1lZXRpbmdUeXBlQXBpLm1lZXRpbmdUeXBlIHx8IFRlYW1FdmVudE1lZXRpbmdUeXBlLlJPVU5EX1JPQklOLFxuICAgIGRhdGVSYW5nZTogcmVxLm1lZXRpbmdUeXBlQXBpLmRhdGVSYW5nZSB8fCB7fSxcbiAgICBhdHRlbmRlZUNvdW50OiByZXEubWVldGluZ1R5cGVBcGkuYXR0ZW5kZWVDb3VudCB8fCAwLFxuICAgIHJlZ2lzdHJhdGlvbkN1dG9mZjogcmVxLm1lZXRpbmdUeXBlQXBpLnJlZ2lzdHJhdGlvbkN1dG9mZiB8fCB1bmRlZmluZWQsXG4gICAgc2Vzc2lvblRpdGxlOiByZXEubWVldGluZ1R5cGVBcGkuc2Vzc2lvblRpdGxlIHx8IFwiXCIsXG4gICAgaG9zdE9yZGVyRGV0YWlsczpyZXEubWVldGluZ1R5cGVBcGkuaG9zdE9yZGVyRGV0YWlscyB8fCBbXSxcbiAgICBpc0VtYWlsUmVxdWlyZWQ6IHJlcS5tZWV0aW5nVHlwZUFwaS5pc0VtYWlsUmVxdWlyZWQgfHwgZmFsc2UsXG4gICAgaXNQaG9uZU51bWJlclJlcXVpcmVkOiByZXEubWVldGluZ1R5cGVBcGkuaXNQaG9uZU51bWJlclJlcXVpcmVkIHx8IGZhbHNlLFxuICAgIG5vdGlmaWNhdGlvblR5cGU6cmVxLm1lZXRpbmdUeXBlQXBpLm5vdGlmaWNhdGlvblR5cGUgfHwgTm90aWZpY2F0aW9uVHlwZS5FTUFJTCxcbiAgICByZWRpcmVjdEVuYWJsZWQ6cmVxLm1lZXRpbmdUeXBlQXBpLnJlZGlyZWN0RW5hYmxlZCB8fCBmYWxzZSxcbiAgICByZWRpcmVjdFVybDogcmVxLm1lZXRpbmdUeXBlQXBpLnJlZGlyZWN0VXJsIHx8IFwiXCIsXG4gICAgcmVkaXJlY3REZWxheVNlY29uZHM6cmVxLm1lZXRpbmdUeXBlQXBpLnJlZGlyZWN0RGVsYXlTZWNvbmRzIHx8IDAsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNZWV0aW5nVHlwZVRvQXBpKHJlcToge1xuICBtZWV0aW5nVHlwZTogUGFydGlhbDxNZWV0aW5nVHlwZT47XG59KTogQXBpTWVldGluZ1R5cGUge1xuICBjb25zdCBtID0gcmVxLm1lZXRpbmdUeXBlO1xuICBpZiAoIW0pIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpZDogbS5pZCB8fCB1bmRlZmluZWQsXG4gICAgbmFtZTogbS5uYW1lIHx8IHVuZGVmaW5lZCxcbiAgICBoZXhDb2xvcjogbS5oZXhDb2xvciB8fCB1bmRlZmluZWQsXG4gICAgbWVldGluZ1R5cGVTbHVnOiBtLm1lZXRpbmdUeXBlU2x1ZyB8fCBtLmJvb2tpbmdMaW5rIHx8IHVuZGVmaW5lZCxcbiAgICBjYWxlbmRhcklkOiBtLmNhbGVuZGFySWQgfHwgdW5kZWZpbmVkLFxuICAgIGRlc2NyaXB0aW9uOiBtLmRlc2NyaXB0aW9uIHx8IHVuZGVmaW5lZCxcbiAgICBkdXJhdGlvbjogbS5kdXJhdGlvbiA/IG0uZHVyYXRpb24gOiB1bmRlZmluZWQsXG4gICAgZm9ybTogbS5mb3JtIHx8IHVuZGVmaW5lZCxcbiAgICBob3N0VXNlcklkczogbS5ob3N0VXNlcklkcyB8fCB1bmRlZmluZWQsXG4gICAgYXZhaWxhYmlsaXR5SW5jcmVtZW50OiBtLmF2YWlsYWJpbGl0eUluY3JlbWVudCB8fCB1bmRlZmluZWQsXG4gICAgYnVmZmVyRHVyYXRpb25BZnRlck1lZXRpbmc6IG0uYnVmZmVyRHVyYXRpb25BZnRlck1lZXRpbmcgfHwgMCxcbiAgICBub3RpY2VUaW1lOiBtLm5vdGljZVRpbWUgfHwgMCxcbiAgICBsb2NhdGlvbjogbS5sb2NhdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgbG9jYXRpb25HdWlkZWxpbmVzOiBtLmxvY2F0aW9uR3VpZGVsaW5lcyB8fCB1bmRlZmluZWQsXG4gICAgZW1haWxTdWJqZWN0OiBtLmVtYWlsU3ViamVjdCB8fCB1bmRlZmluZWQsXG4gICAgZW1haWxEZXNjcmlwdGlvbjogbS5lbWFpbERlc2NyaXB0aW9uIHx8IHVuZGVmaW5lZCxcbiAgICBpc1Bpbm5lZDogbS5pc1Bpbm5lZCB8fCB1bmRlZmluZWQsXG4gICAgY2FsZW5kYXJUeXBlOiBtLkNhbGVuZGFyVHlwZSB8fCB1bmRlZmluZWQsXG4gICAgaG9zdFVzZXJzOiBtLmhvc3RVc2VycyB8fCB1bmRlZmluZWQsXG4gICAgdGVhbU5hbWU6IG0udGVhbU5hbWUgfHwgdW5kZWZpbmVkLFxuICAgIGlzVmlkZW9MaW5rRGlzYWJsZWQ6IG0uaXNWaWRlb0xpbmtEaXNhYmxlZCB8fCBmYWxzZSxcbiAgICBsb2NhdGlvblR5cGU6IG0ubG9jYXRpb25UeXBlIHx8IE1lZXRpbmdMb2NhdGlvblR5cGUuVklERU8sXG4gICAgYnVmZmVyRHVyYXRpb25CZWZvcmVNZWV0aW5nOiBtLmJ1ZmZlckR1cmF0aW9uQmVmb3JlTWVldGluZyB8fCAwLFxuICAgIG1lZXRpbmdUeXBlOiBtLm1lZXRpbmdUeXBlIHx8IFRlYW1FdmVudE1lZXRpbmdUeXBlLlJPVU5EX1JPQklOLFxuICAgIGRhdGVSYW5nZTogbS5kYXRlUmFuZ2UgfHwgdW5kZWZpbmVkLFxuICAgIGF0dGVuZGVlQ291bnQ6IG0uYXR0ZW5kZWVDb3VudCB8fCAwLFxuICAgIHJlZ2lzdHJhdGlvbkN1dG9mZjogbS5yZWdpc3RyYXRpb25DdXRvZmYgfHwgdW5kZWZpbmVkLFxuICAgIHNlc3Npb25UaXRsZTogbS5zZXNzaW9uVGl0bGUgfHwgdW5kZWZpbmVkLFxuICAgIGhvc3RPcmRlckRldGFpbHM6bS5ob3N0T3JkZXJEZXRhaWxzIHx8IHVuZGVmaW5lZCxcbiAgICBpc0VtYWlsUmVxdWlyZWQ6bS5pc0VtYWlsUmVxdWlyZWR8fGZhbHNlLFxuICAgIGlzUGhvbmVOdW1iZXJSZXF1aXJlZDptLmlzUGhvbmVOdW1iZXJSZXF1aXJlZHx8ZmFsc2UsXG4gICAgbm90aWZpY2F0aW9uVHlwZTptLm5vdGlmaWNhdGlvblR5cGUgfHwgTm90aWZpY2F0aW9uVHlwZS5FTUFJTCxcbiAgICByZWRpcmVjdEVuYWJsZWQ6bS5yZWRpcmVjdEVuYWJsZWR8fGZhbHNlLFxuICAgIHJlZGlyZWN0VXJsOm0ucmVkaXJlY3RVcmx8fHVuZGVmaW5lZCxcbiAgICByZWRpcmVjdERlbGF5U2Vjb25kczptLnJlZGlyZWN0RGVsYXlTZWNvbmRzfHwwLFxuICB9O1xufVxuIl19
|