@tiba-spark/client-shared-lib 25.1.0-699 → 25.1.0-713

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.
@@ -91,13 +91,13 @@ export class NotificationsService extends BaseComponent {
91
91
  const analyticsPayload = { originatedFrom: this.analyticsService.getSource(NotificationsService?.displayName) };
92
92
  switch (eventDescription) {
93
93
  case PeripheralEquipmentError.LOST_TICKET:
94
- this.deviceService.onLostTicket(guid, parkId, parkName, readerID, deviceName, deviceId, handlingByUser, analyticsPayload)
94
+ this.deviceService.onLostTicket(guid, parkId, parkName, readerID, deviceName, deviceId, handlingByUser, eventDescription, analyticsPayload)
95
95
  .pipe(takeUntil(this.destroy$))
96
96
  .subscribe(() => {
97
97
  });
98
98
  break;
99
99
  case PeripheralEquipmentError.LRP_NOT_MATCH:
100
- this.deviceService.onLprMismatch(guid, parkId, parkName, readerID, deviceName, deviceId, alert.lprMatchCase, handlingByUser, analyticsPayload)
100
+ this.deviceService.onLprMismatch(guid, parkId, parkName, readerID, deviceName, deviceId, alert.lprMatchCase, handlingByUser, eventDescription, analyticsPayload)
101
101
  .pipe(takeUntil(this.destroy$))
102
102
  .subscribe(() => {
103
103
  });
@@ -165,4 +165,4 @@ export class NotificationsService extends BaseComponent {
165
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, decorators: [{
166
166
  type: Injectable
167
167
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.BaseDeviceService }, { type: i3.AppSettingsService }, { type: i3.BaseFacilityCommandsService }, { type: i4.Router }, { type: i5.AppConfigService }, { type: i6.RouteService }, { type: i7.AnalyticsService }, { type: i8.ZoneServiceProxy }]; } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNuQyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQWdCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUYsT0FBTyxFQUF3QywwQkFBMEIsRUFBbUIsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQVFoTixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7QUFJM0QsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7YUFFOUMsZ0JBQVcsR0FBRyx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FBQztJQUVuRSxZQUFvQixLQUFZLEVBQVUsYUFBZ0MsRUFBVSxrQkFBc0MsRUFBVSwyQkFBd0QsRUFDbEwsTUFBYyxFQUFVLFNBQTJCLEVBQVUsWUFBMEIsRUFBVSxnQkFBa0MsRUFBVSxnQkFBa0M7UUFDdkwsS0FBSyxFQUFFLENBQUM7UUFGVSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FB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VUFBVSxHQUFHLGdCQUFnQixDQUFDO1lBQ2hHLE9BQU8sWUFBWSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyx1QkFBdUIsSUFBSSxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO1FBQ3RILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxlQUFnQztRQUN4RixrRkFBa0Y7UUFDbEYseUVBQXlFO1FBQ3pFLElBQUksZUFBZSxDQUFDLHVCQUF1QixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUN4RSxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsdUJBQXVCLENBQUM7WUFDcEQsZUFBZSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO1lBQzlDLGVBQWUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7U0FDL0M7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDOytHQXpKVSxvQkFBb0I7bUhBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9iYXNlL2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IE1JTlVURVNfUEVSX0hPVVIsIFNZU1RFTV9BTEVSVF9WQUxVRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9nbG9iYWwtY29uc3RhbnRzJztcbmltcG9ydCB7IEFuYWx5dGljc1NvdXJjZUNvbXBvbmVudCwgVHJhY2VQYXlsb2FkIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hbmFseXRpY3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFsZXJ0RHRvLCBEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bywgRmFjaWxpdHlSZW1vdGVDb21tYW5kVHlwZXMsIE5vdGlmaWNhdGlvbkR0bywgTm90aWZpY2F0aW9uU2V2ZXJpdHksIE5vdGlmaWNhdGlvblR5cGUsIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvciB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IFpvbmVTZXJ2aWNlUHJveHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2VkZ2Utc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFwcFNldHRpbmdzU2VydmljZSwgQmFzZUZhY2lsaXR5Q29tbWFuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZURldmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlLWRldmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JvdXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zQ29uZmlnIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zU2VydmljZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuXG4gIHN0YXRpYyBkaXNwbGF5TmFtZSA9IEFuYWx5dGljc1NvdXJjZUNvbXBvbmVudC5Ob3RpZmljYXRpb25zU2VydmljZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZSwgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlOiBCYXNlRGV2aWNlU2VydmljZSwgcHJpdmF0ZSBhcHBTZXR0aW5nc1NlcnZpY2U6IEFwcFNldHRpbmdzU2VydmljZSwgcHJpdmF0ZSBiYXNlRmFjaWxpdHlDb21tYW5kc1NlcnZpY2U6IEJhc2VGYWNpbGl0eUNvbW1hbmRzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSwgcHJpdmF0ZSByb3V0ZVNlcnZpY2U6IFJvdXRlU2VydmljZSwgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLCBwcml2YXRlIHpvbmVTZXJ2aWNlUHJveHk6IFpvbmVTZXJ2aWNlUHJveHkpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBvcHVsYXRlTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25EdG9zOiBTdHJpbmdNYXA8Tm90aWZpY2F0aW9uRHRvW10+KTogUHJvbWlzZTxOb3RpZmljYXRpb25EdG9bXT4ge1xuICAgIC8vIFRPRE86IFdoeSB0aGUgc2VydmVyIG5vdCBmaWx0ZXIgdGhlIHBlcm1pdHRlZCBHdWlkcyA/P1xuICAgIGNvbnN0IGZhY2lsaXR5RGljdGlvbmFyeSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mYWNpbGl0eURpY3Rpb25hcnkpO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdID0gW107XG4gICAgY29uc3QgZ3VpZHMgPSBPYmplY3Qua2V5cyhub3RpZmljYXRpb25EdG9zKTtcblxuICAgIGZvciAoY29uc3QgZ3VpZCBvZiBndWlkcykge1xuICAgICAgaWYgKGZhY2lsaXR5RGljdGlvbmFyeVtndWlkXSkge1xuICAgICAgICBmb3IgKGNvbnN0IG5vdGlmaWNhdGlvbkR0byBvZiBub3RpZmljYXRpb25EdG9zW2d1aWRdKSB7XG4gICAgICAgICAgbm90aWZpY2F0aW9uRHRvLnRpbWVBZ29JblNlY29uZHMgPSB0aGlzLmdldFRpbWVBZ29JblNlY29uZHMobm90aWZpY2F0aW9uRHRvKTtcblxuICAgICAgICAgIHN3aXRjaCAobm90aWZpY2F0aW9uRHRvLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbjpcbiAgICAgICAgICAgICAgbm90aWZpY2F0aW9ucy5wdXNoKGF3YWl0IHRoaXMubWFwRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG9Ub05vdGlmaWNhdGlvbihub3RpZmljYXRpb25EdG8pKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5BbGVydDpcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGVydFR5cGVEZWZpbmVkKG5vdGlmaWNhdGlvbkR0by5hbGVydD8uZXZlbnREZXNjcmlwdGlvbikpIHtcbiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25EdG8uc2V2ZXJpdHkgPSB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5hbGVydE1hcHBpbmdbUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yW25vdGlmaWNhdGlvbkR0by5hbGVydC5ldmVudERlc2NyaXB0aW9uXV07XG4gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9ucy5wdXNoKG5vdGlmaWNhdGlvbkR0byk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub3RpZmljYXRpb25zLnNvcnQoKHByZXYsIG5leHQpID0+IG5leHQuY2xvdWRFdmVudERhdGVUaW1lLnZhbHVlT2YoKSAtIHByZXYuY2xvdWRFdmVudERhdGVUaW1lLnZhbHVlT2YoKSk7XG4gIH1cblxuICBwdWJsaWMgY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcobm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uRHRvW10pOiBOb3RpZmljYXRpb25zQ29uZmlnIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25zQ29uZmlnOiBOb3RpZmljYXRpb25zQ29uZmlnID0ge1xuICAgICAgbm90aWZpY2F0aW9ucyxcbiAgICAgIGJhZGdlVmFsdWU6IG5vdGlmaWNhdGlvbnMubGVuZ3RoLFxuICAgICAgYWdncmVnYXRlZE5vdGlmaWNhdGlvblNldmVyaXR5OiB0aGlzLmdldEFnZ3JlZ2F0ZWROb3RpZmljYXRpb25UeXBlKG5vdGlmaWNhdGlvbnMpLFxuICAgICAgZGlzcGxheUJhZGdlOiBub3RpZmljYXRpb25zLmxlbmd0aCA+IDAsXG4gICAgfTtcblxuICAgIHJldHVybiBub3RpZmljYXRpb25zQ29uZmlnO1xuICB9XG5cbiAgLy8gVGlja3MgZXZlcnkgbm90aWZpY2F0aW9uJ3MgdGltZSBlbGFwc2VkIGJ5IHRoZSB0aW1lciBpbnRlcnZhbFxuICBwdWJsaWMgdGlja05vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uc0NvbmZpZzogTm90aWZpY2F0aW9uc0NvbmZpZyk6IE5vdGlmaWNhdGlvbnNDb25maWcge1xuICAgIGNvbnN0IHRpY2tlZE5vdGlmaWNhdGlvbnMgPSB0aGlzLmV4Y2x1ZGVFeHBpcmVkTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zQ29uZmlnLm5vdGlmaWNhdGlvbnMubWFwKG5vdGlmaWNhdGlvbiA9PiB7XG4gICAgICBub3RpZmljYXRpb24udGltZUFnb0luU2Vjb25kcyArPSBNSU5VVEVTX1BFUl9IT1VSO1xuICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbjtcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gY2xvbmVEZWVwKHRoaXMuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcodGlja2VkTm90aWZpY2F0aW9ucykpO1xuICB9XG5cbiAgcHVibGljIHRyaWdnZXJBbGVydFRvYXN0RXZlbnQoYWxlcnQ6IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBpZiAoYWxlcnQucmVhZGVySUQgPT09IFNZU1RFTV9BTEVSVF9WQUxVRSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmtJZCA9IGFsZXJ0LnBhcmtJZDtcbiAgICBjb25zdCBtdWx0aVBhcmtQYXJlbnRJZCA9IGFsZXJ0Lm11bHRpUGFya1BhcmVudElkO1xuICAgIGNvbnN0IHBhcmtOYW1lID0gYWxlcnQucGFya05hbWU7XG4gICAgY29uc3QgZGV2aWNlSWQgPSBhbGVydC5kZXZpY2VJRDtcbiAgICBjb25zdCByZWFkZXJJRCA9IGFsZXJ0LnJlYWRlcklEO1xuICAgIGNvbnN0IGRldmljZU5hbWUgPSBhbGVydC5kZXZpY2VOYW1lO1xuICAgIGNvbnN0IGV2ZW50RGVzY3JpcHRpb24gPSBhbGVydC5ldmVudERlc2NyaXB0aW9uO1xuICAgIGNvbnN0IGhhbmRsaW5nQnlVc2VyID0gYWxlcnQuaGFuZGxpbmdCeVVzZXI7XG4gICAgY29uc3QgYW5hbHl0aWNzUGF5bG9hZDogVHJhY2VQYXlsb2FkID0geyBvcmlnaW5hdGVkRnJvbTogdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmdldFNvdXJjZShOb3RpZmljYXRpb25zU2VydmljZT8uZGlzcGxheU5hbWUpIH07XG5cbiAgICBzd2l0Y2ggKGV2ZW50RGVzY3JpcHRpb24pIHtcbiAgICAgIGNhc2UgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLkxPU1RfVElDS0VUOlxuICAgICAgICB0aGlzLmRldmljZVNlcnZpY2Uub25Mb3N0VGlja2V0KGd1aWQsIHBhcmtJZCwgcGFya05hbWUsIHJlYWRlcklELCBkZXZpY2VOYW1lLCBkZXZpY2VJZCwgaGFuZGxpbmdCeVVzZXIsIGFuYWx5dGljc1BheWxvYWQpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLkxSUF9OT1RfTUFUQ0g6XG4gICAgICAgIHRoaXMuZGV2aWNlU2VydmljZS5vbkxwck1pc21hdGNoKGd1aWQsIHBhcmtJZCwgcGFya05hbWUsIHJlYWRlcklELCBkZXZpY2VOYW1lLCBkZXZpY2VJZCwgYWxlcnQubHByTWF0Y2hDYXNlLCBoYW5kbGluZ0J5VXNlciwgYW5hbHl0aWNzUGF5bG9hZClcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc3QgdGliYUtleXMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUudGliYUtleXMpO1xuICAgICAgICBjb25zdCB0aWJhS2V5ID0gdGliYUtleXNbZ3VpZF07XG4gICAgICAgIGNvbnN0IHJvdXRlckxpbmsgPSB0aGlzLnJvdXRlU2VydmljZS5nZXRSb3V0ZXJMaW5rKHtcbiAgICAgICAgICBwYXJrSWQsXG4gICAgICAgICAgbXVsdGlQYXJrUGFyZW50SWQsXG4gICAgICAgICAgdGliYUtleSxcbiAgICAgICAgICBkZXZpY2VJZCxcbiAgICAgICAgICBkZWZhdWx0U2lkZWJhcjogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocm91dGVyTGluayk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyRHluYW1pY1ByaWNpbmdUb2FzdEV2ZW50KGR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOiBEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bykge1xuICAgIHRoaXMuYmFzZUZhY2lsaXR5Q29tbWFuZHNTZXJ2aWNlLnNlbmRDb21tYW5kKEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLlNldEFjdGl2ZVJhdGUsIGR5bmFtaWNQcmljaW5nQ29uZGl0aW9uKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0FsZXJ0VHlwZURlZmluZWQoZXZlbnREZXNjcmlwdGlvbjogUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvcltldmVudERlc2NyaXB0aW9uXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGdldFRpbWVBZ29JblNlY29uZHMgPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8pID0+XG4gICAgbW9tZW50LnV0YygpLmRpZmYobm90aWZpY2F0aW9uRHRvLmNsb3VkRXZlbnREYXRlVGltZSwgJ3NlY29uZHMnKTtcblxuICBwcml2YXRlIGdldEFnZ3JlZ2F0ZWROb3RpZmljYXRpb25UeXBlKG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdKTogTm90aWZpY2F0aW9uU2V2ZXJpdHkge1xuICAgIGlmIChub3RpZmljYXRpb25zPy5zb21lKGEgPT4gYS5zZXZlcml0eSA9PT0gTm90aWZpY2F0aW9uU2V2ZXJpdHkuQ3JpdGljYWwpKSB7XG4gICAgICByZXR1cm4gTm90aWZpY2F0aW9uU2V2ZXJpdHkuQ3JpdGljYWw7XG4gICAgfSBlbHNlIGlmIChub3RpZmljYXRpb25zPy5zb21lKGEgPT4gYS5zZXZlcml0eSA9PT0gTm90aWZpY2F0aW9uU2V2ZXJpdHkuSGlnaCkpIHtcbiAgICAgIHJldHVybiBOb3RpZmljYXRpb25TZXZlcml0eS5IaWdoO1xuICAgIH0gZWxzZSBpZiAobm90aWZpY2F0aW9ucz8uc29tZShhID0+IGEuc2V2ZXJpdHkgPT09IE5vdGlmaWNhdGlvblNldmVyaXR5Lk1lZGl1bSkpIHtcbiAgICAgIHJldHVybiBOb3RpZmljYXRpb25TZXZlcml0eS5NZWRpdW07XG4gICAgfSBlbHNlIGlmIChub3RpZmljYXRpb25zPy5zb21lKGEgPT4gYS5zZXZlcml0eSA9PT0gTm90aWZpY2F0aW9uU2V2ZXJpdHkuTG93KSkge1xuICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvblNldmVyaXR5LkxvdztcbiAgICB9IGVsc2UgaWYgKG5vdGlmaWNhdGlvbnM/LnNvbWUoYSA9PiBhLnNldmVyaXR5ID09PSBOb3RpZmljYXRpb25TZXZlcml0eS5JbmZvcm1hdGlvbikpIHtcbiAgICAgIHJldHVybiBOb3RpZmljYXRpb25TZXZlcml0eS5JbmZvcm1hdGlvbjtcbiAgICB9XG4gIH1cblxuICAvLyBGaWx0ZXIgb3V0IGV4cGlyZWQgbm90aWZpY2F0aW9ucyAoMTAgbWludXRlcyBwYXNzZWQpXG4gIHByaXZhdGUgZXhjbHVkZUV4cGlyZWROb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdKSB7XG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PiB7XG4gICAgICBjb25zdCBzZWNvbmRzQWdvID0gdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYWN0aXZlTm90aWZpY2F0aW9ucy5taW51dGVzQWdvICogTUlOVVRFU19QRVJfSE9VUjtcbiAgICAgIHJldHVybiBub3RpZmljYXRpb24udHlwZSA9PT0gTm90aWZpY2F0aW9uVHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbiB8fCBub3RpZmljYXRpb24udGltZUFnb0luU2Vjb25kcyA8IHNlY29uZHNBZ287XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1hcER5bmFtaWNQcmljaW5nQ29uZGl0aW9uRHRvVG9Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8pOiBQcm9taXNlPE5vdGlmaWNhdGlvbkR0bz4ge1xuICAgIC8vIGRldGVybWluZSB0aGUgcGFyayBhbmQgem9uZSBuYW1lcyBiYXNlZCBvbiB0aGUgY29uZGl0aW9uJ3MgQ291bnRlclR5cGUgKFpvbmVzKS5cbiAgICAvLyB0aGUgZGF0YSBpcyBub3Qgc2F2ZWQgaW4gdGhlIENsb3VkLCBzbyBpdCBuZWVkcyB0byBiZSBmZXRjaGVkIGxvY2FsbHkuXG4gICAgaWYgKG5vdGlmaWNhdGlvbkR0by5keW5hbWljUHJpY2luZ0NvbmRpdGlvbiAmJiAhbm90aWZpY2F0aW9uRHRvLnBhcmtOYW1lKSB7XG4gICAgICBjb25zdCBkcGMgPSBub3RpZmljYXRpb25EdG8uZHluYW1pY1ByaWNpbmdDb25kaXRpb247XG4gICAgICBub3RpZmljYXRpb25EdG8ucGFya05hbWUgPSBkcGMucGFya2luZ0xvdE5hbWU7XG4gICAgICBub3RpZmljYXRpb25EdG8ucGFya1pvbmVOYW1lID0gZHBjLnpvbmU/Lm5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvbkR0bztcbiAgfVxufVxuIl19
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNuQyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQWdCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUYsT0FBTyxFQUF3QywwQkFBMEIsRUFBbUIsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQVFoTixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7QUFJM0QsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7YUFFOUMsZ0JBQVcsR0FBRyx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FBQztJQUVuRSxZQUFvQixLQUFZLEVBQVUsYUFBZ0MsRUFBVSxrQkFBc0MsRUFBVSwyQkFBd0QsRUFDbEwsTUFBYyxFQUFVLFNBQTJCLEVBQVUsWUFBMEIsRUFBVSxnQkFBa0MsRUFBVSxnQkFBa0M7UUFDdkwsS0FBSyxFQUFFLENBQUM7UUFGVSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FB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UyxFQUFFLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDO1lBQ2hHLE9BQU8sWUFBWSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyx1QkFBdUIsSUFBSSxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO1FBQ3RILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxlQUFnQztRQUN4RixrRkFBa0Y7UUFDbEYseUVBQXlFO1FBQ3pFLElBQUksZUFBZSxDQUFDLHVCQUF1QixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUN4RSxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsdUJBQXVCLENBQUM7WUFDcEQsZUFBZSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO1lBQzlDLGVBQWUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7U0FDL0M7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDOytHQXpKVSxvQkFBb0I7bUhBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9iYXNlL2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IE1JTlVURVNfUEVSX0hPVVIsIFNZU1RFTV9BTEVSVF9WQUxVRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9nbG9iYWwtY29uc3RhbnRzJztcbmltcG9ydCB7IEFuYWx5dGljc1NvdXJjZUNvbXBvbmVudCwgVHJhY2VQYXlsb2FkIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hbmFseXRpY3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFsZXJ0RHRvLCBEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bywgRmFjaWxpdHlSZW1vdGVDb21tYW5kVHlwZXMsIE5vdGlmaWNhdGlvbkR0bywgTm90aWZpY2F0aW9uU2V2ZXJpdHksIE5vdGlmaWNhdGlvblR5cGUsIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvciB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IFpvbmVTZXJ2aWNlUHJveHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2VkZ2Utc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFwcFNldHRpbmdzU2VydmljZSwgQmFzZUZhY2lsaXR5Q29tbWFuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZURldmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlLWRldmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JvdXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zQ29uZmlnIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zU2VydmljZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuXG4gIHN0YXRpYyBkaXNwbGF5TmFtZSA9IEFuYWx5dGljc1NvdXJjZUNvbXBvbmVudC5Ob3RpZmljYXRpb25zU2VydmljZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZSwgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlOiBCYXNlRGV2aWNlU2VydmljZSwgcHJpdmF0ZSBhcHBTZXR0aW5nc1NlcnZpY2U6IEFwcFNldHRpbmdzU2VydmljZSwgcHJpdmF0ZSBiYXNlRmFjaWxpdHlDb21tYW5kc1NlcnZpY2U6IEJhc2VGYWNpbGl0eUNvbW1hbmRzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSwgcHJpdmF0ZSByb3V0ZVNlcnZpY2U6IFJvdXRlU2VydmljZSwgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLCBwcml2YXRlIHpvbmVTZXJ2aWNlUHJveHk6IFpvbmVTZXJ2aWNlUHJveHkpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBvcHVsYXRlTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25EdG9zOiBTdHJpbmdNYXA8Tm90aWZpY2F0aW9uRHRvW10+KTogUHJvbWlzZTxOb3RpZmljYXRpb25EdG9bXT4ge1xuICAgIC8vIFRPRE86IFdoeSB0aGUgc2VydmVyIG5vdCBmaWx0ZXIgdGhlIHBlcm1pdHRlZCBHdWlkcyA/P1xuICAgIGNvbnN0IGZhY2lsaXR5RGljdGlvbmFyeSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mYWNpbGl0eURpY3Rpb25hcnkpO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdID0gW107XG4gICAgY29uc3QgZ3VpZHMgPSBPYmplY3Qua2V5cyhub3RpZmljYXRpb25EdG9zKTtcblxuICAgIGZvciAoY29uc3QgZ3VpZCBvZiBndWlkcykge1xuICAgICAgaWYgKGZhY2lsaXR5RGljdGlvbmFyeVtndWlkXSkge1xuICAgICAgICBmb3IgKGNvbnN0IG5vdGlmaWNhdGlvbkR0byBvZiBub3RpZmljYXRpb25EdG9zW2d1aWRdKSB7XG4gICAgICAgICAgbm90aWZpY2F0aW9uRHRvLnRpbWVBZ29JblNlY29uZHMgPSB0aGlzLmdldFRpbWVBZ29JblNlY29uZHMobm90aWZpY2F0aW9uRHRvKTtcblxuICAgICAgICAgIHN3aXRjaCAobm90aWZpY2F0aW9uRHRvLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbjpcbiAgICAgICAgICAgICAgbm90aWZpY2F0aW9ucy5wdXNoKGF3YWl0IHRoaXMubWFwRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG9Ub05vdGlmaWNhdGlvbihub3RpZmljYXRpb25EdG8pKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5BbGVydDpcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGVydFR5cGVEZWZpbmVkKG5vdGlmaWNhdGlvbkR0by5hbGVydD8uZXZlbnREZXNjcmlwdGlvbikpIHtcbiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25EdG8uc2V2ZXJpdHkgPSB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5hbGVydE1hcHBpbmdbUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yW25vdGlmaWNhdGlvbkR0by5hbGVydC5ldmVudERlc2NyaXB0aW9uXV07XG4gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9ucy5wdXNoKG5vdGlmaWNhdGlvbkR0byk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub3RpZmljYXRpb25zLnNvcnQoKHByZXYsIG5leHQpID0+IG5leHQuY2xvdWRFdmVudERhdGVUaW1lLnZhbHVlT2YoKSAtIHByZXYuY2xvdWRFdmVudERhdGVUaW1lLnZhbHVlT2YoKSk7XG4gIH1cblxuICBwdWJsaWMgY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcobm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uRHRvW10pOiBOb3RpZmljYXRpb25zQ29uZmlnIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25zQ29uZmlnOiBOb3RpZmljYXRpb25zQ29uZmlnID0ge1xuICAgICAgbm90aWZpY2F0aW9ucyxcbiAgICAgIGJhZGdlVmFsdWU6IG5vdGlmaWNhdGlvbnMubGVuZ3RoLFxuICAgICAgYWdncmVnYXRlZE5vdGlmaWNhdGlvblNldmVyaXR5OiB0aGlzLmdldEFnZ3JlZ2F0ZWROb3RpZmljYXRpb25UeXBlKG5vdGlmaWNhdGlvbnMpLFxuICAgICAgZGlzcGxheUJhZGdlOiBub3RpZmljYXRpb25zLmxlbmd0aCA+IDAsXG4gICAgfTtcblxuICAgIHJldHVybiBub3RpZmljYXRpb25zQ29uZmlnO1xuICB9XG5cbiAgLy8gVGlja3MgZXZlcnkgbm90aWZpY2F0aW9uJ3MgdGltZSBlbGFwc2VkIGJ5IHRoZSB0aW1lciBpbnRlcnZhbFxuICBwdWJsaWMgdGlja05vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uc0NvbmZpZzogTm90aWZpY2F0aW9uc0NvbmZpZyk6IE5vdGlmaWNhdGlvbnNDb25maWcge1xuICAgIGNvbnN0IHRpY2tlZE5vdGlmaWNhdGlvbnMgPSB0aGlzLmV4Y2x1ZGVFeHBpcmVkTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zQ29uZmlnLm5vdGlmaWNhdGlvbnMubWFwKG5vdGlmaWNhdGlvbiA9PiB7XG4gICAgICBub3RpZmljYXRpb24udGltZUFnb0luU2Vjb25kcyArPSBNSU5VVEVTX1BFUl9IT1VSO1xuICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbjtcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gY2xvbmVEZWVwKHRoaXMuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcodGlja2VkTm90aWZpY2F0aW9ucykpO1xuICB9XG5cbiAgcHVibGljIHRyaWdnZXJBbGVydFRvYXN0RXZlbnQoYWxlcnQ6IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBpZiAoYWxlcnQucmVhZGVySUQgPT09IFNZU1RFTV9BTEVSVF9WQUxVRSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmtJZCA9IGFsZXJ0LnBhcmtJZDtcbiAgICBjb25zdCBtdWx0aVBhcmtQYXJlbnRJZCA9IGFsZXJ0Lm11bHRpUGFya1BhcmVudElkO1xuICAgIGNvbnN0IHBhcmtOYW1lID0gYWxlcnQucGFya05hbWU7XG4gICAgY29uc3QgZGV2aWNlSWQgPSBhbGVydC5kZXZpY2VJRDtcbiAgICBjb25zdCByZWFkZXJJRCA9IGFsZXJ0LnJlYWRlcklEO1xuICAgIGNvbnN0IGRldmljZU5hbWUgPSBhbGVydC5kZXZpY2VOYW1lO1xuICAgIGNvbnN0IGV2ZW50RGVzY3JpcHRpb24gPSBhbGVydC5ldmVudERlc2NyaXB0aW9uO1xuICAgIGNvbnN0IGhhbmRsaW5nQnlVc2VyID0gYWxlcnQuaGFuZGxpbmdCeVVzZXI7XG4gICAgY29uc3QgYW5hbHl0aWNzUGF5bG9hZDogVHJhY2VQYXlsb2FkID0geyBvcmlnaW5hdGVkRnJvbTogdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmdldFNvdXJjZShOb3RpZmljYXRpb25zU2VydmljZT8uZGlzcGxheU5hbWUpIH07XG5cbiAgICBzd2l0Y2ggKGV2ZW50RGVzY3JpcHRpb24pIHtcbiAgICAgIGNhc2UgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLkxPU1RfVElDS0VUOlxuICAgICAgICB0aGlzLmRldmljZVNlcnZpY2Uub25Mb3N0VGlja2V0KGd1aWQsIHBhcmtJZCwgcGFya05hbWUsIHJlYWRlcklELCBkZXZpY2VOYW1lLCBkZXZpY2VJZCwgaGFuZGxpbmdCeVVzZXIsIGV2ZW50RGVzY3JpcHRpb24sIGFuYWx5dGljc1BheWxvYWQpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLkxSUF9OT1RfTUFUQ0g6XG4gICAgICAgIHRoaXMuZGV2aWNlU2VydmljZS5vbkxwck1pc21hdGNoKGd1aWQsIHBhcmtJZCwgcGFya05hbWUsIHJlYWRlcklELCBkZXZpY2VOYW1lLCBkZXZpY2VJZCwgYWxlcnQubHByTWF0Y2hDYXNlLCBoYW5kbGluZ0J5VXNlciwgZXZlbnREZXNjcmlwdGlvbiwgYW5hbHl0aWNzUGF5bG9hZClcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc3QgdGliYUtleXMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUudGliYUtleXMpO1xuICAgICAgICBjb25zdCB0aWJhS2V5ID0gdGliYUtleXNbZ3VpZF07XG4gICAgICAgIGNvbnN0IHJvdXRlckxpbmsgPSB0aGlzLnJvdXRlU2VydmljZS5nZXRSb3V0ZXJMaW5rKHtcbiAgICAgICAgICBwYXJrSWQsXG4gICAgICAgICAgbXVsdGlQYXJrUGFyZW50SWQsXG4gICAgICAgICAgdGliYUtleSxcbiAgICAgICAgICBkZXZpY2VJZCxcbiAgICAgICAgICBkZWZhdWx0U2lkZWJhcjogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocm91dGVyTGluayk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyRHluYW1pY1ByaWNpbmdUb2FzdEV2ZW50KGR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOiBEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bykge1xuICAgIHRoaXMuYmFzZUZhY2lsaXR5Q29tbWFuZHNTZXJ2aWNlLnNlbmRDb21tYW5kKEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLlNldEFjdGl2ZVJhdGUsIGR5bmFtaWNQcmljaW5nQ29uZGl0aW9uKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0FsZXJ0VHlwZURlZmluZWQoZXZlbnREZXNjcmlwdGlvbjogUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvcltldmVudERlc2NyaXB0aW9uXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGdldFRpbWVBZ29JblNlY29uZHMgPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8pID0+XG4gICAgbW9tZW50LnV0YygpLmRpZmYobm90aWZpY2F0aW9uRHRvLmNsb3VkRXZlbnREYXRlVGltZSwgJ3NlY29uZHMnKTtcblxuICBwcml2YXRlIGdldEFnZ3JlZ2F0ZWROb3RpZmljYXRpb25UeXBlKG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdKTogTm90aWZpY2F0aW9uU2V2ZXJpdHkge1xuICAgIGlmIChub3RpZmljYXRpb25zPy5zb21lKGEgPT4gYS5zZXZlcml0eSA9PT0gTm90aWZpY2F0aW9uU2V2ZXJpdHkuQ3JpdGljYWwpKSB7XG4gICAgICByZXR1cm4gTm90aWZpY2F0aW9uU2V2ZXJpdHkuQ3JpdGljYWw7XG4gICAgfSBlbHNlIGlmIChub3RpZmljYXRpb25zPy5zb21lKGEgPT4gYS5zZXZlcml0eSA9PT0gTm90aWZpY2F0aW9uU2V2ZXJpdHkuSGlnaCkpIHtcbiAgICAgIHJldHVybiBOb3RpZmljYXRpb25TZXZlcml0eS5IaWdoO1xuICAgIH0gZWxzZSBpZiAobm90aWZpY2F0aW9ucz8uc29tZShhID0+IGEuc2V2ZXJpdHkgPT09IE5vdGlmaWNhdGlvblNldmVyaXR5Lk1lZGl1bSkpIHtcbiAgICAgIHJldHVybiBOb3RpZmljYXRpb25TZXZlcml0eS5NZWRpdW07XG4gICAgfSBlbHNlIGlmIChub3RpZmljYXRpb25zPy5zb21lKGEgPT4gYS5zZXZlcml0eSA9PT0gTm90aWZpY2F0aW9uU2V2ZXJpdHkuTG93KSkge1xuICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvblNldmVyaXR5LkxvdztcbiAgICB9IGVsc2UgaWYgKG5vdGlmaWNhdGlvbnM/LnNvbWUoYSA9PiBhLnNldmVyaXR5ID09PSBOb3RpZmljYXRpb25TZXZlcml0eS5JbmZvcm1hdGlvbikpIHtcbiAgICAgIHJldHVybiBOb3RpZmljYXRpb25TZXZlcml0eS5JbmZvcm1hdGlvbjtcbiAgICB9XG4gIH1cblxuICAvLyBGaWx0ZXIgb3V0IGV4cGlyZWQgbm90aWZpY2F0aW9ucyAoMTAgbWludXRlcyBwYXNzZWQpXG4gIHByaXZhdGUgZXhjbHVkZUV4cGlyZWROb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdKSB7XG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PiB7XG4gICAgICBjb25zdCBzZWNvbmRzQWdvID0gdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYWN0aXZlTm90aWZpY2F0aW9ucy5taW51dGVzQWdvICogTUlOVVRFU19QRVJfSE9VUjtcbiAgICAgIHJldHVybiBub3RpZmljYXRpb24udHlwZSA9PT0gTm90aWZpY2F0aW9uVHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbiB8fCBub3RpZmljYXRpb24udGltZUFnb0luU2Vjb25kcyA8IHNlY29uZHNBZ287XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1hcER5bmFtaWNQcmljaW5nQ29uZGl0aW9uRHRvVG9Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8pOiBQcm9taXNlPE5vdGlmaWNhdGlvbkR0bz4ge1xuICAgIC8vIGRldGVybWluZSB0aGUgcGFyayBhbmQgem9uZSBuYW1lcyBiYXNlZCBvbiB0aGUgY29uZGl0aW9uJ3MgQ291bnRlclR5cGUgKFpvbmVzKS5cbiAgICAvLyB0aGUgZGF0YSBpcyBub3Qgc2F2ZWQgaW4gdGhlIENsb3VkLCBzbyBpdCBuZWVkcyB0byBiZSBmZXRjaGVkIGxvY2FsbHkuXG4gICAgaWYgKG5vdGlmaWNhdGlvbkR0by5keW5hbWljUHJpY2luZ0NvbmRpdGlvbiAmJiAhbm90aWZpY2F0aW9uRHRvLnBhcmtOYW1lKSB7XG4gICAgICBjb25zdCBkcGMgPSBub3RpZmljYXRpb25EdG8uZHluYW1pY1ByaWNpbmdDb25kaXRpb247XG4gICAgICBub3RpZmljYXRpb25EdG8ucGFya05hbWUgPSBkcGMucGFya2luZ0xvdE5hbWU7XG4gICAgICBub3RpZmljYXRpb25EdG8ucGFya1pvbmVOYW1lID0gZHBjLnpvbmU/Lm5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvbkR0bztcbiAgfVxufVxuIl19
@@ -103,6 +103,14 @@ let NotificationsState = class NotificationsState {
103
103
  }
104
104
  }
105
105
  onHandleNotificationAction(ctx, { notificationDto, guid }) {
106
+ if (notificationDto.dynamicPricingCondition?.handledByUserId > 0) {
107
+ this.handleNotificationForClosing(ctx, notificationDto, guid);
108
+ }
109
+ else {
110
+ this.processNotificationUpdate(ctx, notificationDto, guid);
111
+ }
112
+ }
113
+ processNotificationUpdate(ctx, notificationDto, guid) {
106
114
  const notifications = { ...ctx.getState().config }.notifications;
107
115
  const notificationPK = this.notificationPK(notificationDto, guid);
108
116
  // Update the notification with the handle user - and save in state
@@ -114,6 +122,8 @@ let NotificationsState = class NotificationsState {
114
122
  case NotificationType.Alert:
115
123
  existNotificationDto = notifications.find(notification => this.pkMatches(notification, notificationPK) &&
116
124
  this.stateMatches(notification.alert, notificationDto.alert.eventState));
125
+ this.closeDialogById(`lpr-mismatch-modal-${notificationPK}`);
126
+ this.closeDialogById(`lost-ticket-modal-${notificationPK}`);
117
127
  break;
118
128
  default:
119
129
  console.log("unsupported notification type");
@@ -126,7 +136,7 @@ let NotificationsState = class NotificationsState {
126
136
  });
127
137
  }
128
138
  // Close critical alert modal
129
- this.closeNotificationsDialogById(`notification-modal-${notificationPK}`);
139
+ this.closeDialogById(`notification-modal-${notificationPK}`);
130
140
  }
131
141
  openCriticalAlertDialog(alert, guid) {
132
142
  const alertTypeName = this.translateService.instant(PeripheralEquipmentError[alert.eventDescription]);
@@ -215,7 +225,7 @@ let NotificationsState = class NotificationsState {
215
225
  });
216
226
  }
217
227
  }
218
- closeNotificationsDialogById(dialogId) {
228
+ closeDialogById(dialogId) {
219
229
  const openDialogs = this.modalService.getOpenDialogs();
220
230
  const dialog = openDialogs.find(dialog => dialog.id === dialogId);
221
231
  if (dialog) {
@@ -237,8 +247,10 @@ let NotificationsState = class NotificationsState {
237
247
  notificationsMap,
238
248
  config: this.notificationsService.convertNotificationsToNotificationsConfig(filteredNotifications),
239
249
  });
240
- // Close critical alert modal
241
- this.closeNotificationsDialogById(`notification-modal-${alertPK}`);
250
+ // Close relevent open modals
251
+ this.closeDialogById(`notification-modal-${alertPK}`);
252
+ this.closeDialogById(`lpr-mismatch-modal-${alertPK}`);
253
+ this.closeDialogById(`lost-ticket-modal-${alertPK}`);
242
254
  }
243
255
  }
244
256
  handleNotificationForClosing(ctx, notification, guid) {
@@ -256,8 +268,10 @@ let NotificationsState = class NotificationsState {
256
268
  notificationsMap,
257
269
  config: this.notificationsService.convertNotificationsToNotificationsConfig(filteredNotifications),
258
270
  });
259
- // Close critical alert modal
260
- this.closeNotificationsDialogById(`notification-modal-${notificationPK}`);
271
+ // Close relevent open modals
272
+ this.closeDialogById(`notification-modal-${notificationPK}`);
273
+ this.closeDialogById(`lpr-mismatch-modal-${notificationPK}`);
274
+ this.closeDialogById(`lost-ticket-modal-${notificationPK}`);
261
275
  }
262
276
  }
263
277
  async showRateAutomaticSwitchToastMessage(notification) {
@@ -498,4 +512,4 @@ export { NotificationsState };
498
512
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsState, decorators: [{
499
513
  type: Injectable
500
514
  }], ctorParameters: function () { return [{ type: i1.ModalService }, { type: i2.TranslateService }, { type: i3.Store }, { type: i4.NotificationServiceProxy }, { type: i5.AlertNotificationService }, { type: i6.NotificationsService }, { type: i7.CommandNotificationService }, { type: i8.BaseFacilityCommandsService }, { type: i9.FacilityService }, { type: i10.ZoneServiceProxy }, { type: i10.RateServiceProxy }, { type: i11.AppConfigService }]; }, propDecorators: { onUpdateUserAlertsPreferencesAction: [], onLoadNotificationsAction: [], onClearNotificationsAction: [], onSetConfigAction: [], onHandleNotificationForClosing: [], onNotificationChangeAction: [], onHandleNotificationAction: [] } });
501
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvbW9kdWxlcy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFFbkgsT0FBTyxFQUFFLDhCQUE4QixFQUE2Qix1QkFBdUIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ3BMLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1GQUFtRixDQUFDO0FBRWpJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3RJLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBeUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSwyQkFBMkIsRUFBRSwwQkFB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d0JBQXdCLENBQUM7b0VBV2hDO0FBR0Q7SUFEQyxNQUFNLENBQUMsNEJBQTRCLENBQUM7MkRBS3BDO0FBR0Q7SUFEQyxNQUFNLENBQUMsNEJBQTRCLENBQUM7d0VBR3BDO0FBR0s7SUFETCxNQUFNLENBQUMsd0JBQXdCLENBQUM7b0VBZWhDO0FBR0Q7SUFEQyxNQUFNLENBQUMsd0JBQXdCLENBQUM7b0VBK0JoQztBQXJHTTtJQUROLFFBQVEsRUFBRTtzQ0FHVjtBQXBCVSxrQkFBa0I7SUFiOUIsS0FBSyxDQUFxQjtRQUN6QixJQUFJLEVBQUUsZUFBZTtRQUNyQixRQUFRLEVBQUU7WUFDUixNQUFNLEVBQUU7Z0JBQ04sYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLDhCQUE4QixFQUFFLG9CQUFvQixDQUFDLEdBQUc7Z0JBQ3hELFVBQVUsRUFBRSxDQUFDO2dCQUNiLFlBQVksRUFBRSxLQUFLO2FBQ3BCO1lBQ0QsZ0JBQWdCLEVBQUUsRUFBRTtTQUNyQjtLQUNGLENBQUM7R0FFVyxrQkFBa0IsQ0EwZjlCO1NBMWZZLGtCQUFrQjs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVO3dkQXdCVCxtQ0FBbUMsTUFVbkMseUJBQXlCLE1BY3pCLDBCQUEwQixNQWExQixpQkFBaUIsTUFPakIsOEJBQThCLE1BS3hCLDBCQUEwQixNQWlCaEMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2xvdWRDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jbG91ZC1jb25maXJtLWRpYWxvZy9jbG91ZC1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxlcnROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vYWxlcnQtbm90aWZpY2F0aW9uL2FsZXJ0LW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1hbmROb3RpZmljYXRpb25Cb3JkZXJDbGFzcywgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZywgQ29tbWFuZE5vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tYW5kTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ2xhc3MsIE5vdGlmaWNhdGlvbkhQb3NpdGlvbnMsIE5vdGlmaWNhdGlvblZQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24tY29uZmlnJztcbmltcG9ydCB7IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgVkVSU0lPTl85XzJfMCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy92ZXJzaW9uLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBEZXZpY2VUeXBlc0FsZXJ0c01hcHBpbmcgfSBmcm9tICcuLi8uLi9lbnVtcy9hbGVydHMtZGV2aWNlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBBcHBUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvYXBwLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBDbG91ZENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jbG91ZC1jb25maXJtLWRpYWxvZy1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBbGVydER0bywgQWxlcnRQcmVmZXJlbmNlc1NldHRpbmdzRHRvLCBBbGVydHNEZXZpY2VUeXBlLCBBcHBNb2R1bGUsIERldmljZVR5cGUsIER5bmFtaWNQcmljaW5nVHJpZ2dlckFjdGlvbiwgRmFjaWxpdHlSZW1vdGVDb21tYW5kVHlwZXMsIEhhbmRsaW5nQWxlcnREdG8sIEhhbmRsaW5nRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG8sIE5vdGlmaWNhdGlvbkR0bywgTm90aWZpY2F0aW9uU2VydmljZVByb3h5LCBOb3RpZmljYXRpb25TZXZlcml0eSwgTm90aWZpY2F0aW9uVHlwZSwgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLCBQZXJtaXNzaW9uVHlwZSwgU2V0dGluZ3NDYXRlZ29yeSwgU3BhcmtTZXR0aW5nc0R0byB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IFJhdGVTZXJ2aWNlUHJveHksIFpvbmVTZXJ2aWNlUHJveHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2VkZ2Utc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEJhc2VGYWNpbGl0eUNvbW1hbmRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOdW1iZXJNYXAgfSBmcm9tICcuLi8uLi91dGlscy9sYW5nLnV0aWwnO1xuaW1wb3J0IHsgaXNWZXJzaW9uR3JlYXRlclRoYW5FcXVhbCB9IGZyb20gJy4uLy4uL3V0aWxzL3N1cHBvcnQtdmVyc2lvbi51dGlsJztcbmltcG9ydCB7IFNlc3Npb25TdGF0ZSB9IGZyb20gJy4uL2F1dGgvc2Vzc2lvbi5zdGF0ZSc7XG5pbXBvcnQgeyBGYWNpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi9mYWNpbGl0eSc7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vZmFjaWxpdHkvZmFjaWxpdHkuc3RhdGUnO1xuaW1wb3J0IHsgUGFya01hbmFnZXJTdGF0ZSB9IGZyb20gJy4uL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGUnO1xuaW1wb3J0IHsgUmF0ZVN0YXRlIH0gZnJvbSAnLi4vcmF0ZS9yYXRlLnN0YXRlJztcbmltcG9ydCB7IFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQgeyBVcGRhdGVVc2VyU2V0dGluZ3NBY3Rpb24gfSBmcm9tICcuLi91c2VyLXNldHRpbmdzL3VzZXItc2V0dGluZ3MuYWN0aW9ucyc7XG5pbXBvcnQge1xuICBDbGVhck5vdGlmaWNhdGlvbnNBY3Rpb24sIEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbiwgSGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZywgTG9hZE5vdGlmaWNhdGlvbnNBY3Rpb24sXG4gIE5vdGlmaWNhdGlvbkNoYW5nZUFjdGlvbixcbiAgU2V0Tm90aWZpY2F0aW9uc0NvbmZpZ0FjdGlvbiwgVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uXG59IGZyb20gJy4vbm90aWZpY2F0aW9ucy5hY3Rpb25zJztcbmltcG9ydCB7IEFsZXJ0c1ByZWZlcmVuY2VzTWFwLCBBbGVydFR5cGVQcmVmZXJlbmNlc01hcCwgRmFjaWxpdHlQcmVmZXJlbmNlc01hcCwgTm90aWZpY2F0aW9uc0NvbmZpZyB9IGZyb20gJy4vbm90aWZpY2F0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbnMuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uc01vZGVsIHtcbiAgY29uZmlnOiBOb3RpZmljYXRpb25zQ29uZmlnO1xuICBub3RpZmljYXRpb25zTWFwOiBOdW1iZXJNYXA8bnVtYmVyPjtcbn1cblxuQFN0YXRlPE5vdGlmaWNhdGlvbnNNb2RlbD4oe1xuICBuYW1lOiAnbm90aWZpY2F0aW9ucycsXG4gIGRlZmF1bHRzOiB7XG4gICAgY29uZmlnOiB7XG4gICAgICBub3RpZmljYXRpb25zOiBbXSxcbiAgICAgIGFnZ3JlZ2F0ZWROb3RpZmljYXRpb25TZXZlcml0eTogTm90aWZpY2F0aW9uU2V2ZXJpdHkuTG93LFxuICAgICAgYmFkZ2VWYWx1ZTogMCxcbiAgICAgIGRpc3BsYXlCYWRnZTogZmFsc2UsXG4gICAgfSxcbiAgICBub3RpZmljYXRpb25zTWFwOiB7fSxcbiAgfSxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uc1N0YXRlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2VQcm94eTogTm90aWZpY2F0aW9uU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlOiBBbGVydE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zU2VydmljZTogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tYW5kTm90aWZpY2F0aW9uU2VydmljZTogQ29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYWNpbGl0eUNvbW1hbmRzU2VydmljZTogQmFzZUZhY2lsaXR5Q29tbWFuZHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmFjaWxpdHlTZXJ2aWNlOiBGYWNpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b25lU2VydmljZVByb3h5OiBab25lU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgcmF0ZVNlcnZpY2VQcm94eTogUmF0ZVNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UpIHtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBjb25maWcoc3RhdGU6IE5vdGlmaWNhdGlvbnNNb2RlbCk6IE5vdGlmaWNhdGlvbnNDb25maWcge1xuICAgIHJldHVybiBzdGF0ZS5jb25maWc7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZVVzZXJBbGVydHNQcmVmZXJlbmNlc0FjdGlvbilcbiAgb25VcGRhdGVVc2VyQWxlcnRzUHJlZmVyZW5jZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgYWN0aW9uOiBVcGRhdGVVc2VyQWxlcnRzUHJlZmVyZW5jZXNBY3Rpb24pIHtcbiAgICBjb25zdCBzZXR0aW5nOiBTcGFya1NldHRpbmdzRHRvID0gbmV3IFNwYXJrU2V0dGluZ3NEdG8oe1xuICAgICAgY2F0ZWdvcnk6IFNldHRpbmdzQ2F0ZWdvcnkuQWxlcnRzUHJlZmVyZW5jZXMsXG4gICAgICBzZXR0aW5nc0pzb246IEpTT04uc3RyaW5naWZ5KGFjdGlvbi51c2VyTm90aWZpY2F0aW9uc1ByZWZlcmVuY2VzKSxcbiAgICB9KTtcblxuICAgIGN0eC5kaXNwYXRjaChuZXcgVXBkYXRlVXNlclNldHRpbmdzQWN0aW9uKHNldHRpbmcpKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZE5vdGlmaWNhdGlvbnNBY3Rpb24pXG4gIG9uTG9hZE5vdGlmaWNhdGlvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgeyBtaW51dGVzQWdvIH06IExvYWROb3RpZmljYXRpb25zQWN0aW9uKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyQgPSB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2VQcm94eS5nZXRBbGxOb3RpZmljYXRpb25zKG1pbnV0ZXNBZ28pO1xuXG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMkLnBpcGUodGFwKGFzeW5jIG5vdGlmaWNhdGlvbnMgPT4ge1xuICAgICAgY29uc3QgcG9wdWxhdGVOb3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25EdG9bXSA9IGF3YWl0IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UucG9wdWxhdGVOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnMuZGF0YSk7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25zQ29uZmlnOiBOb3RpZmljYXRpb25zQ29uZmlnID0gdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5jb252ZXJ0Tm90aWZpY2F0aW9uc1RvTm90aWZpY2F0aW9uc0NvbmZpZyhwb3B1bGF0ZU5vdGlmaWNhdGlvbnMpO1xuXG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGNvbmZpZzogbm90aWZpY2F0aW9uc0NvbmZpZyxcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJOb3RpZmljYXRpb25zQWN0aW9uKVxuICBvbkNsZWFyTm90aWZpY2F0aW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBhY3Rpb246IENsZWFyTm90aWZpY2F0aW9uc0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICBub3RpZmljYXRpb25zOiBbXSxcbiAgICAgICAgYWdncmVnYXRlZE5vdGlmaWNhdGlvblNldmVyaXR5OiBOb3RpZmljYXRpb25TZXZlcml0eS5Mb3csXG4gICAgICAgIGJhZGdlVmFsdWU6IDAsXG4gICAgICAgIGRpc3BsYXlCYWRnZTogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbm90aWZpY2F0aW9uc01hcDoge30sXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFNldE5vdGlmaWNhdGlvbnNDb25maWdBY3Rpb24pXG4gIG9uU2V0Q29uZmlnQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIGFjdGlvbjogU2V0Tm90aWZpY2F0aW9uc0NvbmZpZ0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGNvbmZpZzogYWN0aW9uLm5vdGlmaWNhdGlvbnNDb25maWcsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKEhhbmRsZU5vdGlmaWNhdGlvbkZvckNsb3NpbmcpXG4gIG9uSGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZyhjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCB7IG5vdGlmaWNhdGlvbiwgZ3VpZCB9OiBIYW5kbGVOb3RpZmljYXRpb25Gb3JDbG9zaW5nKSB7XG4gICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Gb3JDbG9zaW5nKGN0eCwgbm90aWZpY2F0aW9uLCBndWlkKTtcbiAgfVxuXG4gIEBBY3Rpb24oTm90aWZpY2F0aW9uQ2hhbmdlQWN0aW9uKVxuICBhc3luYyBvbk5vdGlmaWNhdGlvbkNoYW5nZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCB7IG5vdGlmaWNhdGlvbiwgZ3VpZCB9OiBOb3RpZmljYXRpb25DaGFuZ2VBY3Rpb24pIHtcbiAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuQWxlcnQ6XG4gICAgICAgIHRoaXMub25BbGVydENoYW5nZShjdHgsIG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuRHluYW1pY1ByaWNpbmdDb25kaXRpb246XG4gICAgICAgIHRoaXMub25EeWFubWljUHJpY2luZ0NvbmRpdGlvbkNoYW5nZShjdHgsIG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmxvZyhcInVuc3VwcG9ydGVkIG5vdGlmaWNhdGlvbiB0eXBlXCIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbilcbiAgb25IYW5kbGVOb3RpZmljYXRpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgeyBub3RpZmljYXRpb25EdG8sIGd1aWQgfTogSGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHsgLi4uY3R4LmdldFN0YXRlKCkuY29uZmlnIH0ubm90aWZpY2F0aW9ucztcbiAgICBjb25zdCBub3RpZmljYXRpb25QSyA9IHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uRHRvLCBndWlkKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgbm90aWZpY2F0aW9uIHdpdGggdGhlIGhhbmRsZSB1c2VyIC0gYW5kIHNhdmUgaW4gc3RhdGVcbiAgICBsZXQgZXhpc3ROb3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bztcbiAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbkR0by50eXBlKSB7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuRHluYW1pY1ByaWNpbmdDb25kaXRpb246XG4gICAgICAgIGV4aXN0Tm90aWZpY2F0aW9uRHRvID0gbm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbiA9PiB0aGlzLnBrTWF0Y2hlcyhub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvblBLKSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuQWxlcnQ6XG4gICAgICAgIGV4aXN0Tm90aWZpY2F0aW9uRHRvID0gbm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbiA9PiB0aGlzLnBrTWF0Y2hlcyhub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvblBLKSAmJlxuICAgICAgICAgIHRoaXMuc3RhdGVNYXRjaGVzKG5vdGlmaWNhdGlvbi5hbGVydCwgbm90aWZpY2F0aW9uRHRvLmFsZXJ0LmV2ZW50U3RhdGUpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChleGlzdE5vdGlmaWNhdGlvbkR0bykge1xuICAgICAgZXhpc3ROb3RpZmljYXRpb25EdG8uaGFuZGxpbmdCeVVzZXIgPSBub3RpZmljYXRpb25EdG8uaGFuZGxpbmdCeVVzZXI7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGNvbmZpZzogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5jb252ZXJ0Tm90aWZpY2F0aW9uc1RvTm90aWZpY2F0aW9uc0NvbmZpZyhub3RpZmljYXRpb25zKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENsb3NlIGNyaXRpY2FsIGFsZXJ0IG1vZGFsXG4gICAgdGhpcy5jbG9zZU5vdGlmaWNhdGlvbnNEaWFsb2dCeUlkKGBub3RpZmljYXRpb24tbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNyaXRpY2FsQWxlcnREaWFsb2coYWxlcnQ6IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhbGVydFR5cGVOYW1lID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yW2FsZXJ0LmV2ZW50RGVzY3JpcHRpb25dKTtcbiAgICBjb25zdCBjbG91ZENvbmZpcm1EaWFsb2dEYXRhOiBDbG91ZENvbmZpcm1EaWFsb2dEYXRhID0ge1xuICAgICAgY29uZmlybU1lc3NhZ2VzOiBbdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyaXRpY2FsX2FsZXJ0X21lc3NhZ2UsIHtcbiAgICAgICAgYWxlcnRUeXBlTmFtZVxuICAgICAgfSldLFxuICAgICAgY29uZmlybVRpdGxlOiBhbGVydFR5cGVOYW1lLFxuICAgICAgb2tUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24ueWVzKSxcbiAgICAgIGNhbmNlbFRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5jYW5jZWwpLFxuICAgICAgZGV2aWNlOiB7XG4gICAgICAgIGNvbW1JZDogYWxlcnQucmVhZGVySUQudG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogYWxlcnQuZGV2aWNlTmFtZVxuICAgICAgfSxcbiAgICAgIHBhcmtOYW1lOiBhbGVydC5wYXJrTmFtZSxcbiAgICAgIHpvbmVOYW1lOiBhbGVydC5wYXJrWm9uZU5hbWUsXG4gICAgICBub3RpZmljYXRpb25TZXZlcml0eTogTm90aWZpY2F0aW9uU2V2ZXJpdHkuQ3JpdGljYWwsXG4gICAgICBub3RpZmljYXRpb25TZXZlcml0eUludmVydDogdHJ1ZVxuICAgIH07XG5cbiAgICBjb25zdCBhbGVydFBLID0gdGhpcy5hbGVydFBLKGFsZXJ0LCBndWlkKTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuPGJvb2xlYW4+KENsb3VkQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgcGFuZWxDbGFzczogJ3RiLWNyaXRpY2FsLW1vZGFsJyxcbiAgICAgIGRhdGE6IGNsb3VkQ29uZmlybURpYWxvZ0RhdGEsXG4gICAgICBpZDogYG5vdGlmaWNhdGlvbi1tb2RhbC0ke2FsZXJ0UEt9YCxcbiAgICAgIGVuYWJsZWRNaW5pbWl6ZWQ6IHRydWUsXG4gICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmZvID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUudXNlckluZm8pO1xuICAgICAgICBjb25zdCBoYW5kbGVBbGVydDogSGFuZGxpbmdBbGVydER0byA9IG5ldyBIYW5kbGluZ0FsZXJ0RHRvKHtcbiAgICAgICAgICBndWlkOiBndWlkLFxuICAgICAgICAgIHBhcmtJZDogYWxlcnQucGFya0lkLFxuICAgICAgICAgIHBhcmtOYW1lOiBhbGVydC5wYXJrTmFtZSxcbiAgICAgICAgICBkZXZpY2VJZDogYWxlcnQuZGV2aWNlSUQsXG4gICAgICAgICAgZXZlbnREZXNjcmlwdGlvbjogYWxlcnQuZXZlbnREZXNjcmlwdGlvbixcbiAgICAgICAgICB1c2VyRnVsbE5hbWU6IHVzZXJJbmZvLmRpc3BsYXlOYW1lLFxuICAgICAgICAgIGlkOiBhbGVydC5pZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZVByb3h5LmhhbmRsZUFsZXJ0Tm90aWZpY2F0aW9uKGhhbmRsZUFsZXJ0KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLnRyaWdnZXJBbGVydFRvYXN0RXZlbnQocmVzLmRhdGEgfHwgYWxlcnQsIGd1aWQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uTm90aWZpY2F0aW9uRGlhbG9nKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjbG91ZENvbmZpcm1EaWFsb2dEYXRhOiBDbG91ZENvbmZpcm1EaWFsb2dEYXRhID0ge1xuICAgICAgY29uZmlybU1lc3NhZ2VzOiBbdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmR5bmFtaWNfcHJpY2luZ19hbGVydF9tZXNzYWdlKV0sXG4gICAgICBjb25maXJtVGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5keW5hbWljX3ByaWNpbmdfYWxlcnRfdGl0bGUpLFxuICAgICAgY29uZmlybVN1YlRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZHluYW1pY19wcmljaW5nX2FsZXJ0X3N1Yl90aXRsZSwgeyBjb25kaXRpb25OYW1lOiBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uY29uZGl0aW9uTmFtZSB9KSxcbiAgICAgIG9rVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnllcyksXG4gICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uY2FuY2VsKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbjxib29sZWFuPihDbG91ZENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHBhbmVsQ2xhc3M6ICd0Yi1keW5hbWljLXByaWNpbmctY29uZGl0aW9uLW1vZGFsJyxcbiAgICAgIGRhdGE6IGNsb3VkQ29uZmlybURpYWxvZ0RhdGEsXG4gICAgICBpZDogYG5vdGlmaWNhdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWAsXG4gICAgICBlbmFibGVkTWluaW1pemVkOiB0cnVlLFxuICAgIH0pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBjb25zdCB1c2VySW5mbyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2Vzc2lvblN0YXRlLnVzZXJJbmZvKTtcbiAgICAgICAgY29uc3QgaGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bzogSGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0byA9IG5ldyBIYW5kbGluZ0R5bmFtaWNQcmljaW5nQ29uZGl0aW9uRHRvKHtcbiAgICAgICAgICBjbG91ZFBhcmtJZDogbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmNsb3VkUGFya0lkLFxuICAgICAgICAgIHVzZXJGdWxsTmFtZTogdXNlckluZm8uZGlzcGxheU5hbWUsXG4gICAgICAgICAgaWQ6IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5pZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZVByb3h5LmhhbmRsZUR5bmFtaWNQcmljaW5nQ29uZGl0aW9uTm90aWZpY2F0aW9uKGhhbmRsaW5nRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG8pLnN1YnNjcmliZShhc3luYyByZXMgPT4ge1xuICAgICAgICAgIGNvbnN0IGRwYyA9IHJlcy5kYXRhIHx8IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbjtcbiAgICAgICAgICBjb25zdCByYXRlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yYXRlU2VydmljZVByb3h5LmdldFJhdGVCeUlkKGRwYy5yYXRlSWQsIGRwYy5ndWlkKSk7XG4gICAgICAgICAgZHBjLnJhdGVOYW1lID0gcmF0ZT8uZGF0YT8ubmFtZTtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLnRyaWdnZXJEeW5hbWljUHJpY2luZ1RvYXN0RXZlbnQocmVzLmRhdGEgfHwgbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlBbGVydChjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHRoaXMuYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlLmRpc3BsYXlBbGVydChhbGVydCk7XG4gICAgaWYgKG5vdGlmaWNhdGlvbikge1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uc01hcCA9IHsgLi4uY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9uc01hcCB9O1xuICAgICAgY29uc3QgYWxlcnRQSyA9IHRoaXMuYWxlcnRQSyhhbGVydCwgZ3VpZCk7XG4gICAgICBub3RpZmljYXRpb25zTWFwW2FsZXJ0UEtdID0gbm90aWZpY2F0aW9uLnRvYXN0SWQ7XG5cbiAgICAgIG5vdGlmaWNhdGlvbi5vblRhcC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UudHJpZ2dlckFsZXJ0VG9hc3RFdmVudChhbGVydCwgZ3VpZCk7XG4gICAgICB9KTtcblxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zTWFwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZU5vdGlmaWNhdGlvbnNEaWFsb2dCeUlkKGRpYWxvZ0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBvcGVuRGlhbG9ncyA9IHRoaXMubW9kYWxTZXJ2aWNlLmdldE9wZW5EaWFsb2dzKCk7XG4gICAgY29uc3QgZGlhbG9nID0gb3BlbkRpYWxvZ3MuZmluZChkaWFsb2cgPT4gZGlhbG9nLmlkID09PSBkaWFsb2dJZCk7XG5cbiAgICBpZiAoZGlhbG9nKSB7XG4gICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFsZXJ0Rm9yQ2xvc2luZyhjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBhbGVydER0bzogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLmNvbmZpZyB9Lm5vdGlmaWNhdGlvbnM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uc01hcCA9IHsgLi4uY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9uc01hcCB9O1xuICAgIGNvbnN0IGFsZXJ0UEsgPSB0aGlzLmFsZXJ0UEsoYWxlcnREdG8sIGd1aWQpO1xuXG4gICAgLy8gV2hldGhlciB3ZSB3YW50IHRvIGNsb3NlIG9yIGhhdmUgYSBkdXBsaWNhdGUgYWxlcnRcbiAgICBjb25zdCBhbGVydEV4aXN0cyA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT5cbiAgICAgIHRoaXMucGtNYXRjaGVzKG5vdGlmaWNhdGlvbiwgYWxlcnRQSykgJiYgdGhpcy5zdGF0ZU1hdGNoZXMobm90aWZpY2F0aW9uLmFsZXJ0LCBhbGVydER0by5ldmVudFN0YXRlKVxuICAgICk7XG4gICAgaWYgKCFhbGVydER0by5ldmVudFN0YXRlIHx8IGFsZXJ0RXhpc3RzKSB7XG4gICAgICBjb25zdCB0b2FzdElkID0gbm90aWZpY2F0aW9uc01hcFthbGVydFBLXTtcbiAgICAgIHRoaXMuYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlLmNsZWFyVG9hc3RzKHRvYXN0SWQpO1xuICAgICAgZGVsZXRlIG5vdGlmaWNhdGlvbnNNYXBbYWxlcnRQS107XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkTm90aWZpY2F0aW9ucyA9IG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PiAhKHRoaXMuYWxlcnRQSyhub3RpZmljYXRpb24uYWxlcnQsIG5vdGlmaWNhdGlvbi5ndWlkKSA9PT0gYWxlcnRQSykpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zTWFwLFxuICAgICAgICBjb25maWc6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcoZmlsdGVyZWROb3RpZmljYXRpb25zKSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDbG9zZSBjcml0aWNhbCBhbGVydCBtb2RhbFxuICAgICAgdGhpcy5jbG9zZU5vdGlmaWNhdGlvbnNEaWFsb2dCeUlkKGBub3RpZmljYXRpb24tbW9kYWwtJHthbGVydFBLfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZyhjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHsgLi4uY3R4LmdldFN0YXRlKCkuY29uZmlnIH0ubm90aWZpY2F0aW9ucztcbiAgICBjb25zdCBub3RpZmljYXRpb25zTWFwID0geyAuLi5jdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zTWFwIH07XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG5cbiAgICAvLyBXaGV0aGVyIHdlIHdhbnQgdG8gY2xvc2Ugb3IgaGF2ZSBhIGR1cGxpY2F0ZSBhbGVydFxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbkV4aXN0cyA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT4gdGhpcy5wa01hdGNoZXMobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25QSykpO1xuICAgIGlmIChub3RpZmljYXRpb25FeGlzdHMpIHtcbiAgICAgIGNvbnN0IHRvYXN0SWQgPSBub3RpZmljYXRpb25zTWFwW25vdGlmaWNhdGlvblBLXTtcbiAgICAgIHRoaXMuYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlLmNsZWFyVG9hc3RzKHRvYXN0SWQpO1xuICAgICAgZGVsZXRlIG5vdGlmaWNhdGlvbnNNYXBbbm90aWZpY2F0aW9uUEtdO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmZpbHRlcihub3RpZmljYXRpb24gPT5cbiAgICAgICAgISh0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLmd1aWQpID09PSBub3RpZmljYXRpb25QSykpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zTWFwLFxuICAgICAgICBjb25maWc6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcoZmlsdGVyZWROb3RpZmljYXRpb25zKSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDbG9zZSBjcml0aWNhbCBhbGVydCBtb2RhbFxuICAgICAgdGhpcy5jbG9zZU5vdGlmaWNhdGlvbnNEaWFsb2dCeUlkKGBub3RpZmljYXRpb24tbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dSYXRlQXV0b21hdGljU3dpdGNoVG9hc3RNZXNzYWdlKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvKSB7XG4gICAgY29uc3QgZHBjID0gbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uO1xuICAgIGNvbnN0IHJhdGUgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJhdGVTZXJ2aWNlUHJveHkuZ2V0UmF0ZUJ5SWQoZHBjLnJhdGVJZCwgZHBjLmd1aWQpKTtcbiAgICBkcGMucmF0ZU5hbWUgPSByYXRlPy5kYXRhPy5uYW1lO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5mYWNpbGl0eUNvbW1hbmRzU2VydmljZS5nZXRDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnTWVzc2FnZXMoRmFjaWxpdHlSZW1vdGVDb21tYW5kVHlwZXMuU2V0QWN0aXZlUmF0ZSwgbnVsbCwgZHBjKTtcbiAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBtZXNzYWdlcyxcbiAgICAgIGNvbW1hbmQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5mYWNpbGl0eV9yZW1vdGVfY29tbWFuZF9zZXRfYWN0aXZlX3JhdGUpLFxuICAgICAgaFBvc2l0aW9uOiBOb3RpZmljYXRpb25IUG9zaXRpb25zLlJpZ2h0LFxuICAgICAgdlBvc2l0aW9uOiBOb3RpZmljYXRpb25WUG9zaXRpb25zLkJvdHRvbSxcbiAgICAgIGR1cmF0aW9uOiA3ICogT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICBjbGFzczogQ29tbWFuZE5vdGlmaWNhdGlvbkJvcmRlckNsYXNzLlN1Y2Nlc3MsXG4gICAgICB0eXBlOiBDb21tYW5kTm90aWZpY2F0aW9uVHlwZS5TdWNjZXNzXG4gICAgfTtcblxuICAgIHRoaXMuY29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvdyhjb25maWcsIENvbW1hbmROb3RpZmljYXRpb25Db21wb25lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaG93UmF0ZUZhbGxlbkJhY2tUb0RlZmF1bHRSYXRlVG9hc3RNZXNzYWdlKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvKSB7XG4gICAgY29uc3QgZHBjID0gbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uO1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNoYW5nZV90aGVfcmF0ZV90byk7XG4gICAgY29uc3Qgc3ViVGl0bGUgPSBgJHtkcGMucGFya2luZ0xvdE5hbWV9JHtkcGMuem9uZT8ubmFtZSA/ICcgfCAnICsgZHBjLnpvbmU/Lm5hbWUgOiAnJ31gO1xuICAgIGNvbnN0IGR5bmFtaWNQcmljaW5nTmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5keW5hbWljX3ByaWNpbmcpO1xuICAgIGNvbnN0IGJvZHkgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24ucmV0dXJuX3RvX2RlZmF1bHRfdmFsdWUsIHsgbmFtZTogZHluYW1pY1ByaWNpbmdOYW1lIH0pO1xuICAgIGNvbnN0IGNvbmZpZzogQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZyA9IHtcbiAgICAgIG1lc3NhZ2VzOiBbe1xuICAgICAgICB2YWx1ZTogdGl0bGUsXG4gICAgICAgIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy50aXRsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBzdWJUaXRsZSxcbiAgICAgICAgY2xhc3M6IE5vdGlmaWNhdGlvbkNsYXNzLnN1YlRpdGxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IGJvZHksXG4gICAgICAgIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5ib2R5LFxuICAgICAgfV0sXG4gICAgICBjb21tYW5kOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZmFjaWxpdHlfcmVtb3RlX2NvbW1hbmRfc2V0X2FjdGl2ZV9yYXRlKSxcbiAgICAgIGhQb3NpdGlvbjogTm90aWZpY2F0aW9uSFBvc2l0aW9ucy5SaWdodCxcbiAgICAgIHZQb3NpdGlvbjogTm90aWZpY2F0aW9uVlBvc2l0aW9ucy5Cb3R0b20sXG4gICAgICBkdXJhdGlvbjogNyAqIE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTLFxuICAgICAgY2xhc3M6IENvbW1hbmROb3RpZmljYXRpb25Cb3JkZXJDbGFzcy5TdWNjZXNzLFxuICAgICAgdHlwZTogQ29tbWFuZE5vdGlmaWNhdGlvblR5cGUuU3VjY2Vzc1xuICAgIH07XG5cbiAgICB0aGlzLmNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLnNob3coY29uZmlnLCBDb21tYW5kTm90aWZpY2F0aW9uQ29tcG9uZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbGVydEVuYWJsZWRGb3JVc2VyKGFsZXJ0OiBBbGVydER0bywgZ3VpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IGlzQWxlcnRFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVzZXJTZXR0aW5ncyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2Vzc2lvblN0YXRlLm1hcHBlZFVzZXJTZXR0aW5ncyk7XG4gICAgY29uc3QgdXNlckFsZXJ0c1ByZWZlcmVuY2VzOiBBbGVydFByZWZlcmVuY2VzU2V0dGluZ3NEdG8gPSB1c2VyU2V0dGluZ3MuZ2V0KFNldHRpbmdzQ2F0ZWdvcnkuQWxlcnRzUHJlZmVyZW5jZXMpO1xuXG4gICAgLy8gSWYgdGhlcmUgaXMgbm8gdXNlckFsZXJ0c1ByZWZlcmVuY2VzIHdlIGRvbid0IGZpbHRlciBhdCBhbGxcbiAgICBpZiAoISF1c2VyQWxlcnRzUHJlZmVyZW5jZXMpIHtcbiAgICAgIC8vIElmIHRoZSB1c2VyIGVuYWJsZWQgdGhlIG5vdGlmaWNhdGlvbnNcbiAgICAgIC8vIEVsc2UgdGhlIHVzZXIgZGlzYWJsZWQgYWxsIHRoZSBub3RpZmljYXRpb25zXG4gICAgICBpZiAodXNlckFsZXJ0c1ByZWZlcmVuY2VzLmlzRW5hYmxlZCkge1xuICAgICAgICBjb25zdCBzcGFya1ZlcnNpb24gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KCh7IHNtYXJ0cGFyazogeyB2ZXJzaW9ucyB9IH0pID0+IHZlcnNpb25zW2d1aWRdKTtcbiAgICAgICAgY29uc3QgaXNBbGVydEZpbHRlclZlcnNpb25TdXBwb3J0ZWQgPSBpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgVkVSU0lPTl85XzJfMCk7XG5cbiAgICAgICAgLy8gSWYgdGhlIHZlcnNpb24gaXMgOS4xLjAgb3IgYmVsb3csIGFsbCBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkXG4gICAgICAgIC8vIElmIHRoZSB2ZXJzaW9uIGlzIDkuMi4wIGFuZCBhYm92ZSwgd2UgZmlsdGVyIGJ5IHRoZSBwcmVmZXJlbmNlc1xuICAgICAgICBpc0FsZXJ0RW5hYmxlZCA9ICFpc0FsZXJ0RmlsdGVyVmVyc2lvblN1cHBvcnRlZCB8fCB0aGlzLmlzQWxlcnRFbmFibGVkSW5QcmVmZXJlbmNlcyhhbGVydCwgZ3VpZCwgdXNlckFsZXJ0c1ByZWZlcmVuY2VzLnByZWZlcmVuY2VzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlzQWxlcnRFbmFibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzQWxlcnRFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FsZXJ0RW5hYmxlZEluUHJlZmVyZW5jZXMoYWxlcnQ6IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcsIHVzZXJBbGVydFR5cGVQcmVmZXJlbmNlc01hcDogQWxlcnRzUHJlZmVyZW5jZXNNYXApIHtcbiAgICBsZXQgaXNBbGVydEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLy8gSWYgd2UgaGF2ZSBhbnkgZmFjaWxpdHkgc2VsZWN0ZWQsIHdlIGNvbnRpbnVlIHRvIGNoZWNrXG4gICAgLy8gRWxzZSB3ZSBhbGxvdyBhbGwgdG8gcGFzcyBhcyB0aGUgdXNlciBkaWRuJ3Qgc2V0IHByZWZlcmVuY2VzIHlldFxuICAgIGlmIChPYmplY3Qua2V5cyh1c2VyQWxlcnRUeXBlUHJlZmVyZW5jZXNNYXApLmxlbmd0aCkge1xuICAgICAgaXNBbGVydEVuYWJsZWQgPSBmYWxzZTtcblxuICAgICAgLy8gR2V0cyB0aGUgdHJlZUlkIG9mIHRoZSB0ZW5hbnQgLSBJbiBjYXNlIHRoZSB1c2VyIHNlbGVjdGVkIFwiQWxsIFRlbmFudCBQYXJraW5nIExvdHNcIlxuICAgICAgY29uc3QgdGVuYW50VHJlZUlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUudGVuYW50SW5mbyk/LnRyZWVJZDtcblxuICAgICAgLy8gR2V0cyB0aGUgdHJlZSBwYXJrIElkIG9mIHRoZSBhbGVydFxuICAgICAgY29uc3QgYWxlcnRUcmVlUGFya0lkID0gdGhpcy5nZXRDbG91ZFBhcmtJZChhbGVydCwgZ3VpZCk7XG5cbiAgICAgIC8vIFdlIEdldCB0aGUgc2V0dGluZyBvZiB0aGUgUGFyaywgUGFyZW50UGFyayBvciBQYXJrc1RyZWVSb290XG4gICAgICBjb25zdCBmYWNpbGl0eVByZWZlcmVuY2VzTWFwOiBGYWNpbGl0eVByZWZlcmVuY2VzTWFwID0gdXNlckFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwW2FsZXJ0VHJlZVBhcmtJZF0gfHwgdXNlckFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwW3RlbmFudFRyZWVJZF07XG5cbiAgICAgIC8vIFdlIGNoZWNrIGlmIHRoZSBmYWNpbGl0eSB3YXMgc2VsZWN0ZWRcbiAgICAgIGlmIChmYWNpbGl0eVByZWZlcmVuY2VzTWFwKSB7XG4gICAgICAgIGNvbnN0IGFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwOiBBbGVydFR5cGVQcmVmZXJlbmNlc01hcCA9IGZhY2lsaXR5UHJlZmVyZW5jZXNNYXBbYWxlcnQuZXZlbnREZXNjcmlwdGlvbl07XG5cbiAgICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIGFsZXJ0IHR5cGUgd2FzIHNlbGVjdGVkXG4gICAgICAgIGlmIChhbGVydFR5cGVQcmVmZXJlbmNlc01hcCkge1xuICAgICAgICAgIGNvbnN0IGFsZXJ0RGV2aWNlVHlwZTogQWxlcnRzRGV2aWNlVHlwZSA9IHRoaXMuZ2V0QWxlcnRzRGV2aWNlVHlwZShhbGVydClcblxuICAgICAgICAgIC8vIFdlIGNoZWNrIHRoZSBpZiB0aGUgZGV2aWNlIHR5cGUgd2FzIHNlbGVjdGVkXG4gICAgICAgICAgaXNBbGVydEVuYWJsZWQgPSBhbGVydFR5cGVQcmVmZXJlbmNlc01hcFthbGVydERldmljZVR5cGVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzQWxlcnRFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGVydHNEZXZpY2VUeXBlKGFsZXJ0OiBBbGVydER0byk6IEFsZXJ0c0RldmljZVR5cGUge1xuICAgIGxldCBhbGVydERldmljZVR5cGU6IEFsZXJ0c0RldmljZVR5cGU7XG4gICAgY29uc3QgYWxlcnRzRGV2aWNlVHlwZTogQWxlcnRzRGV2aWNlVHlwZVtdID0gRGV2aWNlVHlwZXNBbGVydHNNYXBwaW5nLmdldChhbGVydC5kZXZpY2VUeXBlKTtcblxuICAgIHN3aXRjaCAoYWxlcnQuZGV2aWNlVHlwZSkge1xuICAgICAgY2FzZSBEZXZpY2VUeXBlLkNhc2g6XG4gICAgICAgIGFsZXJ0RGV2aWNlVHlwZSA9IGFsZXJ0LnJlYWRlcklEID09PSAwID8gQWxlcnRzRGV2aWNlVHlwZS5NYXN0ZXIgOiBBbGVydHNEZXZpY2VUeXBlLkNhc2hSZWdpc3RlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhbGVydERldmljZVR5cGUgPSBhbGVydHNEZXZpY2VUeXBlPy5bMF07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBhbGVydERldmljZVR5cGU7XG4gIH1cblxuICBwcml2YXRlIG9uRHlhbm1pY1ByaWNpbmdDb25kaXRpb25DaGFuZ2UoY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZyhjdHgsIG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG5cbiAgICBsZXQgaXNGYWxsZW5CYWNrVG9EZWZhdWx0UmF0ZSA9ICFub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uaXNUcmlnZ2VyZWQ7XG4gICAgbGV0IGlzQXV0b21hdGljU3dpdGNoUmF0ZSA9IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi50cmlnZ2VyQWN0aW9uID09PSBEeW5hbWljUHJpY2luZ1RyaWdnZXJBY3Rpb24uQXV0b21hdGljU3dpdGNoUmF0ZTtcbiAgICBpZiAoaXNGYWxsZW5CYWNrVG9EZWZhdWx0UmF0ZSkge1xuICAgICAgLy8gaGFuZGxlIG5vdGlmaWNhdGlvbiBpbmRpY2F0aW5nIHRoZSByYXRlIGhhcyBmYWxsZW4gYmFjayB0byB0aGUgZGVmYXVsdCByYXRlXG4gICAgICB0aGlzLnNob3dSYXRlRmFsbGVuQmFja1RvRGVmYXVsdFJhdGVUb2FzdE1lc3NhZ2Uobm90aWZpY2F0aW9uKS50aGVuKCk7XG4gICAgfSBlbHNlIGlmIChpc0F1dG9tYXRpY1N3aXRjaFJhdGUpIHtcbiAgICAgIC8vIGhhbmRsZSBub3RpZmljYXRpb24gaW5kaWNhdGluZyB0aGUgcmF0ZSBoYXMgYXV0b21hdGljIHN3aXRjaFxuICAgICAgdGhpcy5zaG93UmF0ZUF1dG9tYXRpY1N3aXRjaFRvYXN0TWVzc2FnZShub3RpZmljYXRpb24pLnRoZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2UgZG8gbm90IG9wZW4gdGhlIG5vdGlmaWNhdGlvbiBpZiB1c2VyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvblxuICAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IHRoaXMuZmFjaWxpdHlTZXJ2aWNlLmhhc1Blcm1pc3Npb25UeXBlQnlQYXJrKFxuICAgICAgICBQZXJtaXNzaW9uVHlwZS5Mb3RDb25maWd1cmF0aW9uRHluYW1pY1ByaWNpbmcsIG5vdGlmaWNhdGlvbi5ndWlkLCBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24ucGFya2luZ0xvdElkXG4gICAgICApO1xuICAgICAgLy8gV2UgZG8gbm90IG9wZW4gdGhlIG5vdGlmaWNhdGlvbiBpbiBtb2JpbGUgbW9kZVxuICAgICAgY29uc3QgaXNNb2JpbGVBcHBNb2RlID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmFwcFR5cGUgPT09IEFwcFR5cGUuTW9iaWxlO1xuICAgICAgY29uc3QgaXNDY01vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSkgPT09IEFwcE1vZHVsZS5DYztcbiAgICAgIGlmICghaXNNb2JpbGVBcHBNb2RlICYmIGlzQ2NNb2R1bGUgJiYgaGFzUGVybWlzc2lvbikge1xuICAgICAgICB0aGlzLm9wZW5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbk5vdGlmaWNhdGlvbkRpYWxvZyhub3RpZmljYXRpb24sIGd1aWQpO1xuXG4gICAgICAgIC8vIFB1c2ggdGhlIG5ldyBub3RpZmljYXRpb24gdG8gdGhlIGFycmF5IGFuZCBzYXZlIGluIHN0YXRlXG4gICAgICAgIG5vdGlmaWNhdGlvbi50aW1lQWdvSW5TZWNvbmRzID0gdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5nZXRUaW1lQWdvSW5TZWNvbmRzKG5vdGlmaWNhdGlvbik7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLmNvbmZpZyB9Lm5vdGlmaWNhdGlvbnM7XG4gICAgICAgIG5vdGlmaWNhdGlvbnMudW5zaGlmdChub3RpZmljYXRpb24pO1xuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBjb25maWc6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcobm90aWZpY2F0aW9ucyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25BbGVydENoYW5nZShjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYWxlcnQgPSBub3RpZmljYXRpb24/LmFsZXJ0O1xuICAgIGlmIChhbGVydCAmJiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmlzQWxlcnRUeXBlRGVmaW5lZChhbGVydC5ldmVudERlc2NyaXB0aW9uKSkge1xuICAgICAgdGhpcy5oYW5kbGVBbGVydEZvckNsb3NpbmcoY3R4LCBhbGVydCwgZ3VpZCk7XG5cbiAgICAgIGlmIChhbGVydC5ldmVudFN0YXRlICYmIHRoaXMuaXNBbGVydEVuYWJsZWRGb3JVc2VyKGFsZXJ0LCBndWlkKSkge1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb25zID0geyAuLi5jdHguZ2V0U3RhdGUoKS5jb25maWcgfS5ub3RpZmljYXRpb25zO1xuXG4gICAgICAgIGlmICghYWxlcnQuZGV2aWNlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IHBhcmtEZXZpY2VzID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChQYXJrTWFuYWdlclN0YXRlLmRldmljZXMpO1xuICAgICAgICAgIGFsZXJ0LmRldmljZU5hbWUgPSBwYXJrRGV2aWNlcz8uZmluZChkID0+IGQuaWQgPT09IGFsZXJ0LmRldmljZUlEKT8ubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYWxlcnQucGFya05hbWUpIHtcbiAgICAgICAgICBjb25zdCBsb3RzTWFwID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmZhY2lsaXR5RGljdGlvbmFyeSlbZ3VpZF07XG4gICAgICAgICAgaWYgKGxvdHNNYXApIHtcbiAgICAgICAgICAgIGFsZXJ0LnBhcmtOYW1lID0gbG90c01hcFthbGVydC5wYXJrSWRdPy5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGFsZXJ0LnBhcmtab25lTmFtZSA9IFwiXCI7XG5cbiAgICAgICAgLy8gV2UgZG8gbm90IG9wZW4gdGhlIG5vdGlmaWNhdGlvbiBpbiBtb2JpbGUgbW9kZVxuICAgICAgICBjb25zdCBpc01vYmlsZUFwcE1vZGUgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuYXBwVHlwZSA9PT0gQXBwVHlwZS5Nb2JpbGU7XG4gICAgICAgIGNvbnN0IGlzQ2NNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpID09PSBBcHBNb2R1bGUuQ2M7XG4gICAgICAgIGlmICghaXNNb2JpbGVBcHBNb2RlICYmIGlzQ2NNb2R1bGUpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFsZXJ0LmV2ZW50RGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLkxPU1RfVElDS0VUOlxuICAgICAgICAgICAgY2FzZSBQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3IuTFJQX05PVF9NQVRDSDpcbiAgICAgICAgICAgICAgdGhpcy5vcGVuQ3JpdGljYWxBbGVydERpYWxvZyhhbGVydCwgZ3VpZCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5QWxlcnQoY3R4LCBhbGVydCwgZ3VpZCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFB1c2ggdGhlIG5ldyBhbGVydCB0byB0aGUgYXJyYXkgYW5kIHNhdmUgaW4gc3RhdGVcbiAgICAgICAgbm90aWZpY2F0aW9uLnRpbWVBZ29JblNlY29uZHMgPSB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmdldFRpbWVBZ29JblNlY29uZHMobm90aWZpY2F0aW9uKTtcbiAgICAgICAgbm90aWZpY2F0aW9ucy51bnNoaWZ0KG5vdGlmaWNhdGlvbik7XG5cbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIGNvbmZpZzogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5jb252ZXJ0Tm90aWZpY2F0aW9uc1RvTm90aWZpY2F0aW9uc0NvbmZpZyhub3RpZmljYXRpb25zKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbG91ZFBhcmtJZChhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgYWxlcnRQYXJrSWQgPSBhbGVydC5tdWx0aVBhcmtQYXJlbnRJZCA+IDAgPyBhbGVydC5tdWx0aVBhcmtQYXJlbnRJZCA6IGFsZXJ0LnBhcmtJZDtcbiAgICBjb25zdCBsb3RzTWFwID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmZhY2lsaXR5RGljdGlvbmFyeSlbZ3VpZF07XG4gICAgcmV0dXJuIGxvdHNNYXBbYWxlcnRQYXJrSWRdPy5jbG91ZElkO1xuICB9XG5cbiAgcHJpdmF0ZSBwa01hdGNoZXMgPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIG5vdGlmaWNhdGlvblBLOiBzdHJpbmcpID0+IHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uRHRvLCBub3RpZmljYXRpb25EdG8uZ3VpZCkgPT09IG5vdGlmaWNhdGlvblBLO1xuICBwcml2YXRlIHN0YXRlTWF0Y2hlcyA9IChhbGVydER0bzogQWxlcnREdG8sIGV2ZW50U3RhdGU6IGJvb2xlYW4pID0+IGFsZXJ0RHRvLmV2ZW50U3RhdGUgPT09IGV2ZW50U3RhdGU7XG4gIHByaXZhdGUgYWxlcnRQSyA9IChhbGVydER0bzogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBgJHtndWlkfV8ke2FsZXJ0RHRvLnBhcmtJZH1fJHthbGVydER0by5yZWFkZXJJRH1fJHthbGVydER0by5kZXZpY2VJRH1fJHthbGVydER0by5ldmVudERlc2NyaXB0aW9ufWA7XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGxldCBrZXk6IHN0cmluZyA9ICcnO1xuICAgIHN3aXRjaCAobm90aWZpY2F0aW9uRHRvLnR5cGUpIHtcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5BbGVydDpcbiAgICAgICAga2V5ID0gdGhpcy5hbGVydFBLKG5vdGlmaWNhdGlvbkR0by5hbGVydCwgZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuRHluYW1pY1ByaWNpbmdDb25kaXRpb246XG4gICAgICAgIGtleSA9IGAke2d1aWR9XyR7bm90aWZpY2F0aW9uRHRvLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmlkfWA7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmxvZyhcInVuc3VwcG9ydGVkIG5vdGlmaWNhdGlvbiB0eXBlXCIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4ga2V5O1xuICB9XG59XG4iXX0=
515
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvbW9kdWxlcy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFFbkgsT0FBTyxFQUFFLDhCQUE4QixFQUE2Qix1QkFBdUIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ3BMLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1GQUFtRixDQUFDO0FBRWpJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3RJLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBeUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSwyQkFBMkIsRUFBRSwwQkFB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QUc7Z0JBQ3hELFVBQVUsRUFBRSxDQUFDO2dCQUNiLFlBQVksRUFBRSxLQUFLO2FBQ3BCO1lBQ0QsZ0JBQWdCLEVBQUUsRUFBRTtTQUNyQjtLQUNGLENBQUM7R0FFVyxrQkFBa0IsQ0F5Z0I5QjtTQXpnQlksa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7d2RBd0JULG1DQUFtQyxNQVVuQyx5QkFBeUIsTUFjekIsMEJBQTBCLE1BYTFCLGlCQUFpQixNQU9qQiw4QkFBOEIsTUFLeEIsMEJBQTBCLE1BaUJoQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDbG91ZENvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Nsb3VkLWNvbmZpcm0tZGlhbG9nL2Nsb3VkLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9hbGVydC1ub3RpZmljYXRpb24vYWxlcnQtbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWFuZE5vdGlmaWNhdGlvbkJvcmRlckNsYXNzLCBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnLCBDb21tYW5kTm90aWZpY2F0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBDb21tYW5kTm90aWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25DbGFzcywgTm90aWZpY2F0aW9uSFBvc2l0aW9ucywgTm90aWZpY2F0aW9uVlBvc2l0aW9ucyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ2xvYmFsLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBWRVJTSU9OXzlfMl8wIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3ZlcnNpb24tY29uc3RhbnRzJztcbmltcG9ydCB7IERldmljZVR5cGVzQWxlcnRzTWFwcGluZyB9IGZyb20gJy4uLy4uL2VudW1zL2FsZXJ0cy1kZXZpY2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IEFwcFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9hcHAtdHlwZS5lbnVtJztcbmltcG9ydCB7IExvY2FsaXphdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL2xvY2FsaXphdGlvbi5lbnVtJztcbmltcG9ydCB7IENsb3VkQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Nsb3VkLWNvbmZpcm0tZGlhbG9nLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFsZXJ0RHRvLCBBbGVydFByZWZlcmVuY2VzU2V0dGluZ3NEdG8sIEFsZXJ0c0RldmljZVR5cGUsIEFwcE1vZHVsZSwgRGV2aWNlVHlwZSwgRHluYW1pY1ByaWNpbmdUcmlnZ2VyQWN0aW9uLCBGYWNpbGl0eVJlbW90ZUNvbW1hbmRUeXBlcywgSGFuZGxpbmdBbGVydER0bywgSGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bywgTm90aWZpY2F0aW9uRHRvLCBOb3RpZmljYXRpb25TZXJ2aWNlUHJveHksIE5vdGlmaWNhdGlvblNldmVyaXR5LCBOb3RpZmljYXRpb25UeXBlLCBQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3IsIFBlcm1pc3Npb25UeXBlLCBTZXR0aW5nc0NhdGVnb3J5LCBTcGFya1NldHRpbmdzRHRvIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgUmF0ZVNlcnZpY2VQcm94eSwgWm9uZVNlcnZpY2VQcm94eSB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQmFzZUZhY2lsaXR5Q29tbWFuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IE51bWJlck1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3VwcG9ydC12ZXJzaW9uLnV0aWwnO1xuaW1wb3J0IHsgU2Vzc2lvblN0YXRlIH0gZnJvbSAnLi4vYXV0aC9zZXNzaW9uLnN0YXRlJztcbmltcG9ydCB7IEZhY2lsaXR5U2VydmljZSB9IGZyb20gJy4uL2ZhY2lsaXR5JztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBQYXJrTWFuYWdlclN0YXRlIH0gZnJvbSAnLi4vcGFyay1tYW5hZ2VyL3BhcmstbWFuYWdlci5zdGF0ZSc7XG5pbXBvcnQgeyBSYXRlU3RhdGUgfSBmcm9tICcuLi9yYXRlL3JhdGUuc3RhdGUnO1xuaW1wb3J0IHsgU2lkZW5hdlN0YXRlIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7IFVwZGF0ZVVzZXJTZXR0aW5nc0FjdGlvbiB9IGZyb20gJy4uL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5hY3Rpb25zJztcbmltcG9ydCB7XG4gIENsZWFyTm90aWZpY2F0aW9uc0FjdGlvbiwgSGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uLCBIYW5kbGVOb3RpZmljYXRpb25Gb3JDbG9zaW5nLCBMb2FkTm90aWZpY2F0aW9uc0FjdGlvbixcbiAgTm90aWZpY2F0aW9uQ2hhbmdlQWN0aW9uLFxuICBTZXROb3RpZmljYXRpb25zQ29uZmlnQWN0aW9uLCBVcGRhdGVVc2VyQWxlcnRzUHJlZmVyZW5jZXNBY3Rpb25cbn0gZnJvbSAnLi9ub3RpZmljYXRpb25zLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWxlcnRzUHJlZmVyZW5jZXNNYXAsIEFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwLCBGYWNpbGl0eVByZWZlcmVuY2VzTWFwLCBOb3RpZmljYXRpb25zQ29uZmlnIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25zTW9kZWwge1xuICBjb25maWc6IE5vdGlmaWNhdGlvbnNDb25maWc7XG4gIG5vdGlmaWNhdGlvbnNNYXA6IE51bWJlck1hcDxudW1iZXI+O1xufVxuXG5AU3RhdGU8Tm90aWZpY2F0aW9uc01vZGVsPih7XG4gIG5hbWU6ICdub3RpZmljYXRpb25zJyxcbiAgZGVmYXVsdHM6IHtcbiAgICBjb25maWc6IHtcbiAgICAgIG5vdGlmaWNhdGlvbnM6IFtdLFxuICAgICAgYWdncmVnYXRlZE5vdGlmaWNhdGlvblNldmVyaXR5OiBOb3RpZmljYXRpb25TZXZlcml0eS5Mb3csXG4gICAgICBiYWRnZVZhbHVlOiAwLFxuICAgICAgZGlzcGxheUJhZGdlOiBmYWxzZSxcbiAgICB9LFxuICAgIG5vdGlmaWNhdGlvbnNNYXA6IHt9LFxuICB9LFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zU3RhdGUge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZVByb3h5OiBOb3RpZmljYXRpb25TZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBhbGVydE5vdGlmaWNhdGlvblNlcnZpY2U6IEFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlOiBDb21tYW5kTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZhY2lsaXR5Q29tbWFuZHNTZXJ2aWNlOiBCYXNlRmFjaWxpdHlDb21tYW5kc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYWNpbGl0eVNlcnZpY2U6IEZhY2lsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIHpvbmVTZXJ2aWNlUHJveHk6IFpvbmVTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSByYXRlU2VydmljZVByb3h5OiBSYXRlU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSkge1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGNvbmZpZyhzdGF0ZTogTm90aWZpY2F0aW9uc01vZGVsKTogTm90aWZpY2F0aW9uc0NvbmZpZyB7XG4gICAgcmV0dXJuIHN0YXRlLmNvbmZpZztcbiAgfVxuXG4gIEBBY3Rpb24oVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uKVxuICBvblVwZGF0ZVVzZXJBbGVydHNQcmVmZXJlbmNlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBhY3Rpb246IFVwZGF0ZVVzZXJBbGVydHNQcmVmZXJlbmNlc0FjdGlvbikge1xuICAgIGNvbnN0IHNldHRpbmc6IFNwYXJrU2V0dGluZ3NEdG8gPSBuZXcgU3BhcmtTZXR0aW5nc0R0byh7XG4gICAgICBjYXRlZ29yeTogU2V0dGluZ3NDYXRlZ29yeS5BbGVydHNQcmVmZXJlbmNlcyxcbiAgICAgIHNldHRpbmdzSnNvbjogSlNPTi5zdHJpbmdpZnkoYWN0aW9uLnVzZXJOb3RpZmljYXRpb25zUHJlZmVyZW5jZXMpLFxuICAgIH0pO1xuXG4gICAgY3R4LmRpc3BhdGNoKG5ldyBVcGRhdGVVc2VyU2V0dGluZ3NBY3Rpb24oc2V0dGluZykpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkTm90aWZpY2F0aW9uc0FjdGlvbilcbiAgb25Mb2FkTm90aWZpY2F0aW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCB7IG1pbnV0ZXNBZ28gfTogTG9hZE5vdGlmaWNhdGlvbnNBY3Rpb24pIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25zJCA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZVByb3h5LmdldEFsbE5vdGlmaWNhdGlvbnMobWludXRlc0Fnbyk7XG5cbiAgICByZXR1cm4gbm90aWZpY2F0aW9ucyQucGlwZSh0YXAoYXN5bmMgbm90aWZpY2F0aW9ucyA9PiB7XG4gICAgICBjb25zdCBwb3B1bGF0ZU5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdID0gYXdhaXQgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5wb3B1bGF0ZU5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9ucy5kYXRhKTtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNDb25maWc6IE5vdGlmaWNhdGlvbnNDb25maWcgPSB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmNvbnZlcnROb3RpZmljYXRpb25zVG9Ob3RpZmljYXRpb25zQ29uZmlnKHBvcHVsYXRlTm90aWZpY2F0aW9ucyk7XG5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgY29uZmlnOiBub3RpZmljYXRpb25zQ29uZmlnLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhck5vdGlmaWNhdGlvbnNBY3Rpb24pXG4gIG9uQ2xlYXJOb3RpZmljYXRpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIGFjdGlvbjogQ2xlYXJOb3RpZmljYXRpb25zQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIG5vdGlmaWNhdGlvbnM6IFtdLFxuICAgICAgICBhZ2dyZWdhdGVkTm90aWZpY2F0aW9uU2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5LkxvdyxcbiAgICAgICAgYmFkZ2VWYWx1ZTogMCxcbiAgICAgICAgZGlzcGxheUJhZGdlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb25zTWFwOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0Tm90aWZpY2F0aW9uc0NvbmZpZ0FjdGlvbilcbiAgb25TZXRDb25maWdBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgYWN0aW9uOiBTZXROb3RpZmljYXRpb25zQ29uZmlnQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgY29uZmlnOiBhY3Rpb24ubm90aWZpY2F0aW9uc0NvbmZpZyxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oSGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZylcbiAgb25IYW5kbGVOb3RpZmljYXRpb25Gb3JDbG9zaW5nKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIHsgbm90aWZpY2F0aW9uLCBndWlkIH06IEhhbmRsZU5vdGlmaWNhdGlvbkZvckNsb3NpbmcpIHtcbiAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkZvckNsb3NpbmcoY3R4LCBub3RpZmljYXRpb24sIGd1aWQpO1xuICB9XG5cbiAgQEFjdGlvbihOb3RpZmljYXRpb25DaGFuZ2VBY3Rpb24pXG4gIGFzeW5jIG9uTm90aWZpY2F0aW9uQ2hhbmdlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIHsgbm90aWZpY2F0aW9uLCBndWlkIH06IE5vdGlmaWNhdGlvbkNoYW5nZUFjdGlvbikge1xuICAgIHN3aXRjaCAobm90aWZpY2F0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5BbGVydDpcbiAgICAgICAgdGhpcy5vbkFsZXJ0Q2hhbmdlKGN0eCwgbm90aWZpY2F0aW9uLCBndWlkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbjpcbiAgICAgICAgdGhpcy5vbkR5YW5taWNQcmljaW5nQ29uZGl0aW9uQ2hhbmdlKGN0eCwgbm90aWZpY2F0aW9uLCBndWlkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oSGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uKVxuICBvbkhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCB7IG5vdGlmaWNhdGlvbkR0bywgZ3VpZCB9OiBIYW5kbGVOb3RpZmljYXRpb25BY3Rpb24pIHtcbiAgICBpZiAobm90aWZpY2F0aW9uRHRvLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uPy5oYW5kbGVkQnlVc2VySWQgPiAwKSB7XG4gICAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkZvckNsb3NpbmcoY3R4LCBub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2Nlc3NOb3RpZmljYXRpb25VcGRhdGUoY3R4LCBub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3NOb3RpZmljYXRpb25VcGRhdGUoY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgbm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLmNvbmZpZyB9Lm5vdGlmaWNhdGlvbnM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIG5vdGlmaWNhdGlvbiB3aXRoIHRoZSBoYW5kbGUgdXNlciAtIGFuZCBzYXZlIGluIHN0YXRlXG4gICAgbGV0IGV4aXN0Tm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG87XG4gICAgc3dpdGNoIChub3RpZmljYXRpb25EdG8udHlwZSkge1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOlxuICAgICAgICBleGlzdE5vdGlmaWNhdGlvbkR0byA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT4gdGhpcy5wa01hdGNoZXMobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25QSykpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkFsZXJ0OlxuICAgICAgICBleGlzdE5vdGlmaWNhdGlvbkR0byA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT4gdGhpcy5wa01hdGNoZXMobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25QSykgJiZcbiAgICAgICAgICB0aGlzLnN0YXRlTWF0Y2hlcyhub3RpZmljYXRpb24uYWxlcnQsIG5vdGlmaWNhdGlvbkR0by5hbGVydC5ldmVudFN0YXRlKSk7XG5cbiAgICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGxwci1taXNtYXRjaC1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgbG9zdC10aWNrZXQtbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChleGlzdE5vdGlmaWNhdGlvbkR0bykge1xuICAgICAgZXhpc3ROb3RpZmljYXRpb25EdG8uaGFuZGxpbmdCeVVzZXIgPSBub3RpZmljYXRpb25EdG8uaGFuZGxpbmdCeVVzZXI7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGNvbmZpZzogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5jb252ZXJ0Tm90aWZpY2F0aW9uc1RvTm90aWZpY2F0aW9uc0NvbmZpZyhub3RpZmljYXRpb25zKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENsb3NlIGNyaXRpY2FsIGFsZXJ0IG1vZGFsXG4gICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYG5vdGlmaWNhdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ3JpdGljYWxBbGVydERpYWxvZyhhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFsZXJ0VHlwZU5hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3JbYWxlcnQuZXZlbnREZXNjcmlwdGlvbl0pO1xuICAgIGNvbnN0IGNsb3VkQ29uZmlybURpYWxvZ0RhdGE6IENsb3VkQ29uZmlybURpYWxvZ0RhdGEgPSB7XG4gICAgICBjb25maXJtTWVzc2FnZXM6IFt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uY3JpdGljYWxfYWxlcnRfbWVzc2FnZSwge1xuICAgICAgICBhbGVydFR5cGVOYW1lXG4gICAgICB9KV0sXG4gICAgICBjb25maXJtVGl0bGU6IGFsZXJ0VHlwZU5hbWUsXG4gICAgICBva1RleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi55ZXMpLFxuICAgICAgY2FuY2VsVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhbmNlbCksXG4gICAgICBkZXZpY2U6IHtcbiAgICAgICAgY29tbUlkOiBhbGVydC5yZWFkZXJJRC50b1N0cmluZygpLFxuICAgICAgICBuYW1lOiBhbGVydC5kZXZpY2VOYW1lXG4gICAgICB9LFxuICAgICAgcGFya05hbWU6IGFsZXJ0LnBhcmtOYW1lLFxuICAgICAgem9uZU5hbWU6IGFsZXJ0LnBhcmtab25lTmFtZSxcbiAgICAgIG5vdGlmaWNhdGlvblNldmVyaXR5OiBOb3RpZmljYXRpb25TZXZlcml0eS5Dcml0aWNhbCxcbiAgICAgIG5vdGlmaWNhdGlvblNldmVyaXR5SW52ZXJ0OiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0IGFsZXJ0UEsgPSB0aGlzLmFsZXJ0UEsoYWxlcnQsIGd1aWQpO1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW48Ym9vbGVhbj4oQ2xvdWRDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBwYW5lbENsYXNzOiAndGItY3JpdGljYWwtbW9kYWwnLFxuICAgICAgZGF0YTogY2xvdWRDb25maXJtRGlhbG9nRGF0YSxcbiAgICAgIGlkOiBgbm90aWZpY2F0aW9uLW1vZGFsLSR7YWxlcnRQS31gLFxuICAgICAgZW5hYmxlZE1pbmltaXplZDogdHJ1ZSxcbiAgICB9KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3QgdXNlckluZm8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS51c2VySW5mbyk7XG4gICAgICAgIGNvbnN0IGhhbmRsZUFsZXJ0OiBIYW5kbGluZ0FsZXJ0RHRvID0gbmV3IEhhbmRsaW5nQWxlcnREdG8oe1xuICAgICAgICAgIGd1aWQ6IGd1aWQsXG4gICAgICAgICAgcGFya0lkOiBhbGVydC5wYXJrSWQsXG4gICAgICAgICAgcGFya05hbWU6IGFsZXJ0LnBhcmtOYW1lLFxuICAgICAgICAgIGRldmljZUlkOiBhbGVydC5kZXZpY2VJRCxcbiAgICAgICAgICBldmVudERlc2NyaXB0aW9uOiBhbGVydC5ldmVudERlc2NyaXB0aW9uLFxuICAgICAgICAgIHVzZXJGdWxsTmFtZTogdXNlckluZm8uZGlzcGxheU5hbWUsXG4gICAgICAgICAgaWQ6IGFsZXJ0LmlkLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlUHJveHkuaGFuZGxlQWxlcnROb3RpZmljYXRpb24oaGFuZGxlQWxlcnQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UudHJpZ2dlckFsZXJ0VG9hc3RFdmVudChyZXMuZGF0YSB8fCBhbGVydCwgZ3VpZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRHluYW1pY1ByaWNpbmdDb25kaXRpb25Ob3RpZmljYXRpb25EaWFsb2cobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNsb3VkQ29uZmlybURpYWxvZ0RhdGE6IENsb3VkQ29uZmlybURpYWxvZ0RhdGEgPSB7XG4gICAgICBjb25maXJtTWVzc2FnZXM6IFt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZHluYW1pY19wcmljaW5nX2FsZXJ0X21lc3NhZ2UpXSxcbiAgICAgIGNvbmZpcm1UaXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmR5bmFtaWNfcHJpY2luZ19hbGVydF90aXRsZSksXG4gICAgICBjb25maXJtU3ViVGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5keW5hbWljX3ByaWNpbmdfYWxlcnRfc3ViX3RpdGxlLCB7IGNvbmRpdGlvbk5hbWU6IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5jb25kaXRpb25OYW1lIH0pLFxuICAgICAgb2tUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24ueWVzKSxcbiAgICAgIGNhbmNlbFRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5jYW5jZWwpLFxuICAgIH07XG5cbiAgICBjb25zdCBub3RpZmljYXRpb25QSyA9IHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uLCBndWlkKTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuPGJvb2xlYW4+KENsb3VkQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgcGFuZWxDbGFzczogJ3RiLWR5bmFtaWMtcHJpY2luZy1jb25kaXRpb24tbW9kYWwnLFxuICAgICAgZGF0YTogY2xvdWRDb25maXJtRGlhbG9nRGF0YSxcbiAgICAgIGlkOiBgbm90aWZpY2F0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCxcbiAgICAgIGVuYWJsZWRNaW5pbWl6ZWQ6IHRydWUsXG4gICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmZvID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUudXNlckluZm8pO1xuICAgICAgICBjb25zdCBoYW5kbGluZ0R5bmFtaWNQcmljaW5nQ29uZGl0aW9uRHRvOiBIYW5kbGluZ0R5bmFtaWNQcmljaW5nQ29uZGl0aW9uRHRvID0gbmV3IEhhbmRsaW5nRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG8oe1xuICAgICAgICAgIGNsb3VkUGFya0lkOiBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uY2xvdWRQYXJrSWQsXG4gICAgICAgICAgdXNlckZ1bGxOYW1lOiB1c2VySW5mby5kaXNwbGF5TmFtZSxcbiAgICAgICAgICBpZDogbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmlkLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlUHJveHkuaGFuZGxlRHluYW1pY1ByaWNpbmdDb25kaXRpb25Ob3RpZmljYXRpb24oaGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bykuc3Vic2NyaWJlKGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgY29uc3QgZHBjID0gcmVzLmRhdGEgfHwgbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uO1xuICAgICAgICAgIGNvbnN0IHJhdGUgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJhdGVTZXJ2aWNlUHJveHkuZ2V0UmF0ZUJ5SWQoZHBjLnJhdGVJZCwgZHBjLmd1aWQpKTtcbiAgICAgICAgICBkcGMucmF0ZU5hbWUgPSByYXRlPy5kYXRhPy5uYW1lO1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UudHJpZ2dlckR5bmFtaWNQcmljaW5nVG9hc3RFdmVudChyZXMuZGF0YSB8fCBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheUFsZXJ0KGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIGFsZXJ0OiBBbGVydER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uID0gdGhpcy5hbGVydE5vdGlmaWNhdGlvblNlcnZpY2UuZGlzcGxheUFsZXJ0KGFsZXJ0KTtcbiAgICBpZiAobm90aWZpY2F0aW9uKSB7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25zTWFwID0geyAuLi5jdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zTWFwIH07XG4gICAgICBjb25zdCBhbGVydFBLID0gdGhpcy5hbGVydFBLKGFsZXJ0LCBndWlkKTtcbiAgICAgIG5vdGlmaWNhdGlvbnNNYXBbYWxlcnRQS10gPSBub3RpZmljYXRpb24udG9hc3RJZDtcblxuICAgICAgbm90aWZpY2F0aW9uLm9uVGFwLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS50cmlnZ2VyQWxlcnRUb2FzdEV2ZW50KGFsZXJ0LCBndWlkKTtcbiAgICAgIH0pO1xuXG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNNYXAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlRGlhbG9nQnlJZChkaWFsb2dJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgb3BlbkRpYWxvZ3MgPSB0aGlzLm1vZGFsU2VydmljZS5nZXRPcGVuRGlhbG9ncygpO1xuICAgIGNvbnN0IGRpYWxvZyA9IG9wZW5EaWFsb2dzLmZpbmQoZGlhbG9nID0+IGRpYWxvZy5pZCA9PT0gZGlhbG9nSWQpO1xuXG4gICAgaWYgKGRpYWxvZykge1xuICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBbGVydEZvckNsb3NpbmcoY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgYWxlcnREdG86IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0geyAuLi5jdHguZ2V0U3RhdGUoKS5jb25maWcgfS5ub3RpZmljYXRpb25zO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNNYXAgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnNNYXAgfTtcbiAgICBjb25zdCBhbGVydFBLID0gdGhpcy5hbGVydFBLKGFsZXJ0RHRvLCBndWlkKTtcblxuICAgIC8vIFdoZXRoZXIgd2Ugd2FudCB0byBjbG9zZSBvciBoYXZlIGEgZHVwbGljYXRlIGFsZXJ0XG4gICAgY29uc3QgYWxlcnRFeGlzdHMgPSBub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uID0+XG4gICAgICB0aGlzLnBrTWF0Y2hlcyhub3RpZmljYXRpb24sIGFsZXJ0UEspICYmIHRoaXMuc3RhdGVNYXRjaGVzKG5vdGlmaWNhdGlvbi5hbGVydCwgYWxlcnREdG8uZXZlbnRTdGF0ZSlcbiAgICApO1xuICAgIGlmICghYWxlcnREdG8uZXZlbnRTdGF0ZSB8fCBhbGVydEV4aXN0cykge1xuICAgICAgY29uc3QgdG9hc3RJZCA9IG5vdGlmaWNhdGlvbnNNYXBbYWxlcnRQS107XG4gICAgICB0aGlzLmFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZS5jbGVhclRvYXN0cyh0b2FzdElkKTtcbiAgICAgIGRlbGV0ZSBub3RpZmljYXRpb25zTWFwW2FsZXJ0UEtdO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmZpbHRlcihub3RpZmljYXRpb24gPT4gISh0aGlzLmFsZXJ0UEsobm90aWZpY2F0aW9uLmFsZXJ0LCBub3RpZmljYXRpb24uZ3VpZCkgPT09IGFsZXJ0UEspKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbm90aWZpY2F0aW9uc01hcCxcbiAgICAgICAgY29uZmlnOiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmNvbnZlcnROb3RpZmljYXRpb25zVG9Ob3RpZmljYXRpb25zQ29uZmlnKGZpbHRlcmVkTm90aWZpY2F0aW9ucyksXG4gICAgICB9KTtcblxuICAgICAgLy8gQ2xvc2UgcmVsZXZlbnQgb3BlbiBtb2RhbHNcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBub3RpZmljYXRpb24tbW9kYWwtJHthbGVydFBLfWApO1xuICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGxwci1taXNtYXRjaC1tb2RhbC0ke2FsZXJ0UEt9YCk7XG4gICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgbG9zdC10aWNrZXQtbW9kYWwtJHthbGVydFBLfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZyhjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHsgLi4uY3R4LmdldFN0YXRlKCkuY29uZmlnIH0ubm90aWZpY2F0aW9ucztcbiAgICBjb25zdCBub3RpZmljYXRpb25zTWFwID0geyAuLi5jdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zTWFwIH07XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG5cbiAgICAvLyBXaGV0aGVyIHdlIHdhbnQgdG8gY2xvc2Ugb3IgaGF2ZSBhIGR1cGxpY2F0ZSBhbGVydFxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbkV4aXN0cyA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT4gdGhpcy5wa01hdGNoZXMobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25QSykpO1xuICAgIGlmIChub3RpZmljYXRpb25FeGlzdHMpIHtcbiAgICAgIGNvbnN0IHRvYXN0SWQgPSBub3RpZmljYXRpb25zTWFwW25vdGlmaWNhdGlvblBLXTtcbiAgICAgIHRoaXMuYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlLmNsZWFyVG9hc3RzKHRvYXN0SWQpO1xuICAgICAgZGVsZXRlIG5vdGlmaWNhdGlvbnNNYXBbbm90aWZpY2F0aW9uUEtdO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmZpbHRlcihub3RpZmljYXRpb24gPT5cbiAgICAgICAgISh0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLmd1aWQpID09PSBub3RpZmljYXRpb25QSykpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zTWFwLFxuICAgICAgICBjb25maWc6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcoZmlsdGVyZWROb3RpZmljYXRpb25zKSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDbG9zZSByZWxldmVudCBvcGVuIG1vZGFsc1xuICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYG5vdGlmaWNhdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGxwci1taXNtYXRjaC1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGxvc3QtdGlja2V0LW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaG93UmF0ZUF1dG9tYXRpY1N3aXRjaFRvYXN0TWVzc2FnZShub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bykge1xuICAgIGNvbnN0IGRwYyA9IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbjtcbiAgICBjb25zdCByYXRlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yYXRlU2VydmljZVByb3h5LmdldFJhdGVCeUlkKGRwYy5yYXRlSWQsIGRwYy5ndWlkKSk7XG4gICAgZHBjLnJhdGVOYW1lID0gcmF0ZT8uZGF0YT8ubmFtZTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMuZmFjaWxpdHlDb21tYW5kc1NlcnZpY2UuZ2V0Q29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZ01lc3NhZ2VzKEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLlNldEFjdGl2ZVJhdGUsIG51bGwsIGRwYyk7XG4gICAgY29uc3QgY29uZmlnOiBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnID0ge1xuICAgICAgbWVzc2FnZXMsXG4gICAgICBjb21tYW5kOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZmFjaWxpdHlfcmVtb3RlX2NvbW1hbmRfc2V0X2FjdGl2ZV9yYXRlKSxcbiAgICAgIGhQb3NpdGlvbjogTm90aWZpY2F0aW9uSFBvc2l0aW9ucy5SaWdodCxcbiAgICAgIHZQb3NpdGlvbjogTm90aWZpY2F0aW9uVlBvc2l0aW9ucy5Cb3R0b20sXG4gICAgICBkdXJhdGlvbjogNyAqIE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTLFxuICAgICAgY2xhc3M6IENvbW1hbmROb3RpZmljYXRpb25Cb3JkZXJDbGFzcy5TdWNjZXNzLFxuICAgICAgdHlwZTogQ29tbWFuZE5vdGlmaWNhdGlvblR5cGUuU3VjY2Vzc1xuICAgIH07XG5cbiAgICB0aGlzLmNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLnNob3coY29uZmlnLCBDb21tYW5kTm90aWZpY2F0aW9uQ29tcG9uZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd1JhdGVGYWxsZW5CYWNrVG9EZWZhdWx0UmF0ZVRvYXN0TWVzc2FnZShub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bykge1xuICAgIGNvbnN0IGRwYyA9IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbjtcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5jaGFuZ2VfdGhlX3JhdGVfdG8pO1xuICAgIGNvbnN0IHN1YlRpdGxlID0gYCR7ZHBjLnBhcmtpbmdMb3ROYW1lfSR7ZHBjLnpvbmU/Lm5hbWUgPyAnIHwgJyArIGRwYy56b25lPy5uYW1lIDogJyd9YDtcbiAgICBjb25zdCBkeW5hbWljUHJpY2luZ05hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZHluYW1pY19wcmljaW5nKTtcbiAgICBjb25zdCBib2R5ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnJldHVybl90b19kZWZhdWx0X3ZhbHVlLCB7IG5hbWU6IGR5bmFtaWNQcmljaW5nTmFtZSB9KTtcbiAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBtZXNzYWdlczogW3tcbiAgICAgICAgdmFsdWU6IHRpdGxlLFxuICAgICAgICBjbGFzczogTm90aWZpY2F0aW9uQ2xhc3MudGl0bGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB2YWx1ZTogc3ViVGl0bGUsXG4gICAgICAgIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5zdWJUaXRsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBib2R5LFxuICAgICAgICBjbGFzczogTm90aWZpY2F0aW9uQ2xhc3MuYm9keSxcbiAgICAgIH1dLFxuICAgICAgY29tbWFuZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmZhY2lsaXR5X3JlbW90ZV9jb21tYW5kX3NldF9hY3RpdmVfcmF0ZSksXG4gICAgICBoUG9zaXRpb246IE5vdGlmaWNhdGlvbkhQb3NpdGlvbnMuUmlnaHQsXG4gICAgICB2UG9zaXRpb246IE5vdGlmaWNhdGlvblZQb3NpdGlvbnMuQm90dG9tLFxuICAgICAgZHVyYXRpb246IDcgKiBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyxcbiAgICAgIGNsYXNzOiBDb21tYW5kTm90aWZpY2F0aW9uQm9yZGVyQ2xhc3MuU3VjY2VzcyxcbiAgICAgIHR5cGU6IENvbW1hbmROb3RpZmljYXRpb25UeXBlLlN1Y2Nlc3NcbiAgICB9O1xuXG4gICAgdGhpcy5jb21tYW5kTm90aWZpY2F0aW9uU2VydmljZS5zaG93KGNvbmZpZywgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbXBvbmVudCk7XG4gIH1cblxuICBwcml2YXRlIGlzQWxlcnRFbmFibGVkRm9yVXNlcihhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBpc0FsZXJ0RW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBjb25zdCB1c2VyU2V0dGluZ3MgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS5tYXBwZWRVc2VyU2V0dGluZ3MpO1xuICAgIGNvbnN0IHVzZXJBbGVydHNQcmVmZXJlbmNlczogQWxlcnRQcmVmZXJlbmNlc1NldHRpbmdzRHRvID0gdXNlclNldHRpbmdzLmdldChTZXR0aW5nc0NhdGVnb3J5LkFsZXJ0c1ByZWZlcmVuY2VzKTtcblxuICAgIC8vIElmIHRoZXJlIGlzIG5vIHVzZXJBbGVydHNQcmVmZXJlbmNlcyB3ZSBkb24ndCBmaWx0ZXIgYXQgYWxsXG4gICAgaWYgKCEhdXNlckFsZXJ0c1ByZWZlcmVuY2VzKSB7XG4gICAgICAvLyBJZiB0aGUgdXNlciBlbmFibGVkIHRoZSBub3RpZmljYXRpb25zXG4gICAgICAvLyBFbHNlIHRoZSB1c2VyIGRpc2FibGVkIGFsbCB0aGUgbm90aWZpY2F0aW9uc1xuICAgICAgaWYgKHVzZXJBbGVydHNQcmVmZXJlbmNlcy5pc0VuYWJsZWQpIHtcbiAgICAgICAgY29uc3Qgc3BhcmtWZXJzaW9uID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdCgoeyBzbWFydHBhcms6IHsgdmVyc2lvbnMgfSB9KSA9PiB2ZXJzaW9uc1tndWlkXSk7XG4gICAgICAgIGNvbnN0IGlzQWxlcnRGaWx0ZXJWZXJzaW9uU3VwcG9ydGVkID0gaXNWZXJzaW9uR3JlYXRlclRoYW5FcXVhbChzcGFya1ZlcnNpb24sIFZFUlNJT05fOV8yXzApO1xuXG4gICAgICAgIC8vIElmIHRoZSB2ZXJzaW9uIGlzIDkuMS4wIG9yIGJlbG93LCBhbGwgbm90aWZpY2F0aW9ucyBhcmUgZW5hYmxlZFxuICAgICAgICAvLyBJZiB0aGUgdmVyc2lvbiBpcyA5LjIuMCBhbmQgYWJvdmUsIHdlIGZpbHRlciBieSB0aGUgcHJlZmVyZW5jZXNcbiAgICAgICAgaXNBbGVydEVuYWJsZWQgPSAhaXNBbGVydEZpbHRlclZlcnNpb25TdXBwb3J0ZWQgfHwgdGhpcy5pc0FsZXJ0RW5hYmxlZEluUHJlZmVyZW5jZXMoYWxlcnQsIGd1aWQsIHVzZXJBbGVydHNQcmVmZXJlbmNlcy5wcmVmZXJlbmNlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpc0FsZXJ0RW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc0FsZXJ0RW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbGVydEVuYWJsZWRJblByZWZlcmVuY2VzKGFsZXJ0OiBBbGVydER0bywgZ3VpZDogc3RyaW5nLCB1c2VyQWxlcnRUeXBlUHJlZmVyZW5jZXNNYXA6IEFsZXJ0c1ByZWZlcmVuY2VzTWFwKSB7XG4gICAgbGV0IGlzQWxlcnRFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8vIElmIHdlIGhhdmUgYW55IGZhY2lsaXR5IHNlbGVjdGVkLCB3ZSBjb250aW51ZSB0byBjaGVja1xuICAgIC8vIEVsc2Ugd2UgYWxsb3cgYWxsIHRvIHBhc3MgYXMgdGhlIHVzZXIgZGlkbid0IHNldCBwcmVmZXJlbmNlcyB5ZXRcbiAgICBpZiAoT2JqZWN0LmtleXModXNlckFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwKS5sZW5ndGgpIHtcbiAgICAgIGlzQWxlcnRFbmFibGVkID0gZmFsc2U7XG5cbiAgICAgIC8vIEdldHMgdGhlIHRyZWVJZCBvZiB0aGUgdGVuYW50IC0gSW4gY2FzZSB0aGUgdXNlciBzZWxlY3RlZCBcIkFsbCBUZW5hbnQgUGFya2luZyBMb3RzXCJcbiAgICAgIGNvbnN0IHRlbmFudFRyZWVJZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2Vzc2lvblN0YXRlLnRlbmFudEluZm8pPy50cmVlSWQ7XG5cbiAgICAgIC8vIEdldHMgdGhlIHRyZWUgcGFyayBJZCBvZiB0aGUgYWxlcnRcbiAgICAgIGNvbnN0IGFsZXJ0VHJlZVBhcmtJZCA9IHRoaXMuZ2V0Q2xvdWRQYXJrSWQoYWxlcnQsIGd1aWQpO1xuXG4gICAgICAvLyBXZSBHZXQgdGhlIHNldHRpbmcgb2YgdGhlIFBhcmssIFBhcmVudFBhcmsgb3IgUGFya3NUcmVlUm9vdFxuICAgICAgY29uc3QgZmFjaWxpdHlQcmVmZXJlbmNlc01hcDogRmFjaWxpdHlQcmVmZXJlbmNlc01hcCA9IHVzZXJBbGVydFR5cGVQcmVmZXJlbmNlc01hcFthbGVydFRyZWVQYXJrSWRdIHx8IHVzZXJBbGVydFR5cGVQcmVmZXJlbmNlc01hcFt0ZW5hbnRUcmVlSWRdO1xuXG4gICAgICAvLyBXZSBjaGVjayBpZiB0aGUgZmFjaWxpdHkgd2FzIHNlbGVjdGVkXG4gICAgICBpZiAoZmFjaWxpdHlQcmVmZXJlbmNlc01hcCkge1xuICAgICAgICBjb25zdCBhbGVydFR5cGVQcmVmZXJlbmNlc01hcDogQWxlcnRUeXBlUHJlZmVyZW5jZXNNYXAgPSBmYWNpbGl0eVByZWZlcmVuY2VzTWFwW2FsZXJ0LmV2ZW50RGVzY3JpcHRpb25dO1xuXG4gICAgICAgIC8vIFdlIGNoZWNrIGlmIHRoZSBhbGVydCB0eXBlIHdhcyBzZWxlY3RlZFxuICAgICAgICBpZiAoYWxlcnRUeXBlUHJlZmVyZW5jZXNNYXApIHtcbiAgICAgICAgICBjb25zdCBhbGVydERldmljZVR5cGU6IEFsZXJ0c0RldmljZVR5cGUgPSB0aGlzLmdldEFsZXJ0c0RldmljZVR5cGUoYWxlcnQpXG5cbiAgICAgICAgICAvLyBXZSBjaGVjayB0aGUgaWYgdGhlIGRldmljZSB0eXBlIHdhcyBzZWxlY3RlZFxuICAgICAgICAgIGlzQWxlcnRFbmFibGVkID0gYWxlcnRUeXBlUHJlZmVyZW5jZXNNYXBbYWxlcnREZXZpY2VUeXBlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc0FsZXJ0RW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxlcnRzRGV2aWNlVHlwZShhbGVydDogQWxlcnREdG8pOiBBbGVydHNEZXZpY2VUeXBlIHtcbiAgICBsZXQgYWxlcnREZXZpY2VUeXBlOiBBbGVydHNEZXZpY2VUeXBlO1xuICAgIGNvbnN0IGFsZXJ0c0RldmljZVR5cGU6IEFsZXJ0c0RldmljZVR5cGVbXSA9IERldmljZVR5cGVzQWxlcnRzTWFwcGluZy5nZXQoYWxlcnQuZGV2aWNlVHlwZSk7XG5cbiAgICBzd2l0Y2ggKGFsZXJ0LmRldmljZVR5cGUpIHtcbiAgICAgIGNhc2UgRGV2aWNlVHlwZS5DYXNoOlxuICAgICAgICBhbGVydERldmljZVR5cGUgPSBhbGVydC5yZWFkZXJJRCA9PT0gMCA/IEFsZXJ0c0RldmljZVR5cGUuTWFzdGVyIDogQWxlcnRzRGV2aWNlVHlwZS5DYXNoUmVnaXN0ZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYWxlcnREZXZpY2VUeXBlID0gYWxlcnRzRGV2aWNlVHlwZT8uWzBdO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gYWxlcnREZXZpY2VUeXBlO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkR5YW5taWNQcmljaW5nQ29uZGl0aW9uQ2hhbmdlKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkZvckNsb3NpbmcoY3R4LCBub3RpZmljYXRpb24sIGd1aWQpO1xuXG4gICAgbGV0IGlzRmFsbGVuQmFja1RvRGVmYXVsdFJhdGUgPSAhbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmlzVHJpZ2dlcmVkO1xuICAgIGxldCBpc0F1dG9tYXRpY1N3aXRjaFJhdGUgPSBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24udHJpZ2dlckFjdGlvbiA9PT0gRHluYW1pY1ByaWNpbmdUcmlnZ2VyQWN0aW9uLkF1dG9tYXRpY1N3aXRjaFJhdGU7XG4gICAgaWYgKGlzRmFsbGVuQmFja1RvRGVmYXVsdFJhdGUpIHtcbiAgICAgIC8vIGhhbmRsZSBub3RpZmljYXRpb24gaW5kaWNhdGluZyB0aGUgcmF0ZSBoYXMgZmFsbGVuIGJhY2sgdG8gdGhlIGRlZmF1bHQgcmF0ZVxuICAgICAgdGhpcy5zaG93UmF0ZUZhbGxlbkJhY2tUb0RlZmF1bHRSYXRlVG9hc3RNZXNzYWdlKG5vdGlmaWNhdGlvbikudGhlbigpO1xuICAgIH0gZWxzZSBpZiAoaXNBdXRvbWF0aWNTd2l0Y2hSYXRlKSB7XG4gICAgICAvLyBoYW5kbGUgbm90aWZpY2F0aW9uIGluZGljYXRpbmcgdGhlIHJhdGUgaGFzIGF1dG9tYXRpYyBzd2l0Y2hcbiAgICAgIHRoaXMuc2hvd1JhdGVBdXRvbWF0aWNTd2l0Y2hUb2FzdE1lc3NhZ2Uobm90aWZpY2F0aW9uKS50aGVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIGRvIG5vdCBvcGVuIHRoZSBub3RpZmljYXRpb24gaWYgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb25cbiAgICAgIGNvbnN0IGhhc1Blcm1pc3Npb24gPSB0aGlzLmZhY2lsaXR5U2VydmljZS5oYXNQZXJtaXNzaW9uVHlwZUJ5UGFyayhcbiAgICAgICAgUGVybWlzc2lvblR5cGUuTG90Q29uZmlndXJhdGlvbkR5bmFtaWNQcmljaW5nLCBub3RpZmljYXRpb24uZ3VpZCwgbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLnBhcmtpbmdMb3RJZFxuICAgICAgKTtcbiAgICAgIC8vIFdlIGRvIG5vdCBvcGVuIHRoZSBub3RpZmljYXRpb24gaW4gbW9iaWxlIG1vZGVcbiAgICAgIGNvbnN0IGlzTW9iaWxlQXBwTW9kZSA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5hcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZTtcbiAgICAgIGNvbnN0IGlzQ2NNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpID09PSBBcHBNb2R1bGUuQ2M7XG4gICAgICBpZiAoIWlzTW9iaWxlQXBwTW9kZSAmJiBpc0NjTW9kdWxlICYmIGhhc1Blcm1pc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcGVuRHluYW1pY1ByaWNpbmdDb25kaXRpb25Ob3RpZmljYXRpb25EaWFsb2cobm90aWZpY2F0aW9uLCBndWlkKTtcblxuICAgICAgICAvLyBQdXNoIHRoZSBuZXcgbm90aWZpY2F0aW9uIHRvIHRoZSBhcnJheSBhbmQgc2F2ZSBpbiBzdGF0ZVxuICAgICAgICBub3RpZmljYXRpb24udGltZUFnb0luU2Vjb25kcyA9IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZ2V0VGltZUFnb0luU2Vjb25kcyhub3RpZmljYXRpb24pO1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb25zID0geyAuLi5jdHguZ2V0U3RhdGUoKS5jb25maWcgfS5ub3RpZmljYXRpb25zO1xuICAgICAgICBub3RpZmljYXRpb25zLnVuc2hpZnQobm90aWZpY2F0aW9uKTtcblxuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgY29uZmlnOiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmNvbnZlcnROb3RpZmljYXRpb25zVG9Ob3RpZmljYXRpb25zQ29uZmlnKG5vdGlmaWNhdGlvbnMpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uQWxlcnRDaGFuZ2UoY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFsZXJ0ID0gbm90aWZpY2F0aW9uPy5hbGVydDtcbiAgICBpZiAoYWxlcnQgJiYgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5pc0FsZXJ0VHlwZURlZmluZWQoYWxlcnQuZXZlbnREZXNjcmlwdGlvbikpIHtcbiAgICAgIHRoaXMuaGFuZGxlQWxlcnRGb3JDbG9zaW5nKGN0eCwgYWxlcnQsIGd1aWQpO1xuXG4gICAgICBpZiAoYWxlcnQuZXZlbnRTdGF0ZSAmJiB0aGlzLmlzQWxlcnRFbmFibGVkRm9yVXNlcihhbGVydCwgZ3VpZCkpIHtcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHsgLi4uY3R4LmdldFN0YXRlKCkuY29uZmlnIH0ubm90aWZpY2F0aW9ucztcblxuICAgICAgICBpZiAoIWFsZXJ0LmRldmljZU5hbWUpIHtcbiAgICAgICAgICBjb25zdCBwYXJrRGV2aWNlcyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoUGFya01hbmFnZXJTdGF0ZS5kZXZpY2VzKTtcbiAgICAgICAgICBhbGVydC5kZXZpY2VOYW1lID0gcGFya0RldmljZXM/LmZpbmQoZCA9PiBkLmlkID09PSBhbGVydC5kZXZpY2VJRCk/Lm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWFsZXJ0LnBhcmtOYW1lKSB7XG4gICAgICAgICAgY29uc3QgbG90c01hcCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mYWNpbGl0eURpY3Rpb25hcnkpW2d1aWRdO1xuICAgICAgICAgIGlmIChsb3RzTWFwKSB7XG4gICAgICAgICAgICBhbGVydC5wYXJrTmFtZSA9IGxvdHNNYXBbYWxlcnQucGFya0lkXT8ubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhbGVydC5wYXJrWm9uZU5hbWUgPSBcIlwiO1xuXG4gICAgICAgIC8vIFdlIGRvIG5vdCBvcGVuIHRoZSBub3RpZmljYXRpb24gaW4gbW9iaWxlIG1vZGVcbiAgICAgICAgY29uc3QgaXNNb2JpbGVBcHBNb2RlID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmFwcFR5cGUgPT09IEFwcFR5cGUuTW9iaWxlO1xuICAgICAgICBjb25zdCBpc0NjTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuYXBwTW9kdWxlKSA9PT0gQXBwTW9kdWxlLkNjO1xuICAgICAgICBpZiAoIWlzTW9iaWxlQXBwTW9kZSAmJiBpc0NjTW9kdWxlKSB7XG4gICAgICAgICAgc3dpdGNoIChhbGVydC5ldmVudERlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvci5MT1NUX1RJQ0tFVDpcbiAgICAgICAgICAgIGNhc2UgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLkxSUF9OT1RfTUFUQ0g6XG4gICAgICAgICAgICAgIHRoaXMub3BlbkNyaXRpY2FsQWxlcnREaWFsb2coYWxlcnQsIGd1aWQpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRoaXMuZGlzcGxheUFsZXJ0KGN0eCwgYWxlcnQsIGd1aWQpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQdXNoIHRoZSBuZXcgYWxlcnQgdG8gdGhlIGFycmF5IGFuZCBzYXZlIGluIHN0YXRlXG4gICAgICAgIG5vdGlmaWNhdGlvbi50aW1lQWdvSW5TZWNvbmRzID0gdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5nZXRUaW1lQWdvSW5TZWNvbmRzKG5vdGlmaWNhdGlvbik7XG4gICAgICAgIG5vdGlmaWNhdGlvbnMudW5zaGlmdChub3RpZmljYXRpb24pO1xuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBjb25maWc6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcobm90aWZpY2F0aW9ucyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2xvdWRQYXJrSWQoYWxlcnQ6IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IGFsZXJ0UGFya0lkID0gYWxlcnQubXVsdGlQYXJrUGFyZW50SWQgPiAwID8gYWxlcnQubXVsdGlQYXJrUGFyZW50SWQgOiBhbGVydC5wYXJrSWQ7XG4gICAgY29uc3QgbG90c01hcCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mYWNpbGl0eURpY3Rpb25hcnkpW2d1aWRdO1xuICAgIHJldHVybiBsb3RzTWFwW2FsZXJ0UGFya0lkXT8uY2xvdWRJZDtcbiAgfVxuXG4gIHByaXZhdGUgcGtNYXRjaGVzID0gKG5vdGlmaWNhdGlvbkR0bzogTm90aWZpY2F0aW9uRHRvLCBub3RpZmljYXRpb25QSzogc3RyaW5nKSA9PiB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbkR0bywgbm90aWZpY2F0aW9uRHRvLmd1aWQpID09PSBub3RpZmljYXRpb25QSztcbiAgcHJpdmF0ZSBzdGF0ZU1hdGNoZXMgPSAoYWxlcnREdG86IEFsZXJ0RHRvLCBldmVudFN0YXRlOiBib29sZWFuKSA9PiBhbGVydER0by5ldmVudFN0YXRlID09PSBldmVudFN0YXRlO1xuICBwcml2YXRlIGFsZXJ0UEsgPSAoYWxlcnREdG86IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpID0+XG4gICAgYCR7Z3VpZH1fJHthbGVydER0by5wYXJrSWR9XyR7YWxlcnREdG8ucmVhZGVySUR9XyR7YWxlcnREdG8uZGV2aWNlSUR9XyR7YWxlcnREdG8uZXZlbnREZXNjcmlwdGlvbn1gO1xuICBwcml2YXRlIG5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbkR0bzogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBsZXQga2V5OiBzdHJpbmcgPSAnJztcbiAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbkR0by50eXBlKSB7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuQWxlcnQ6XG4gICAgICAgIGtleSA9IHRoaXMuYWxlcnRQSyhub3RpZmljYXRpb25EdG8uYWxlcnQsIGd1aWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOlxuICAgICAgICBrZXkgPSBgJHtndWlkfV8ke25vdGlmaWNhdGlvbkR0by5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5pZH1gO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5sb2coXCJ1bnN1cHBvcnRlZCBub3RpZmljYXRpb24gdHlwZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleTtcbiAgfVxufVxuIl19
@@ -33,7 +33,7 @@ export class CommandCenterModuleResolver {
33
33
  }
34
34
  subscribeToHandleAlertNotificationEvents(smartparkBasic) {
35
35
  for (const guid of Object.keys(smartparkBasic.smartParks)) {
36
- const notificationSubscriptionDto = this.notificationEventService.getNotificationSubscription(NotificationEventType.HandleAlert, guid);
36
+ const notificationSubscriptionDto = this.notificationEventService.getNotificationSubscription(NotificationEventType.HandleNotification, guid);
37
37
  notificationSubscriptionDto.unsubscribe = false;
38
38
  this.signalR.subscribeForNotifications(notificationSubscriptionDto);
39
39
  }
@@ -44,4 +44,4 @@ export class CommandCenterModuleResolver {
44
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommandCenterModuleResolver, decorators: [{
45
45
  type: Injectable
46
46
  }], ctorParameters: function () { return [{ type: i1.SmartparkService }, { type: i2.SignalR }, { type: i3.RealtimeEventService }, { type: i4.NotificationEventService }, { type: i5.Store }]; } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1jZW50ZXItbW9kdWxlLnJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9yZXNvbHZlcnMvY29tbWFuZC1jZW50ZXItbW9kdWxlLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUE0RCxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7O0FBTW5KLE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFBb0IsZ0JBQWtDLEVBQzVDLE9BQWdCLEVBQ2hCLG9CQUEwQyxFQUMxQyx3QkFBa0QsRUFDbEQsS0FBWTtRQUpGLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDNUMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsVUFBSyxHQUFMLEtBQUssQ0FBTztJQUN0QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxjQUFjLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ25FLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLHlCQUF5QixDQUFDLGNBQW1DO1FBQ25FLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8sd0NBQXdDLENBQUMsY0FBbUM7UUFDbEYsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN6RCxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdkksMkJBQTJCLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDckU7SUFDSCxDQUFDOytHQWhDVSwyQkFBMkI7bUhBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNldEJhc2ljTWVudUFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHkuYWN0aW9ucyc7XG5pbXBvcnQgeyBNZW51TG9hZEFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvc2lkZW5hdi9zaWRlbmF2LmFjdGlvbnMnO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBOb3RpZmljYXRpb25FdmVudFR5cGUsIFNtYXJ0UGFya1dyYXBwZXJEdG8sIFNtYXJ0UGFya1dyYXBwZXJEdG9IdHRwUmVzcG9uc2VEYXRhIH0gZnJvbSAnLi4vc2VydmljZS1wcm94eS9lZGdlLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBSZWFsdGltZUV2ZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlYWx0aW1lLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmFsUiB9IGZyb20gJy4uL3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZSc7XG5pbXBvcnQgeyBTbWFydHBhcmtTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc21hcnRwYXJrLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tbWFuZENlbnRlck1vZHVsZVJlc29sdmVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNtYXJ0cGFya1NlcnZpY2U6IFNtYXJ0cGFya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaWduYWxSOiBTaWduYWxSLFxuICAgIHByaXZhdGUgcmVhbHRpbWVFdmVudFNlcnZpY2U6IFJlYWx0aW1lRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlOiBOb3RpZmljYXRpb25FdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUpIHtcbiAgfVxuXG4gIHJlc29sdmUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxTbWFydFBhcmtXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE1lbnVMb2FkQWN0aW9uKFtdLCBBcHBNb2R1bGUuQ2MpKTtcbiAgICB0aGlzLnNtYXJ0cGFya1NlcnZpY2UuZ2V0U21hcnRwYXJrQmFzaWNBbGwoQXBwTW9kdWxlLkNjKS5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKHNtYXJ0cGFya0Jhc2ljID0+IHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0QmFzaWNNZW51QWN0aW9uKHNtYXJ0cGFya0Jhc2ljLmRhdGEuc21hcnRQYXJrcywgQXBwTW9kdWxlLkNjKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9SZWFsVGltZUV2ZW50cyhzbWFydHBhcmtCYXNpYy5kYXRhKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb0hhbmRsZUFsZXJ0Tm90aWZpY2F0aW9uRXZlbnRzKHNtYXJ0cGFya0Jhc2ljLmRhdGEpO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9SZWFsVGltZUV2ZW50cyhzbWFydHBhcmtCYXNpYzogU21hcnRQYXJrV3JhcHBlckR0bykge1xuICAgIGNvbnN0IHBhcmtzU3Vic2NyaXB0aW9uID0gdGhpcy5yZWFsdGltZUV2ZW50U2VydmljZS5nZXRDcm9zc1BhcmtTdWJzY3JpcHRpb25zKHNtYXJ0cGFya0Jhc2ljKTtcbiAgICB0aGlzLnNpZ25hbFIuc3Vic2NyaWJlRm9yUmVhbHRpbWUocGFya3NTdWJzY3JpcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0hhbmRsZUFsZXJ0Tm90aWZpY2F0aW9uRXZlbnRzKHNtYXJ0cGFya0Jhc2ljOiBTbWFydFBhcmtXcmFwcGVyRHRvKSB7XG4gICAgZm9yIChjb25zdCBndWlkIG9mIE9iamVjdC5rZXlzKHNtYXJ0cGFya0Jhc2ljLnNtYXJ0UGFya3MpKSB7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8gPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXROb3RpZmljYXRpb25TdWJzY3JpcHRpb24oTm90aWZpY2F0aW9uRXZlbnRUeXBlLkhhbmRsZUFsZXJ0LCBndWlkKTtcbiAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0by51bnN1YnNjcmliZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zaWduYWxSLnN1YnNjcmliZUZvck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1jZW50ZXItbW9kdWxlLnJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9yZXNvbHZlcnMvY29tbWFuZC1jZW50ZXItbW9kdWxlLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUE0RCxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7O0FBTW5KLE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFBb0IsZ0JBQWtDLEVBQzVDLE9BQWdCLEVBQ2hCLG9CQUEwQyxFQUMxQyx3QkFBa0QsRUFDbEQsS0FBWTtRQUpGLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDNUMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsVUFBSyxHQUFMLEtBQUssQ0FBTztJQUN0QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxjQUFjLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ25FLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLHlCQUF5QixDQUFDLGNBQW1DO1FBQ25FLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8sd0NBQXdDLENBQUMsY0FBbUM7UUFDbEYsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN6RCxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5SSwyQkFBMkIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUNyRTtJQUNILENBQUM7K0dBaENVLDJCQUEyQjttSEFBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2V0QmFzaWNNZW51QWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IE1lbnVMb2FkQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9zaWRlbmF2L3NpZGVuYXYuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBNb2R1bGUsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgU21hcnRQYXJrV3JhcHBlckR0bywgU21hcnRQYXJrV3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGEgfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L2VkZ2Utc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IFJlYWx0aW1lRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVhbHRpbWUtZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTaWduYWxSIH0gZnJvbSAnLi4vc2VydmljZXMvc2lnbmFsci5zZXJ2aWNlJztcbmltcG9ydCB7IFNtYXJ0cGFya1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zbWFydHBhcmsuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21tYW5kQ2VudGVyTW9kdWxlUmVzb2x2ZXIge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc21hcnRwYXJrU2VydmljZTogU21hcnRwYXJrU2VydmljZSxcbiAgICBwcml2YXRlIHNpZ25hbFI6IFNpZ25hbFIsXG4gICAgcHJpdmF0ZSByZWFsdGltZUV2ZW50U2VydmljZTogUmVhbHRpbWVFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25FdmVudFNlcnZpY2U6IE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSkge1xuICB9XG5cbiAgcmVzb2x2ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPFNtYXJ0UGFya1dyYXBwZXJEdG9IdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTWVudUxvYWRBY3Rpb24oW10sIEFwcE1vZHVsZS5DYykpO1xuICAgIHRoaXMuc21hcnRwYXJrU2VydmljZS5nZXRTbWFydHBhcmtCYXNpY0FsbChBcHBNb2R1bGUuQ2MpLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoc21hcnRwYXJrQmFzaWMgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRCYXNpY01lbnVBY3Rpb24oc21hcnRwYXJrQmFzaWMuZGF0YS5zbWFydFBhcmtzLCBBcHBNb2R1bGUuQ2MpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1JlYWxUaW1lRXZlbnRzKHNtYXJ0cGFya0Jhc2ljLmRhdGEpO1xuICAgICAgICB0aGlzLnN1YnNjcmliZVRvSGFuZGxlQWxlcnROb3RpZmljYXRpb25FdmVudHMoc21hcnRwYXJrQmFzaWMuZGF0YSk7XG4gICAgICB9KTtcblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1JlYWxUaW1lRXZlbnRzKHNtYXJ0cGFya0Jhc2ljOiBTbWFydFBhcmtXcmFwcGVyRHRvKSB7XG4gICAgY29uc3QgcGFya3NTdWJzY3JpcHRpb24gPSB0aGlzLnJlYWx0aW1lRXZlbnRTZXJ2aWNlLmdldENyb3NzUGFya1N1YnNjcmlwdGlvbnMoc21hcnRwYXJrQmFzaWMpO1xuICAgIHRoaXMuc2lnbmFsUi5zdWJzY3JpYmVGb3JSZWFsdGltZShwYXJrc1N1YnNjcmlwdGlvbik7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvSGFuZGxlQWxlcnROb3RpZmljYXRpb25FdmVudHMoc21hcnRwYXJrQmFzaWM6IFNtYXJ0UGFya1dyYXBwZXJEdG8pIHtcbiAgICBmb3IgKGNvbnN0IGd1aWQgb2YgT2JqZWN0LmtleXMoc21hcnRwYXJrQmFzaWMuc21hcnRQYXJrcykpIHtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0byA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmdldE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbihOb3RpZmljYXRpb25FdmVudFR5cGUuSGFuZGxlTm90aWZpY2F0aW9uLCBndWlkKTtcbiAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0by51bnN1YnNjcmliZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zaWduYWxSLnN1YnNjcmliZUZvck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==