@tiba-spark/client-shared-lib 25.3.0-50010 → 25.3.0-50012

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.
@@ -89,6 +89,8 @@ export class SignalR {
89
89
  })
90
90
  .withAutomaticReconnect(new TibaRetryPolicy(maxConsecutiveFailedRetryCount))
91
91
  .build();
92
+ this.connection.keepAliveIntervalInMilliseconds = 8000;
93
+ this.connection.serverTimeoutInMilliseconds = 30000;
92
94
  this.connection.onreconnecting((error) => {
93
95
  datadogLogs.logger.info('Attempting to reconnect:', error);
94
96
  });
@@ -443,4 +445,4 @@ export function getSecondsBackoff(retryCount) {
443
445
  const [minSeconds, maxSeconds] = delaysTableInSeconds[retryCount] || [0, 0];
444
446
  return (Math.floor(Math.random() * (maxSeconds - minSeconds + 1)) + minSeconds) * ONE_SECOND_IN_MILLISECONDS;
445
447
  }
446
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQTRCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDakcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQzlNLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQ0FBbUMsRUFBRSxrQ0FBa0MsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pLLE9BQU8sRUFB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b0JBQW9CLEdBQWlDO1FBQ3pELENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVO1FBQ3RCLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZO1FBQ3pCLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZO1FBQ3pCLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZO1FBQ3pCLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRyxZQUFZO0tBQzdCLENBQUM7SUFDRixNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRywwQkFBMEIsQ0FBQztBQUMvRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFN0YXR1c0NvZGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGF0YWRvZ0xvZ3MgfSBmcm9tICdAZGF0YWRvZy9icm93c2VyLWxvZ3MnO1xuaW1wb3J0IHsgSHR0cFRyYW5zcG9ydFR5cGUsIEh1YkNvbm5lY3Rpb24sIEh1YkNvbm5lY3Rpb25CdWlsZGVyLCBIdWJDb25uZWN0aW9uU3RhdGUgfSBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xuaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tICdAbmd4cy1sYWJzL2Rpc3BhdGNoLWRlY29yYXRvcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgQXBwVHlwZSB9IGZyb20gJy4uL2VudW1zL2FwcC10eXBlLmVudW0nO1xuaW1wb3J0IHsgQWxlcnRDaGFuZ2VkQWN0aW9uLCBIYW5kbGVBbGVydHNBY3Rpb24sIEhhbmRsZWROb3RpZmljYXRpb25BY3Rpb24sIEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbiwgTm90aWZpY2F0aW9uQ2hhbmdlZEFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvYWxlcnRzLWFuZC1ub3RpZmljYXRpb25zL2FsZXJ0cy1hbmQtbm90aWZpY2F0aW9ucy5hY3Rpb25zJztcbmltcG9ydCB7IFNpZ25hbFJSZWZyZXNoVG9rZW5BY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2F1dGgvcmVmcmVzaC10b2tlbi5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5Q2hhbmdlZEFjdGlvbiwgRmFjaWxpdHlSZW1vdGVDb21tYW5kRXhlY3V0ZWRBY3Rpb24sIFNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWRBY3Rpb24sIFpvbmVDaGFuZ2VkQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IFBhcmtBY3Rpdml0eUNoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL3BhcmstYWN0aXZpdGllcy9wYXJrLWFjdGl2aXRpZXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBEZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24sIERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbiwgRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbiwgTHByVHJhbnNhY3Rpb25zQ2hhbmdlZEFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvcGFyay1tYW5hZ2VyL3BhcmstbWFuYWdlci5hY3Rpb25zJztcbmltcG9ydCB7IFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7IEFkZFNtYXJ0cGFya0FjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmstZGlhbG9nLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWxlcnREdG8sIE5vdGlmaWNhdGlvbkR0bywgU21hcnRwYXJrRHRvIH0gZnJvbSAnLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHtcbiAgRGV2aWNlRXZlbnREdG8sIERldmljZVN0YXR1c0R0bywgRXZlbnRBY3Rpdml0eUR0bywgRmFjaWxpdHlEdG8sIEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50LFxuICBGYWNpbGl0eVJlbW90ZUNvbW1hbmRUeXBlcywgTHByVHJhbnNhY3Rpb25EdG8sIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLFxuICBSVEV2ZW50U3Vic2NyaXB0aW9uRHRvLCBSdEV2ZW50VHlwZSwgU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvLCBab25lRHRvXG59IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4vYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9nZW5lcmFsLWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlYWx0aW1lRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9yZWFsdGltZS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgU2lnbmFsUk9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBqc29uUGF5bG9hZDogc3RyaW5nKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJUT2JqZWN0T2JqZWN0IGV4dGVuZHMgU2lnbmFsUk9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBydEV2ZW50VHlwZTogUnRFdmVudFR5cGUsIHB1YmxpYyBwYXJrSWQ6IG51bWJlciwgcHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGpzb25QYXlsb2FkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihndWlkLCBqc29uUGF5bG9hZCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNwYXJrTm90aWZpY2F0aW9uIGV4dGVuZHMgU2lnbmFsUk9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBub3RpZmljYXRpb25UeXBlOiBOb3RpZmljYXRpb25FdmVudFR5cGUsIHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBpZGVudGlmaWVyOiBzdHJpbmcsIHB1YmxpYyBqc29uUGF5bG9hZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoZ3VpZCwganNvblBheWxvYWQpO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaWduYWxSIHtcblxuICBwdWJsaWMgY29ubmVjdGlvbjogSHViQ29ubmVjdGlvbjtcbiAgcHVibGljIHN1YnNjcmlwdGlvblF1ZXVlOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWU6IGFueVtdID0gW107XG5cbiAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTtcbiAgcHJvdGVjdGVkIHJlYWx0aW1lRXZlbnRTZXJ2aWNlOiBSZWFsdGltZUV2ZW50U2VydmljZTtcbiAgcHJvdGVjdGVkIG5vdGlmaWNhdGlvbkV2ZW50U2VydmljZTogTm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2U7XG4gIHByb3RlY3RlZCBnZW5lcmFsQWN0aW9uU2VydmljZTogR2VuZXJhbEFjdGlvblNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMuc3RvcmUgPSBpbmplY3Rvci5nZXQoU3RvcmUpO1xuICAgIHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoUmVhbHRpbWVFdmVudFNlcnZpY2UpO1xuICAgIHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSk7XG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKTtcbiAgICB0aGlzLmFwcENvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWdTZXJ2aWNlKTtcbiAgICB0aGlzLmdlbmVyYWxBY3Rpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEdlbmVyYWxBY3Rpb25TZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0UmVhbHRpbWVFdmVudExpc3RlbmVycygpIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKTtcbiAgICBjb25zdCBiYXNlVXJsID0gY29uZmlnLmFwcFR5cGUgPT09IEFwcFR5cGUuTW9iaWxlID8gY29uZmlnLmFwaUJhc2VVUkwgOiAnJztcbiAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS9yZWFsdGltZWA7XG5cbiAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgUlQgQVBJIEJhc2UgVXJsIC0gJHt1cmx9YCk7XG5cbiAgICBjb25zdCBtYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQgPSBjb25maWcuc2lnbmFsUi5tYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQ7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBuZXcgSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxuICAgICAgLndpdGhVcmwodXJsLCB7XG4gICAgICAgIGFjY2Vzc1Rva2VuRmFjdG9yeTogKCkgPT4gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuYWNjZXNzVG9rZW4sXG4gICAgICAgIHNraXBOZWdvdGlhdGlvbjogdHJ1ZSwgIC8vIFNraXAgdGhlIG5lZ290aWF0aW9uIHN0ZXBcbiAgICAgICAgdHJhbnNwb3J0OiBIdHRwVHJhbnNwb3J0VHlwZS5XZWJTb2NrZXRzICAvLyBVc2UgV2ViU29ja2V0cyBkaXJlY3RseVxuICAgICAgfSlcbiAgICAgIC53aXRoQXV0b21hdGljUmVjb25uZWN0KG5ldyBUaWJhUmV0cnlQb2xpY3kobWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50KSlcbiAgICAgIC5idWlsZCgpO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0aW5nKChlcnJvcikgPT4ge1xuICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oJ0F0dGVtcHRpbmcgdG8gcmVjb25uZWN0OicsIGVycm9yKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbi5vbmNsb3NlKChlcnJvcikgPT4ge1xuICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gY2xvc2VkIGFmdGVyIGFsbCByZXRyeSBhdHRlbXB0czonLCBlcnJvcik7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24ub25yZWNvbm5lY3RlZCgoY29ubmVjdGlvbklkKSA9PiB7XG4gICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgU3VjY2Vzc2Z1bGx5IHJlY29ubmVjdGVkIFNJR05BTFIhLiBDb25uZWN0aW9uSWQ6ICR7Y29ubmVjdGlvbklkfWApO1xuXG4gICAgICB0aGlzLmNoZWNrRm9yVXBkYXRlKCk7XG4gICAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgICAgaWYgKCEhZ3VpZCkge1xuICAgICAgICB0aGlzLnNldFNwYXJrQ29yZUNvbm5lY3Rpb24odHJ1ZSwgZ3VpZCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZWNvbm5lY3RSdEV2ZW50c1N1YnNjcmlwdGlvbnMgPSB0aGlzLnJlYWx0aW1lRXZlbnRTZXJ2aWNlLmdldFN1YnNjcmlwdGlvbkZvclJlY29ubmVjdCgpO1xuICAgICAgdGhpcy5pbnZva2VSZWFsdGltZVJlZ2lzdHJhdGlvbihyZWNvbm5lY3RSdEV2ZW50c1N1YnNjcmlwdGlvbnMsIHRoaXMuaGFuZGxlUmVhbFRpbWVBd2FpdGluZ1N1YnNjcmlwdGlvbnMuYmluZCh0aGlzKSk7XG5cbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnMgPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXRTdWJzY3JpcHRpb25Gb3JSZWNvbm5lY3QoKTtcbiAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnMuZm9yRWFjaChub3RpZmljYXRpb25TdWJzY3JpcHRpb24gPT4ge1xuICAgICAgICB0aGlzLmludm9rZU5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uQXdhaXRpbmdTdWJzY3JpcHRpb24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbi5vbignUnRFdmVudCcsIChydEV2ZW50VHlwZTogUnRFdmVudFR5cGUsIHBhcmtJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIGpzb25QYXlsb2FkOiBzdHJpbmcpID0+IHtcbiAgICAgIG9mKG5ldyBSVE9iamVjdE9iamVjdChydEV2ZW50VHlwZSwgcGFya0lkLCBndWlkLCBqc29uUGF5bG9hZCkpXG4gICAgICAgIC5waXBlKHRoaXMuaGFuZGxlSnNvblBheWxvYWRUb0xvd2VyKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoUnRFdmVudChyZXMgYXMgUlRPYmplY3RPYmplY3QpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbi5vbignTm90aWZpY2F0aW9uJywgKHR5cGU6IE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgZ3VpZDogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcsIGpzb25QYXlsb2FkOiBzdHJpbmcpID0+IHtcbiAgICAgIG9mKG5ldyBTcGFya05vdGlmaWNhdGlvbih0eXBlLCBndWlkLCBpZGVudGlmaWVyLCBqc29uUGF5bG9hZCkpXG4gICAgICAgIC5waXBlKHRoaXMuaGFuZGxlSnNvblBheWxvYWRUb0xvd2VyKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoTm90aWZpY2F0aW9uKHJlcyBhcyBTcGFya05vdGlmaWNhdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoZWNrRm9yVXBkYXRlKCk6IHZvaWQ7XG5cbiAgcHVibGljIGNvbm5lY3QoKSB7XG4gICAgdGhpcy5fY29ubmVjdCh0aGlzLmNvbm5lY3Rpb24pO1xuICB9XG5cbiAgcHVibGljIGRpc2Nvbm5lY3QoKSB7XG4gICAgdGhpcy5fZGlzY29ubmVjdCh0aGlzLmNvbm5lY3Rpb24pO1xuICB9XG5cbiAgc3Vic2NyaWJlRm9yUmVhbHRpbWUocnRFdmVudFN1YnNjcmlwdGlvbnM6IFJURXZlbnRTdWJzY3JpcHRpb25EdG8sIHRyaWdnZXJGdW5jdGlvbj86ICgpID0+IHZvaWQpIHtcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlICE9PSBIdWJDb25uZWN0aW9uU3RhdGUuQ29ubmVjdGVkKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uUXVldWUucHVzaCgoKSA9PiB0aGlzLnN1YnNjcmliZUZvclJlYWx0aW1lKHJ0RXZlbnRTdWJzY3JpcHRpb25zLCB0cmlnZ2VyRnVuY3Rpb24pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YSA9IHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UuaGFuZGxlUmVhbHRpbWVFdmVudHNTdWJzY3JpcHRpb25zKHJ0RXZlbnRTdWJzY3JpcHRpb25zKTtcbiAgICAgICAgaWYgKHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YS5zdWJzY3JpYmUubGVuZ3RoIHx8IHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YS51blN1YnNjcmliZS5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmludm9rZVJlYWx0aW1lUmVnaXN0cmF0aW9uKHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YSwgdHJpZ2dlckZ1bmN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN1YnNjcmliZUZvck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uOiBOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8sIHRyaWdnZXJGdW5jdGlvbj86ICgpID0+IHZvaWQpIHtcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlICE9PSBIdWJDb25uZWN0aW9uU3RhdGUuQ29ubmVjdGVkKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWUucHVzaCgoKSA9PiB0aGlzLnN1YnNjcmliZUZvck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLCB0cmlnZ2VyRnVuY3Rpb24pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkRlbHRhID0gdGhpcy5ub3RpZmljYXRpb25FdmVudFNlcnZpY2UuaGFuZGxlTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xuICAgICAgICBpZiAoISFub3RpZmljYXRpb25TdWJzY3JpcHRpb25EZWx0YSkge1xuICAgICAgICAgIHRoaXMuaW52b2tlTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkRlbHRhLCB0cmlnZ2VyRnVuY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnZva2VSZWFsdGltZVJlZ2lzdHJhdGlvbihydEV2ZW50U3Vic2NyaXB0aW9uczogUlRFdmVudFN1YnNjcmlwdGlvbkR0bywgdHJpZ2dlckZ1bmN0aW9uPzogKCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGFwcE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XG4gICAgaWYgKHJ0RXZlbnRTdWJzY3JpcHRpb25zLnVzZXJJZCkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uLmludm9rZTxSVEV2ZW50U3Vic2NyaXB0aW9uRHRvPignUmVnaXN0ZXJQYXJrJywgcnRFdmVudFN1YnNjcmlwdGlvbnMsIGFwcE1vZHVsZSkudGhlbigoc3ViVG8pID0+IHtcbiAgICAgICAgaWYgKHRyaWdnZXJGdW5jdGlvbikge1xuICAgICAgICAgIHRyaWdnZXJGdW5jdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGludm9rZU5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihub3RpZmljYXRpb25TdWJzY3JpcHRpb246IE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0bywgdHJpZ2dlckZ1bmN0aW9uPzogKCkgPT4gdm9pZCkge1xuICAgIGlmIChub3RpZmljYXRpb25TdWJzY3JpcHRpb24gJiYgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLnVzZXJJZCkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uLmludm9rZTxOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8+KCdSZWdpc3Rlck5vdGlmaWNhdGlvbnMnLCBub3RpZmljYXRpb25TdWJzY3JpcHRpb24pLnRoZW4oKHN1YlRvKSA9PiB7XG4gICAgICAgIGlmICh0cmlnZ2VyRnVuY3Rpb24pIHtcbiAgICAgICAgICB0cmlnZ2VyRnVuY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFNwYXJrQ29yZUNvbm5lY3Rpb24oaXNDb25uZWN0ZWQ6IGJvb2xlYW4sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNlcnZpY2VzUnVubmluZ1N0YXR1cyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5zZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5KVtndWlkXTtcbiAgICBzZXJ2aWNlc1J1bm5pbmdTdGF0dXMuaXNTcGFya0NvcmVDb25uZWN0ZWQgPSBpc0Nvbm5lY3RlZDtcbiAgICBpZiAoIWlzQ29ubmVjdGVkKSB7XG4gICAgICBjb25zdCBmYWNpbGl0eUd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgICBjb25zdCBzZXJ2ZXJDbGllbnRUaW1lU3BhbiA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5jbGllbnRTZXJ2ZXJEaWZmRGljdGlvbmFyeSlbZmFjaWxpdHlHdWlkXSB8fCAwO1xuICAgICAgc2VydmljZXNSdW5uaW5nU3RhdHVzLnNwYXJrQ29yZURpc2Nvbm5lY3RlZFRpbWVzdGFtcCA9IG1vbWVudCgpLnN1YnRyYWN0KHNlcnZlckNsaWVudFRpbWVTcGFuLCAnbWlsbGlzZWNvbmRzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VzUnVubmluZ1N0YXR1cy5zcGFya0NvcmVEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQoc2VydmljZXNSdW5uaW5nU3RhdHVzLCBndWlkKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlSnNvblBheWxvYWRUb0xvd2VyKCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxTaWduYWxST2JqZWN0PiB7XG4gICAgcmV0dXJuICRpbnB1dCA9PiAkaW5wdXQucGlwZShtYXAocmVzID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UocmVzLmpzb25QYXlsb2FkKTtcbiAgICAgIHJlcy5qc29uUGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG9iaiwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSB7fTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGsgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgaykpIHtcbiAgICAgICAgICAgICAgaWYgKGsubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRbayAmJiBrLnRvTG93ZXJDYXNlKCldID0gdmFsdWVba107XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRbayAmJiBrLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgay5zdWJzdHJpbmcoMSldID0gdmFsdWVba107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGlzcGF0Y2hOb3RpZmljYXRpb24ob2JqOiBTcGFya05vdGlmaWNhdGlvbik6IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfZGlzcGF0Y2hOb3RpZmljYXRpb24ob2JqOiBTcGFya05vdGlmaWNhdGlvbikge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKG9iai5qc29uUGF5bG9hZCk7XG4gICAgY29uc29sZS5kZWJ1ZyhgUmVjZWl2ZWQgTm90aWZpY2F0aW9uIHR5cGUgPT09PiAke29iai5ub3RpZmljYXRpb25UeXBlfWApO1xuICAgIHN3aXRjaCAob2JqLm5vdGlmaWNhdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkluaXRpYWxDbG91ZENvbm5lY3Q6XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNtYXJ0UGFya0Nvbm5lY3Rpb24oZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuRmFjaWxpdHlSZW1vdGVDb21tYW5kRXhlY3V0ZWQ6XG4gICAgICAgIC8vIFRPRE86IHRoaXMgY29uZGl0aW9uIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIGFsbCBcIkZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkXCIgbm90aWZpY2F0aW9uXG4gICAgICAgIC8vIHdpbGwgYmUgcmVtb3ZlZCB1cG9uIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSBzZXJ2ZXJcbiAgICAgICAgLy8gRm9yIG1vcmUgZXhwbGFuYXRpb24gc2VlOiBTUFJLMy02NzA0XG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09IEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLlRyYW5zbWl0U3BlY2lhbERheXMgfHwgZGF0YS50eXBlID09PSBGYWNpbGl0eVJlbW90ZUNvbW1hbmRUeXBlcy5VcGRhdGVTZXR0aW5ncykge1xuICAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmdldE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnNFbnRpdHkoKTtcbiAgICAgICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb24udHlwZSA9IG9iai5ub3RpZmljYXRpb25UeXBlO1xuICAgICAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSA9IHRydWU7XG4gICAgICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLmlkZW50aWZpZXIgPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXROb3RpZmljYXRpb25JZGVudGlmaWVyKGRhdGEuZ3VpZCwgZGF0YS5wYXJrSWQsXG4gICAgICAgICAgICBvYmoubm90aWZpY2F0aW9uVHlwZSwgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLnVzZXJJZCk7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpYmVGb3JOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkKGRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkdlbmVyYWxBY3Rpb25zOlxuICAgICAgICB0aGlzLmdlbmVyYWxBY3Rpb25TZXJ2aWNlLmRpc3BhdGNoR2VuZXJhbEFjdGlvbnMoZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuSGFuZGxlQWxlcnQ6XG4gICAgICAgIHRoaXMuaGFuZGxlQWxlcnRzKEFsZXJ0RHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkhhbmRsZWROb3RpZmljYXRpb246XG4gICAgICAgIHRoaXMuaGFuZGxlZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb25EdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuSGFuZGxlTm90aWZpY2F0aW9uOlxuICAgICAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb25EdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5SZXBvcnRHZW5lcmF0ZWQ6XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5SZWNlaXB0R2VuZXJhdGVkOlxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuU3RpY2tlckdlbmVyYXRlZDpcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkFwcGxpY2F0aW9uVXBkYXRlOlxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuQ3JlYXRlUm9sZTpcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLlVwZGF0ZVJvbGU6XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5Nb250aGxpZXNCdWxrVXBkYXRlOlxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuTW9udGhsaWVzQnVsa0RlbGV0ZTpcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLk1vbnRobGllc0J1bGtVcGRhdGVMb2NhdGlvbjpcbiAgICAgICAgdGhpcy5kaXNwYXRjaE5vdGlmaWNhdGlvbihvYmopO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFVua25vd24gbm90aWZpY2F0aW9uIHR5cGUgPT09PiAke29iai5ub3RpZmljYXRpb25UeXBlfWApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGlzcGF0Y2hSdEV2ZW50KG9iajogUlRPYmplY3RPYmplY3QpOiB2b2lkO1xuXG4gIHByaXZhdGUgX2Rpc3BhdGNoUnRFdmVudChvYmo6IFJUT2JqZWN0T2JqZWN0KSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2Uob2JqLmpzb25QYXlsb2FkKTtcbiAgICBzd2l0Y2ggKG9iai5ydEV2ZW50VHlwZSkge1xuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5EZXZpY2VTdGF0dXM6XG4gICAgICAgIHRoaXMuZGV2aWNlc1N0YXR1c0NoYW5nZWQoRGV2aWNlU3RhdHVzRHRvLmZyb21KUyhkYXRhKSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOlxuICAgICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuZGVidWcoYFJUIC0gR290ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9IGV2ZW50YCk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ2hhbmdlZChOb3RpZmljYXRpb25EdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkFsZXJ0OlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5Mb3N0VGlja2V0OlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5MUFJtaXNtYXRjaDpcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmRlYnVnKGBSVCAtIEdvdCAke0pTT04uc3RyaW5naWZ5KGRhdGEpfSBldmVudGApO1xuICAgICAgICB0aGlzLmFsZXJ0Q2hhbmdlZChBbGVydER0by5mcm9tSlMoZGF0YSksIG9iai5ndWlkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuUGFya1N0YXRlOlxuICAgICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuZGVidWcoYFJUIC0gR290ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9IGV2ZW50YCk7XG4gICAgICAgIHRoaXMuZGV2aWNlQWN0aXZpdHlDaGFuZ2VkKGRhdGEpO1xuICAgICAgICB0aGlzLnBhcmtBY3Rpdml0eUNoYW5nZWQoZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkRldmljZUV2ZW50OlxuICAgICAgICB0aGlzLmRldmljZUV2ZW50Q2hhbmdlZChkYXRhKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuU2VydmljZXNTdGF0dXM6XG4gICAgICAgIHRoaXMuc2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZChTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlpvbmU6XG4gICAgICAgIHRoaXMuem9uZUNoYW5nZWQoWm9uZUR0by5mcm9tSlMoZGF0YSksIG9iai5wYXJrSWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5GYWNpbGl0eTpcbiAgICAgICAgdGhpcy5mYWNpbGl0eUNoYW5nZWQoRmFjaWxpdHlEdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLk9jY3VwYW5jeTpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuUmV2ZW51ZTpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuT3BlblRpY2tldFRyYW5zYWN0aW9uOlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5DbG9zZVRpY2tldFRyYW5zYWN0aW9uOlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5Nb250aGx5VHJhbnNhY3Rpb246XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkd1ZXN0VHJhbnNhY3Rpb246XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlBheW1lbnRUcmFuc2FjdGlvbjpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuTFBSVHJhbnNhY3Rpb246XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hSdEV2ZW50KG9iaik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmRlYnVnKGBVbmtub3duIGV2ZW50IHR5cGUgPT09PiAke29iai5ydEV2ZW50VHlwZX1gKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29ubmVjdChjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnU2lnbmFsUiBFc3RhYmxpc2hpbmcgQ29ubmVjdGlvbi4uLicpO1xuICAgIGNvbm5lY3Rpb24uc3RhcnQoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmRlYnVnKGBTaWduYWxSIENvbm5lY3Rpb24gRXN0YWJsaXNoZWQhYCk7XG4gICAgICAgIHRoaXMuaGFuZGxlUmVhbFRpbWVBd2FpdGluZ1N1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Bd2FpdGluZ1N1YnNjcmlwdGlvbigpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChhc3luYyAoZSkgPT4ge1xuICAgICAgICB0aGlzLnJldHJ5Q29ubmVjdGlvbihjb25uZWN0aW9uLCAxKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzY29ubmVjdChjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnU2lnbmFsUiBTdG9wcGluZyBDb25uZWN0aW9uLi4uJyk7XG4gICAgY29ubmVjdGlvbj8uc3RvcCgpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgQ29ubmVjdGlvbiBTdG9wcGVkIWApO1xuICAgICAgICB0aGlzLmhhbmRsZURpc2Nvbm5lY3QoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goYXN5bmMgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciA9PiAke2Vycn0sIFRpbWVzdGFtcDogJHtuZXcgRGF0ZSgpfWApO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJldHJ5Q29ubmVjdGlvbihjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uLCByZXRyeUNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgRXN0YWJsaXNoaW5nIENvbm5lY3Rpb24uIFJldHJ5ICMke3JldHJ5Q291bnR9LiBUaW1lc3RhbXA6ICR7bmV3IERhdGUoKX1gKTtcbiAgICAgIGNvbm5lY3Rpb24uc3RhcnQoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5kZWJ1ZyhgU2lnbmFsUiBDb25uZWN0aW9uIEVzdGFibGlzaGVkISBSZXRyeSAjJHtyZXRyeUNvdW50fWApO1xuICAgICAgICAgIHRoaXMuaGFuZGxlUmVhbFRpbWVBd2FpdGluZ1N1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkF3YWl0aW5nU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgICBpZiAocmV0cnlDb3VudCA8PSBjb25maWcuc2lnbmFsUi5tYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQpIHtcbiAgICAgICAgICAgIHRoaXMucmV0cnlDb25uZWN0aW9uKGNvbm5lY3Rpb24sIHJldHJ5Q291bnQgKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIGdldFNlY29uZHNCYWNrb2ZmKHJldHJ5Q291bnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmVhbFRpbWVBd2FpdGluZ1N1YnNjcmlwdGlvbnMoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25RdWV1ZS5mb3JFYWNoKGF3YWl0aW5nU3Vic2NyaXB0aW9uID0+IGF3YWl0aW5nU3Vic2NyaXB0aW9uKCkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uUXVldWUuc3BsaWNlKDApO1xuICB9XG4gIHByaXZhdGUgaGFuZGxlTm90aWZpY2F0aW9uQXdhaXRpbmdTdWJzY3JpcHRpb24oKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TdWJzY3JpcHRpb25RdWV1ZS5mb3JFYWNoKGF3YWl0aW5nU3Vic2NyaXB0aW9uID0+IGF3YWl0aW5nU3Vic2NyaXB0aW9uKCkpO1xuICAgIHRoaXMubm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWUuc3BsaWNlKDApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVEaXNjb25uZWN0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uUXVldWUgPSBbXTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblN1YnNjcmlwdGlvblF1ZXVlID0gW107XG4gICAgdGhpcy5yZWFsdGltZUV2ZW50U2VydmljZS5yZXNldEFsbFN1YnNjcmlwdGlvbnMoKTtcbiAgfVxuXG4gIEBEaXNwYXRjaCgpIGRldmljZXNTdGF0dXNDaGFuZ2VkID0gKGRldmljZVN0YXR1czogRGV2aWNlU3RhdHVzRHRvKSA9PlxuICAgIG5ldyBEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKGRldmljZVN0YXR1cyk7XG4gIEBEaXNwYXRjaCgpIGZhY2lsaXR5Q2hhbmdlZCA9IChkYXRhOiBGYWNpbGl0eUR0bywgZ3VpZDogc3RyaW5nKSA9PlxuICAgIG5ldyBGYWNpbGl0eUNoYW5nZWRBY3Rpb24oZGF0YSwgZ3VpZCk7XG4gIEBEaXNwYXRjaCgpIHNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQgPSAoc2VydmljZXNSdW5uaW5nU3RhdHVzOiBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBuZXcgU2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZEFjdGlvbihzZXJ2aWNlc1J1bm5pbmdTdGF0dXMsIGd1aWQpO1xuICBARGlzcGF0Y2goKSBwYXJrQWN0aXZpdHlDaGFuZ2VkID0gKGFjdGl2aXR5OiBFdmVudEFjdGl2aXR5RHRvKSA9PlxuICAgIG5ldyBQYXJrQWN0aXZpdHlDaGFuZ2VkQWN0aW9uKGFjdGl2aXR5KTtcbiAgQERpc3BhdGNoKCkgZGV2aWNlRXZlbnRDaGFuZ2VkID0gKGRldkV2ZW50OiBEZXZpY2VFdmVudER0bykgPT5cbiAgICBuZXcgRGV2aWNlRXZlbnRDaGFuZ2VkQWN0aW9uKGRldkV2ZW50KTtcbiAgQERpc3BhdGNoKCkgZGV2aWNlQWN0aXZpdHlDaGFuZ2VkID0gKGV2ZW50QWN0aXZpdHk6IEV2ZW50QWN0aXZpdHlEdG8pID0+XG4gICAgbmV3IERldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbihldmVudEFjdGl2aXR5KTtcbiAgQERpc3BhdGNoKCkgbHByVHJhbnNhY3Rpb25zQ2hhbmdlZCA9IChscHJUcmFuczogTHByVHJhbnNhY3Rpb25EdG8pID0+XG4gICAgbmV3IExwclRyYW5zYWN0aW9uc0NoYW5nZWRBY3Rpb24obHByVHJhbnMpO1xuICBARGlzcGF0Y2goKSBhbGVydENoYW5nZWQgPSAoYWxlcnREdG86IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpID0+XG4gICAgbmV3IEFsZXJ0Q2hhbmdlZEFjdGlvbihhbGVydER0bywgZ3VpZCk7XG4gIEBEaXNwYXRjaCgpIG5vdGlmaWNhdGlvbkNoYW5nZWQgPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBuZXcgTm90aWZpY2F0aW9uQ2hhbmdlZEFjdGlvbihub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuICBARGlzcGF0Y2goKSBoYW5kbGVkTm90aWZpY2F0aW9uID0gKG5vdGlmaWNhdGlvbkR0bzogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpID0+XG4gICAgbmV3IEhhbmRsZWROb3RpZmljYXRpb25BY3Rpb24obm90aWZpY2F0aW9uRHRvLCBndWlkKTtcbiAgQERpc3BhdGNoKCkgaGFuZGxlQWxlcnRzID0gKGFsZXJ0RHRvOiBBbGVydER0bywgZ3VpZDogc3RyaW5nKSA9PlxuICAgIG5ldyBIYW5kbGVBbGVydHNBY3Rpb24oYWxlcnREdG8sIGd1aWQpO1xuICBARGlzcGF0Y2goKSBoYW5kbGVOb3RpZmljYXRpb24gPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBuZXcgSGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uKG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG4gIEBEaXNwYXRjaCgpIHpvbmVDaGFuZ2VkID0gKHpvbmVEdG86IFpvbmVEdG8sIHBhcmtJZDogbnVtYmVyKSA9PlxuICAgIG5ldyBab25lQ2hhbmdlZEFjdGlvbih6b25lRHRvLCBwYXJrSWQpO1xuICBARGlzcGF0Y2goKSBpbml0aWFsaXplU21hcnRQYXJrQ29ubmVjdGlvbiA9IChzbWFydHBhcms6IFNtYXJ0cGFya0R0bykgPT5cbiAgICBuZXcgQWRkU21hcnRwYXJrQWN0aW9uKHNtYXJ0cGFyayk7XG4gIEBEaXNwYXRjaCgpIGZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkID0gKGZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50OiBGYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudCkgPT5cbiAgICBuZXcgRmFjaWxpdHlSZW1vdGVDb21tYW5kRXhlY3V0ZWRBY3Rpb24oZmFjaWxpdHlSZW1vdGVDb21tYW5kRXZlbnQpO1xufVxuXG5leHBvcnQgY2xhc3MgVGliYVJldHJ5UG9saWN5IGltcGxlbWVudHMgc2lnbmFsUi5JUmV0cnlQb2xpY3kge1xuXG4gIHByaXZhdGUgbWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IobWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCA9IG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDtcbiAgfVxuXG4gIG5leHRSZXRyeURlbGF5SW5NaWxsaXNlY29uZHMocmV0cnlDb250ZXh0OiBzaWduYWxSLlJldHJ5Q29udGV4dCk6IG51bWJlciB7XG4gICAgbGV0IG1pbGxpc2Vjb25kczogbnVtYmVyID0gbnVsbDtcbiAgICBjb25zdCBjdXJyZW50UmV0cnlDb3VudCA9IHJldHJ5Q29udGV4dC5wcmV2aW91c1JldHJ5Q291bnQgKyAxO1xuXG4gICAgaWYgKGN1cnJlbnRSZXRyeUNvdW50IDwgdGhpcy5tYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQpIHtcbiAgICAgIGNvbnN0IHVuYXV0aG9yaXplZCA9IHJldHJ5Q29udGV4dC5yZXRyeVJlYXNvbi5tZXNzYWdlLmluY2x1ZGVzKGBTdGF0dXMgY29kZSAnJHtIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWR9J2ApO1xuXG4gICAgICBpZiAodW5hdXRob3JpemVkKSB7XG4gICAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5pbmZvKGBUaWJhUmV0cnlQb2xpY3kgLT4gdW5hdXRob3JpemVkIHRva2VuLiBNZXNzYWdlOiAgJHtyZXRyeUNvbnRleHQucmV0cnlSZWFzb24ubWVzc2FnZX1gKTtcbiAgICAgICAgdGhpcy5zaWduYWxSUmVmcmVzaFRva2VuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgVGliYVJldHJ5UG9saWN5IC0+IGZhaWxlZCBuZWdvdGlhdGlvbiAjJHtjdXJyZW50UmV0cnlDb3VudH0uIE1lc3NhZ2U6ICR7cmV0cnlDb250ZXh0LnJldHJ5UmVhc29uLm1lc3NhZ2V9YCk7XG5cbiAgICAgICAgbWlsbGlzZWNvbmRzID0gZ2V0U2Vjb25kc0JhY2tvZmYoY3VycmVudFJldHJ5Q291bnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtaWxsaXNlY29uZHM7XG4gIH1cblxuICBARGlzcGF0Y2goKSBzaWduYWxSUmVmcmVzaFRva2VuID0gKCkgPT4gbmV3IFNpZ25hbFJSZWZyZXNoVG9rZW5BY3Rpb24oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlY29uZHNCYWNrb2ZmKHJldHJ5Q291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IGRlbGF5c1RhYmxlSW5TZWNvbmRzOiB7IFtrZXk6IG51bWJlcl06IG51bWJlcltdOyB9ID0ge1xuICAgIDE6IFs1LCAyMF0sIC8vNXMgLSAyMHNcbiAgICAyOiBbMjUsIDQwXSwgLy8gMjVzIC0gNDBzXG4gICAgMzogWzQ1LCA2MF0sIC8vIDQ1cyAtIDYwc1xuICAgIDQ6IFs2NSwgODBdLCAvLyA2NXMgLSA4MHNcbiAgICA1OiBbNjAwLCA5MDBdLCAgLy8gMTBtIC0gMTVtXG4gIH07XG4gIGNvbnN0IFttaW5TZWNvbmRzLCBtYXhTZWNvbmRzXSA9IGRlbGF5c1RhYmxlSW5TZWNvbmRzW3JldHJ5Q291bnRdIHx8IFswLCAwXTtcbiAgcmV0dXJuIChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4U2Vjb25kcyAtIG1pblNlY29uZHMgKyAxKSkgKyBtaW5TZWNvbmRzKSAqIE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTO1xufVxuIl19
448
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQTRCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDakcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQzlNLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQ0FBbUMsRUFBRSxrQ0FBa0MsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pLLE9BQU8sRUFB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QVksQ0FBQztJQUN0QixDQUFDO0NBR0Y7QUFEYTtJQUFYLFFBQVEsRUFBRTs0REFBNkQ7QUFHMUUsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFVBQWtCO0lBQ2xELE1BQU0sb0JBQW9CLEdBQWlDO1FBQ3pELENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVO1FBQ3RCLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZO1FBQ3pCLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZO1FBQ3pCLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZO1FBQ3pCLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRyxZQUFZO0tBQzdCLENBQUM7SUFDRixNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRywwQkFBMEIsQ0FBQztBQUMvRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFN0YXR1c0NvZGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGF0YWRvZ0xvZ3MgfSBmcm9tICdAZGF0YWRvZy9icm93c2VyLWxvZ3MnO1xuaW1wb3J0IHsgSHR0cFRyYW5zcG9ydFR5cGUsIEh1YkNvbm5lY3Rpb24sIEh1YkNvbm5lY3Rpb25CdWlsZGVyLCBIdWJDb25uZWN0aW9uU3RhdGUgfSBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xuaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tICdAbmd4cy1sYWJzL2Rpc3BhdGNoLWRlY29yYXRvcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgQXBwVHlwZSB9IGZyb20gJy4uL2VudW1zL2FwcC10eXBlLmVudW0nO1xuaW1wb3J0IHsgQWxlcnRDaGFuZ2VkQWN0aW9uLCBIYW5kbGVBbGVydHNBY3Rpb24sIEhhbmRsZWROb3RpZmljYXRpb25BY3Rpb24sIEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbiwgTm90aWZpY2F0aW9uQ2hhbmdlZEFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvYWxlcnRzLWFuZC1ub3RpZmljYXRpb25zL2FsZXJ0cy1hbmQtbm90aWZpY2F0aW9ucy5hY3Rpb25zJztcbmltcG9ydCB7IFNpZ25hbFJSZWZyZXNoVG9rZW5BY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2F1dGgvcmVmcmVzaC10b2tlbi5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5Q2hhbmdlZEFjdGlvbiwgRmFjaWxpdHlSZW1vdGVDb21tYW5kRXhlY3V0ZWRBY3Rpb24sIFNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWRBY3Rpb24sIFpvbmVDaGFuZ2VkQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IFBhcmtBY3Rpdml0eUNoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL3BhcmstYWN0aXZpdGllcy9wYXJrLWFjdGl2aXRpZXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBEZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24sIERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbiwgRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbiwgTHByVHJhbnNhY3Rpb25zQ2hhbmdlZEFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvcGFyay1tYW5hZ2VyL3BhcmstbWFuYWdlci5hY3Rpb25zJztcbmltcG9ydCB7IFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7IEFkZFNtYXJ0cGFya0FjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmstZGlhbG9nLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWxlcnREdG8sIE5vdGlmaWNhdGlvbkR0bywgU21hcnRwYXJrRHRvIH0gZnJvbSAnLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHtcbiAgRGV2aWNlRXZlbnREdG8sIERldmljZVN0YXR1c0R0bywgRXZlbnRBY3Rpdml0eUR0bywgRmFjaWxpdHlEdG8sIEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50LFxuICBGYWNpbGl0eVJlbW90ZUNvbW1hbmRUeXBlcywgTHByVHJhbnNhY3Rpb25EdG8sIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLFxuICBSVEV2ZW50U3Vic2NyaXB0aW9uRHRvLCBSdEV2ZW50VHlwZSwgU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvLCBab25lRHRvXG59IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4vYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9nZW5lcmFsLWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlYWx0aW1lRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9yZWFsdGltZS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgU2lnbmFsUk9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBqc29uUGF5bG9hZDogc3RyaW5nKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJUT2JqZWN0T2JqZWN0IGV4dGVuZHMgU2lnbmFsUk9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBydEV2ZW50VHlwZTogUnRFdmVudFR5cGUsIHB1YmxpYyBwYXJrSWQ6IG51bWJlciwgcHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGpzb25QYXlsb2FkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihndWlkLCBqc29uUGF5bG9hZCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNwYXJrTm90aWZpY2F0aW9uIGV4dGVuZHMgU2lnbmFsUk9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBub3RpZmljYXRpb25UeXBlOiBOb3RpZmljYXRpb25FdmVudFR5cGUsIHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBpZGVudGlmaWVyOiBzdHJpbmcsIHB1YmxpYyBqc29uUGF5bG9hZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoZ3VpZCwganNvblBheWxvYWQpO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaWduYWxSIHtcblxuICBwdWJsaWMgY29ubmVjdGlvbjogSHViQ29ubmVjdGlvbjtcbiAgcHVibGljIHN1YnNjcmlwdGlvblF1ZXVlOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWU6IGFueVtdID0gW107XG5cbiAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTtcbiAgcHJvdGVjdGVkIHJlYWx0aW1lRXZlbnRTZXJ2aWNlOiBSZWFsdGltZUV2ZW50U2VydmljZTtcbiAgcHJvdGVjdGVkIG5vdGlmaWNhdGlvbkV2ZW50U2VydmljZTogTm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2U7XG4gIHByb3RlY3RlZCBnZW5lcmFsQWN0aW9uU2VydmljZTogR2VuZXJhbEFjdGlvblNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMuc3RvcmUgPSBpbmplY3Rvci5nZXQoU3RvcmUpO1xuICAgIHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoUmVhbHRpbWVFdmVudFNlcnZpY2UpO1xuICAgIHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSk7XG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKTtcbiAgICB0aGlzLmFwcENvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWdTZXJ2aWNlKTtcbiAgICB0aGlzLmdlbmVyYWxBY3Rpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEdlbmVyYWxBY3Rpb25TZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0UmVhbHRpbWVFdmVudExpc3RlbmVycygpIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKTtcbiAgICBjb25zdCBiYXNlVXJsID0gY29uZmlnLmFwcFR5cGUgPT09IEFwcFR5cGUuTW9iaWxlID8gY29uZmlnLmFwaUJhc2VVUkwgOiAnJztcbiAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS9yZWFsdGltZWA7XG5cbiAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgUlQgQVBJIEJhc2UgVXJsIC0gJHt1cmx9YCk7XG5cbiAgICBjb25zdCBtYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQgPSBjb25maWcuc2lnbmFsUi5tYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQ7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBuZXcgSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxuICAgICAgLndpdGhVcmwodXJsLCB7XG4gICAgICAgIGFjY2Vzc1Rva2VuRmFjdG9yeTogKCkgPT4gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuYWNjZXNzVG9rZW4sXG4gICAgICAgIHNraXBOZWdvdGlhdGlvbjogdHJ1ZSwgIC8vIFNraXAgdGhlIG5lZ290aWF0aW9uIHN0ZXBcbiAgICAgICAgdHJhbnNwb3J0OiBIdHRwVHJhbnNwb3J0VHlwZS5XZWJTb2NrZXRzICAvLyBVc2UgV2ViU29ja2V0cyBkaXJlY3RseVxuICAgICAgfSlcbiAgICAgIC53aXRoQXV0b21hdGljUmVjb25uZWN0KG5ldyBUaWJhUmV0cnlQb2xpY3kobWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50KSlcbiAgICAgIC5idWlsZCgpO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uLmtlZXBBbGl2ZUludGVydmFsSW5NaWxsaXNlY29uZHMgPSA4MDAwO1xuICAgIHRoaXMuY29ubmVjdGlvbi5zZXJ2ZXJUaW1lb3V0SW5NaWxsaXNlY29uZHMgPSAzMDAwMDtcblxuICAgIHRoaXMuY29ubmVjdGlvbi5vbnJlY29ubmVjdGluZygoZXJyb3IpID0+IHtcbiAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5pbmZvKCdBdHRlbXB0aW5nIHRvIHJlY29ubmVjdDonLCBlcnJvcik7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24ub25jbG9zZSgoZXJyb3IpID0+IHtcbiAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGNsb3NlZCBhZnRlciBhbGwgcmV0cnkgYXR0ZW1wdHM6JywgZXJyb3IpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0ZWQoKGNvbm5lY3Rpb25JZCkgPT4ge1xuICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFN1Y2Nlc3NmdWxseSByZWNvbm5lY3RlZCBTSUdOQUxSIS4gQ29ubmVjdGlvbklkOiAke2Nvbm5lY3Rpb25JZH1gKTtcblxuICAgICAgdGhpcy5jaGVja0ZvclVwZGF0ZSgpO1xuICAgICAgY29uc3QgZ3VpZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcbiAgICAgIGlmICghIWd1aWQpIHtcbiAgICAgICAgdGhpcy5zZXRTcGFya0NvcmVDb25uZWN0aW9uKHRydWUsIGd1aWQpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVjb25uZWN0UnRFdmVudHNTdWJzY3JpcHRpb25zID0gdGhpcy5yZWFsdGltZUV2ZW50U2VydmljZS5nZXRTdWJzY3JpcHRpb25Gb3JSZWNvbm5lY3QoKTtcbiAgICAgIHRoaXMuaW52b2tlUmVhbHRpbWVSZWdpc3RyYXRpb24ocmVjb25uZWN0UnRFdmVudHNTdWJzY3JpcHRpb25zLCB0aGlzLmhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zLmJpbmQodGhpcykpO1xuXG4gICAgICBjb25zdCBub3RpZmljYXRpb25TdWJzY3JpcHRpb25zID0gdGhpcy5ub3RpZmljYXRpb25FdmVudFNlcnZpY2UuZ2V0U3Vic2NyaXB0aW9uRm9yUmVjb25uZWN0KCk7XG4gICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb25zLmZvckVhY2gobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uID0+IHtcbiAgICAgICAgdGhpcy5pbnZva2VOb3RpZmljYXRpb25SZWdpc3RyYXRpb24obm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkF3YWl0aW5nU3Vic2NyaXB0aW9uKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24ub24oJ1J0RXZlbnQnLCAocnRFdmVudFR5cGU6IFJ0RXZlbnRUeXBlLCBwYXJrSWQ6IG51bWJlciwgZ3VpZDogc3RyaW5nLCBqc29uUGF5bG9hZDogc3RyaW5nKSA9PiB7XG4gICAgICBvZihuZXcgUlRPYmplY3RPYmplY3QocnRFdmVudFR5cGUsIHBhcmtJZCwgZ3VpZCwganNvblBheWxvYWQpKVxuICAgICAgICAucGlwZSh0aGlzLmhhbmRsZUpzb25QYXlsb2FkVG9Mb3dlcigpKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLl9kaXNwYXRjaFJ0RXZlbnQocmVzIGFzIFJUT2JqZWN0T2JqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24ub24oJ05vdGlmaWNhdGlvbicsICh0eXBlOiBOb3RpZmljYXRpb25FdmVudFR5cGUsIGd1aWQ6IHN0cmluZywgaWRlbnRpZmllcjogc3RyaW5nLCBqc29uUGF5bG9hZDogc3RyaW5nKSA9PiB7XG4gICAgICBvZihuZXcgU3BhcmtOb3RpZmljYXRpb24odHlwZSwgZ3VpZCwgaWRlbnRpZmllciwganNvblBheWxvYWQpKVxuICAgICAgICAucGlwZSh0aGlzLmhhbmRsZUpzb25QYXlsb2FkVG9Mb3dlcigpKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLl9kaXNwYXRjaE5vdGlmaWNhdGlvbihyZXMgYXMgU3BhcmtOb3RpZmljYXRpb24pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjaGVja0ZvclVwZGF0ZSgpOiB2b2lkO1xuXG4gIHB1YmxpYyBjb25uZWN0KCkge1xuICAgIHRoaXMuX2Nvbm5lY3QodGhpcy5jb25uZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNjb25uZWN0KCkge1xuICAgIHRoaXMuX2Rpc2Nvbm5lY3QodGhpcy5jb25uZWN0aW9uKTtcbiAgfVxuXG4gIHN1YnNjcmliZUZvclJlYWx0aW1lKHJ0RXZlbnRTdWJzY3JpcHRpb25zOiBSVEV2ZW50U3Vic2NyaXB0aW9uRHRvLCB0cmlnZ2VyRnVuY3Rpb24/OiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5zdGF0ZSAhPT0gSHViQ29ubmVjdGlvblN0YXRlLkNvbm5lY3RlZCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblF1ZXVlLnB1c2goKCkgPT4gdGhpcy5zdWJzY3JpYmVGb3JSZWFsdGltZShydEV2ZW50U3Vic2NyaXB0aW9ucywgdHJpZ2dlckZ1bmN0aW9uKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBydEV2ZW50U3Vic2NyaXB0aW9uRGVsdGEgPSB0aGlzLnJlYWx0aW1lRXZlbnRTZXJ2aWNlLmhhbmRsZVJlYWx0aW1lRXZlbnRzU3Vic2NyaXB0aW9ucyhydEV2ZW50U3Vic2NyaXB0aW9ucyk7XG4gICAgICAgIGlmIChydEV2ZW50U3Vic2NyaXB0aW9uRGVsdGEuc3Vic2NyaWJlLmxlbmd0aCB8fCBydEV2ZW50U3Vic2NyaXB0aW9uRGVsdGEudW5TdWJzY3JpYmUubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5pbnZva2VSZWFsdGltZVJlZ2lzdHJhdGlvbihydEV2ZW50U3Vic2NyaXB0aW9uRGVsdGEsIHRyaWdnZXJGdW5jdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdWJzY3JpYmVGb3JOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbjogTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLCB0cmlnZ2VyRnVuY3Rpb24/OiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5zdGF0ZSAhPT0gSHViQ29ubmVjdGlvblN0YXRlLkNvbm5lY3RlZCkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblN1YnNjcmlwdGlvblF1ZXVlLnB1c2goKCkgPT4gdGhpcy5zdWJzY3JpYmVGb3JOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbiwgdHJpZ2dlckZ1bmN0aW9uKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb25TdWJzY3JpcHRpb25EZWx0YSA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmhhbmRsZU5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnMobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uKTtcbiAgICAgICAgaWYgKCEhbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRGVsdGEpIHtcbiAgICAgICAgICB0aGlzLmludm9rZU5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihub3RpZmljYXRpb25TdWJzY3JpcHRpb25EZWx0YSwgdHJpZ2dlckZ1bmN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW52b2tlUmVhbHRpbWVSZWdpc3RyYXRpb24ocnRFdmVudFN1YnNjcmlwdGlvbnM6IFJURXZlbnRTdWJzY3JpcHRpb25EdG8sIHRyaWdnZXJGdW5jdGlvbj86ICgpID0+IHZvaWQpIHtcbiAgICBjb25zdCBhcHBNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpO1xuICAgIGlmIChydEV2ZW50U3Vic2NyaXB0aW9ucy51c2VySWQpIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2U8UlRFdmVudFN1YnNjcmlwdGlvbkR0bz4oJ1JlZ2lzdGVyUGFyaycsIHJ0RXZlbnRTdWJzY3JpcHRpb25zLCBhcHBNb2R1bGUpLnRoZW4oKHN1YlRvKSA9PiB7XG4gICAgICAgIGlmICh0cmlnZ2VyRnVuY3Rpb24pIHtcbiAgICAgICAgICB0cmlnZ2VyRnVuY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnZva2VOb3RpZmljYXRpb25SZWdpc3RyYXRpb24obm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uOiBOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8sIHRyaWdnZXJGdW5jdGlvbj86ICgpID0+IHZvaWQpIHtcbiAgICBpZiAobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uICYmIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi51c2VySWQpIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2U8Tm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvPignUmVnaXN0ZXJOb3RpZmljYXRpb25zJywgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uKS50aGVuKChzdWJUbykgPT4ge1xuICAgICAgICBpZiAodHJpZ2dlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgdHJpZ2dlckZ1bmN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRTcGFya0NvcmVDb25uZWN0aW9uKGlzQ29ubmVjdGVkOiBib29sZWFuLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZXJ2aWNlc1J1bm5pbmdTdGF0dXMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeSlbZ3VpZF07XG4gICAgc2VydmljZXNSdW5uaW5nU3RhdHVzLmlzU3BhcmtDb3JlQ29ubmVjdGVkID0gaXNDb25uZWN0ZWQ7XG4gICAgaWYgKCFpc0Nvbm5lY3RlZCkge1xuICAgICAgY29uc3QgZmFjaWxpdHlHdWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgICAgY29uc3Qgc2VydmVyQ2xpZW50VGltZVNwYW4gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuY2xpZW50U2VydmVyRGlmZkRpY3Rpb25hcnkpW2ZhY2lsaXR5R3VpZF0gfHwgMDtcbiAgICAgIHNlcnZpY2VzUnVubmluZ1N0YXR1cy5zcGFya0NvcmVEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBtb21lbnQoKS5zdWJ0cmFjdChzZXJ2ZXJDbGllbnRUaW1lU3BhbiwgJ21pbGxpc2Vjb25kcycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXJ2aWNlc1J1bm5pbmdTdGF0dXMuc3BhcmtDb3JlRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkKHNlcnZpY2VzUnVubmluZ1N0YXR1cywgZ3VpZCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUpzb25QYXlsb2FkVG9Mb3dlcigpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248U2lnbmFsUk9iamVjdD4ge1xuICAgIHJldHVybiAkaW5wdXQgPT4gJGlucHV0LnBpcGUobWFwKHJlcyA9PiB7XG4gICAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKHJlcy5qc29uUGF5bG9hZCk7XG4gICAgICByZXMuanNvblBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShvYmosIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0ge307XG4gICAgICAgICAgZm9yIChjb25zdCBrIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGspKSB7XG4gICAgICAgICAgICAgIGlmIChrLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50W2sgJiYgay50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlW2tdO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50W2sgJiYgay5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGsuc3Vic3RyaW5nKDEpXSA9IHZhbHVlW2tdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXBsYWNlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGRpc3BhdGNoTm90aWZpY2F0aW9uKG9iajogU3BhcmtOb3RpZmljYXRpb24pOiB2b2lkO1xuXG4gIHByaXZhdGUgX2Rpc3BhdGNoTm90aWZpY2F0aW9uKG9iajogU3BhcmtOb3RpZmljYXRpb24pIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShvYmouanNvblBheWxvYWQpO1xuICAgIGNvbnNvbGUuZGVidWcoYFJlY2VpdmVkIE5vdGlmaWNhdGlvbiB0eXBlID09PT4gJHtvYmoubm90aWZpY2F0aW9uVHlwZX1gKTtcbiAgICBzd2l0Y2ggKG9iai5ub3RpZmljYXRpb25UeXBlKSB7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5Jbml0aWFsQ2xvdWRDb25uZWN0OlxuICAgICAgICB0aGlzLmluaXRpYWxpemVTbWFydFBhcmtDb25uZWN0aW9uKGRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkOlxuICAgICAgICAvLyBUT0RPOiB0aGlzIGNvbmRpdGlvbiB3aWxsIGJlIHJlbW92ZWQgd2hlbiBhbGwgXCJGYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZFwiIG5vdGlmaWNhdGlvblxuICAgICAgICAvLyB3aWxsIGJlIHJlbW92ZWQgdXBvbiBiZWluZyBleGVjdXRlZCBpbiB0aGUgc2VydmVyXG4gICAgICAgIC8vIEZvciBtb3JlIGV4cGxhbmF0aW9uIHNlZTogU1BSSzMtNjcwNFxuICAgICAgICBpZiAoZGF0YS50eXBlID09PSBGYWNpbGl0eVJlbW90ZUNvbW1hbmRUeXBlcy5UcmFuc21pdFNwZWNpYWxEYXlzIHx8IGRhdGEudHlwZSA9PT0gRmFjaWxpdHlSZW1vdGVDb21tYW5kVHlwZXMuVXBkYXRlU2V0dGluZ3MpIHtcbiAgICAgICAgICBjb25zdCBub3RpZmljYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXROb3RpZmljYXRpb25TdWJzY3JpcHRpb25zRW50aXR5KCk7XG4gICAgICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLnR5cGUgPSBvYmoubm90aWZpY2F0aW9uVHlwZTtcbiAgICAgICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUgPSB0cnVlO1xuICAgICAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi5pZGVudGlmaWVyID0gdGhpcy5ub3RpZmljYXRpb25FdmVudFNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uSWRlbnRpZmllcihkYXRhLmd1aWQsIGRhdGEucGFya0lkLFxuICAgICAgICAgICAgb2JqLm5vdGlmaWNhdGlvblR5cGUsIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi51c2VySWQpO1xuICAgICAgICAgIHRoaXMuc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZChkYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5HZW5lcmFsQWN0aW9uczpcbiAgICAgICAgdGhpcy5nZW5lcmFsQWN0aW9uU2VydmljZS5kaXNwYXRjaEdlbmVyYWxBY3Rpb25zKGRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkhhbmRsZUFsZXJ0OlxuICAgICAgICB0aGlzLmhhbmRsZUFsZXJ0cyhBbGVydER0by5mcm9tSlMoZGF0YSksIG9iai5ndWlkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5IYW5kbGVkTm90aWZpY2F0aW9uOlxuICAgICAgICB0aGlzLmhhbmRsZWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkhhbmRsZU5vdGlmaWNhdGlvbjpcbiAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuUmVwb3J0R2VuZXJhdGVkOlxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuUmVjZWlwdEdlbmVyYXRlZDpcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLlN0aWNrZXJHZW5lcmF0ZWQ6XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5BcHBsaWNhdGlvblVwZGF0ZTpcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkNyZWF0ZVJvbGU6XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5VcGRhdGVSb2xlOlxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuTW9udGhsaWVzQnVsa1VwZGF0ZTpcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLk1vbnRobGllc0J1bGtEZWxldGU6XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5Nb250aGxpZXNCdWxrVXBkYXRlTG9jYXRpb246XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hOb3RpZmljYXRpb24ob2JqKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmRlYnVnKGBVbmtub3duIG5vdGlmaWNhdGlvbiB0eXBlID09PT4gJHtvYmoubm90aWZpY2F0aW9uVHlwZX1gKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGRpc3BhdGNoUnRFdmVudChvYmo6IFJUT2JqZWN0T2JqZWN0KTogdm9pZDtcblxuICBwcml2YXRlIF9kaXNwYXRjaFJ0RXZlbnQob2JqOiBSVE9iamVjdE9iamVjdCkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKG9iai5qc29uUGF5bG9hZCk7XG4gICAgc3dpdGNoIChvYmoucnRFdmVudFR5cGUpIHtcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuRGV2aWNlU3RhdHVzOlxuICAgICAgICB0aGlzLmRldmljZXNTdGF0dXNDaGFuZ2VkKERldmljZVN0YXR1c0R0by5mcm9tSlMoZGF0YSkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbjpcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmRlYnVnKGBSVCAtIEdvdCAke0pTT04uc3RyaW5naWZ5KGRhdGEpfSBldmVudGApO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNoYW5nZWQoTm90aWZpY2F0aW9uRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5BbGVydDpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuTG9zdFRpY2tldDpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuTFBSbWlzbWF0Y2g6XG4gICAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5kZWJ1ZyhgUlQgLSBHb3QgJHtKU09OLnN0cmluZ2lmeShkYXRhKX0gZXZlbnRgKTtcbiAgICAgICAgdGhpcy5hbGVydENoYW5nZWQoQWxlcnREdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlBhcmtTdGF0ZTpcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmRlYnVnKGBSVCAtIEdvdCAke0pTT04uc3RyaW5naWZ5KGRhdGEpfSBldmVudGApO1xuICAgICAgICB0aGlzLmRldmljZUFjdGl2aXR5Q2hhbmdlZChkYXRhKTtcbiAgICAgICAgdGhpcy5wYXJrQWN0aXZpdHlDaGFuZ2VkKGRhdGEpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5EZXZpY2VFdmVudDpcbiAgICAgICAgdGhpcy5kZXZpY2VFdmVudENoYW5nZWQoZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlNlcnZpY2VzU3RhdHVzOlxuICAgICAgICB0aGlzLnNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQoU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5ab25lOlxuICAgICAgICB0aGlzLnpvbmVDaGFuZ2VkKFpvbmVEdG8uZnJvbUpTKGRhdGEpLCBvYmoucGFya0lkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuRmFjaWxpdHk6XG4gICAgICAgIHRoaXMuZmFjaWxpdHlDaGFuZ2VkKEZhY2lsaXR5RHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5PY2N1cGFuY3k6XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlJldmVudWU6XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLk9wZW5UaWNrZXRUcmFuc2FjdGlvbjpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuQ2xvc2VUaWNrZXRUcmFuc2FjdGlvbjpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuTW9udGhseVRyYW5zYWN0aW9uOlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5HdWVzdFRyYW5zYWN0aW9uOlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5QYXltZW50VHJhbnNhY3Rpb246XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkxQUlRyYW5zYWN0aW9uOlxuICAgICAgICB0aGlzLmRpc3BhdGNoUnRFdmVudChvYmopO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgVW5rbm93biBldmVudCB0eXBlID09PT4gJHtvYmoucnRFdmVudFR5cGV9YCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Nvbm5lY3QoY29ubmVjdGlvbjogSHViQ29ubmVjdGlvbikge1xuICAgIGNvbnNvbGUuZGVidWcoJ1NpZ25hbFIgRXN0YWJsaXNoaW5nIENvbm5lY3Rpb24uLi4nKTtcbiAgICBjb25uZWN0aW9uLnN0YXJ0KClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgU2lnbmFsUiBDb25uZWN0aW9uIEVzdGFibGlzaGVkIWApO1xuICAgICAgICB0aGlzLmhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uQXdhaXRpbmdTdWJzY3JpcHRpb24oKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goYXN5bmMgKGUpID0+IHtcbiAgICAgICAgdGhpcy5yZXRyeUNvbm5lY3Rpb24oY29ubmVjdGlvbiwgMSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2Nvbm5lY3QoY29ubmVjdGlvbjogSHViQ29ubmVjdGlvbikge1xuICAgIGNvbnNvbGUuZGVidWcoJ1NpZ25hbFIgU3RvcHBpbmcgQ29ubmVjdGlvbi4uLicpO1xuICAgIGNvbm5lY3Rpb24/LnN0b3AoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmRlYnVnKGBTaWduYWxSIENvbm5lY3Rpb24gU3RvcHBlZCFgKTtcbiAgICAgICAgdGhpcy5oYW5kbGVEaXNjb25uZWN0KCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGFzeW5jIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgPT4gJHtlcnJ9LCBUaW1lc3RhbXA6ICR7bmV3IERhdGUoKX1gKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXRyeUNvbm5lY3Rpb24oY29ubmVjdGlvbjogSHViQ29ubmVjdGlvbiwgcmV0cnlDb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBTaWduYWxSIEVzdGFibGlzaGluZyBDb25uZWN0aW9uLiBSZXRyeSAjJHtyZXRyeUNvdW50fS4gVGltZXN0YW1wOiAke25ldyBEYXRlKCl9YCk7XG4gICAgICBjb25uZWN0aW9uLnN0YXJ0KClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgQ29ubmVjdGlvbiBFc3RhYmxpc2hlZCEgUmV0cnkgIyR7cmV0cnlDb3VudH1gKTtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Bd2FpdGluZ1N1YnNjcmlwdGlvbigpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpO1xuXG4gICAgICAgICAgaWYgKHJldHJ5Q291bnQgPD0gY29uZmlnLnNpZ25hbFIubWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnJldHJ5Q29ubmVjdGlvbihjb25uZWN0aW9uLCByZXRyeUNvdW50ICsgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCBnZXRTZWNvbmRzQmFja29mZihyZXRyeUNvdW50KSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uUXVldWUuZm9yRWFjaChhd2FpdGluZ1N1YnNjcmlwdGlvbiA9PiBhd2FpdGluZ1N1YnNjcmlwdGlvbigpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblF1ZXVlLnNwbGljZSgwKTtcbiAgfVxuICBwcml2YXRlIGhhbmRsZU5vdGlmaWNhdGlvbkF3YWl0aW5nU3Vic2NyaXB0aW9uKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWUuZm9yRWFjaChhd2FpdGluZ1N1YnNjcmlwdGlvbiA9PiBhd2FpdGluZ1N1YnNjcmlwdGlvbigpKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblN1YnNjcmlwdGlvblF1ZXVlLnNwbGljZSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRGlzY29ubmVjdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblF1ZXVlID0gW107XG4gICAgdGhpcy5ub3RpZmljYXRpb25TdWJzY3JpcHRpb25RdWV1ZSA9IFtdO1xuICAgIHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UucmVzZXRBbGxTdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBARGlzcGF0Y2goKSBkZXZpY2VzU3RhdHVzQ2hhbmdlZCA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bykgPT5cbiAgICBuZXcgRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbihkZXZpY2VTdGF0dXMpO1xuICBARGlzcGF0Y2goKSBmYWNpbGl0eUNoYW5nZWQgPSAoZGF0YTogRmFjaWxpdHlEdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBuZXcgRmFjaWxpdHlDaGFuZ2VkQWN0aW9uKGRhdGEsIGd1aWQpO1xuICBARGlzcGF0Y2goKSBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkID0gKHNlcnZpY2VzUnVubmluZ1N0YXR1czogU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvLCBndWlkOiBzdHJpbmcpID0+XG4gICAgbmV3IFNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWRBY3Rpb24oc2VydmljZXNSdW5uaW5nU3RhdHVzLCBndWlkKTtcbiAgQERpc3BhdGNoKCkgcGFya0FjdGl2aXR5Q2hhbmdlZCA9IChhY3Rpdml0eTogRXZlbnRBY3Rpdml0eUR0bykgPT5cbiAgICBuZXcgUGFya0FjdGl2aXR5Q2hhbmdlZEFjdGlvbihhY3Rpdml0eSk7XG4gIEBEaXNwYXRjaCgpIGRldmljZUV2ZW50Q2hhbmdlZCA9IChkZXZFdmVudDogRGV2aWNlRXZlbnREdG8pID0+XG4gICAgbmV3IERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbihkZXZFdmVudCk7XG4gIEBEaXNwYXRjaCgpIGRldmljZUFjdGl2aXR5Q2hhbmdlZCA9IChldmVudEFjdGl2aXR5OiBFdmVudEFjdGl2aXR5RHRvKSA9PlxuICAgIG5ldyBEZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24oZXZlbnRBY3Rpdml0eSk7XG4gIEBEaXNwYXRjaCgpIGxwclRyYW5zYWN0aW9uc0NoYW5nZWQgPSAobHByVHJhbnM6IExwclRyYW5zYWN0aW9uRHRvKSA9PlxuICAgIG5ldyBMcHJUcmFuc2FjdGlvbnNDaGFuZ2VkQWN0aW9uKGxwclRyYW5zKTtcbiAgQERpc3BhdGNoKCkgYWxlcnRDaGFuZ2VkID0gKGFsZXJ0RHRvOiBBbGVydER0bywgZ3VpZDogc3RyaW5nKSA9PlxuICAgIG5ldyBBbGVydENoYW5nZWRBY3Rpb24oYWxlcnREdG8sIGd1aWQpO1xuICBARGlzcGF0Y2goKSBub3RpZmljYXRpb25DaGFuZ2VkID0gKG5vdGlmaWNhdGlvbkR0bzogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpID0+XG4gICAgbmV3IE5vdGlmaWNhdGlvbkNoYW5nZWRBY3Rpb24obm90aWZpY2F0aW9uRHRvLCBndWlkKTtcbiAgQERpc3BhdGNoKCkgaGFuZGxlZE5vdGlmaWNhdGlvbiA9IChub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSA9PlxuICAgIG5ldyBIYW5kbGVkTm90aWZpY2F0aW9uQWN0aW9uKG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG4gIEBEaXNwYXRjaCgpIGhhbmRsZUFsZXJ0cyA9IChhbGVydER0bzogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBuZXcgSGFuZGxlQWxlcnRzQWN0aW9uKGFsZXJ0RHRvLCBndWlkKTtcbiAgQERpc3BhdGNoKCkgaGFuZGxlTm90aWZpY2F0aW9uID0gKG5vdGlmaWNhdGlvbkR0bzogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpID0+XG4gICAgbmV3IEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbihub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuICBARGlzcGF0Y2goKSB6b25lQ2hhbmdlZCA9ICh6b25lRHRvOiBab25lRHRvLCBwYXJrSWQ6IG51bWJlcikgPT5cbiAgICBuZXcgWm9uZUNoYW5nZWRBY3Rpb24oem9uZUR0bywgcGFya0lkKTtcbiAgQERpc3BhdGNoKCkgaW5pdGlhbGl6ZVNtYXJ0UGFya0Nvbm5lY3Rpb24gPSAoc21hcnRwYXJrOiBTbWFydHBhcmtEdG8pID0+XG4gICAgbmV3IEFkZFNtYXJ0cGFya0FjdGlvbihzbWFydHBhcmspO1xuICBARGlzcGF0Y2goKSBmYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZCA9IChmYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudDogRmFjaWxpdHlSZW1vdGVDb21tYW5kRXZlbnQpID0+XG4gICAgbmV3IEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkQWN0aW9uKGZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50KTtcbn1cblxuZXhwb3J0IGNsYXNzIFRpYmFSZXRyeVBvbGljeSBpbXBsZW1lbnRzIHNpZ25hbFIuSVJldHJ5UG9saWN5IHtcblxuICBwcml2YXRlIG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5tYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQgPSBtYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQ7XG4gIH1cblxuICBuZXh0UmV0cnlEZWxheUluTWlsbGlzZWNvbmRzKHJldHJ5Q29udGV4dDogc2lnbmFsUi5SZXRyeUNvbnRleHQpOiBudW1iZXIge1xuICAgIGxldCBtaWxsaXNlY29uZHM6IG51bWJlciA9IG51bGw7XG4gICAgY29uc3QgY3VycmVudFJldHJ5Q291bnQgPSByZXRyeUNvbnRleHQucHJldmlvdXNSZXRyeUNvdW50ICsgMTtcblxuICAgIGlmIChjdXJyZW50UmV0cnlDb3VudCA8IHRoaXMubWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50KSB7XG4gICAgICBjb25zdCB1bmF1dGhvcml6ZWQgPSByZXRyeUNvbnRleHQucmV0cnlSZWFzb24ubWVzc2FnZS5pbmNsdWRlcyhgU3RhdHVzIGNvZGUgJyR7SHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkfSdgKTtcblxuICAgICAgaWYgKHVuYXV0aG9yaXplZCkge1xuICAgICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgVGliYVJldHJ5UG9saWN5IC0+IHVuYXV0aG9yaXplZCB0b2tlbi4gTWVzc2FnZTogICR7cmV0cnlDb250ZXh0LnJldHJ5UmVhc29uLm1lc3NhZ2V9YCk7XG4gICAgICAgIHRoaXMuc2lnbmFsUlJlZnJlc2hUb2tlbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFRpYmFSZXRyeVBvbGljeSAtPiBmYWlsZWQgbmVnb3RpYXRpb24gIyR7Y3VycmVudFJldHJ5Q291bnR9LiBNZXNzYWdlOiAke3JldHJ5Q29udGV4dC5yZXRyeVJlYXNvbi5tZXNzYWdlfWApO1xuXG4gICAgICAgIG1pbGxpc2Vjb25kcyA9IGdldFNlY29uZHNCYWNrb2ZmKGN1cnJlbnRSZXRyeUNvdW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWlsbGlzZWNvbmRzO1xuICB9XG5cbiAgQERpc3BhdGNoKCkgc2lnbmFsUlJlZnJlc2hUb2tlbiA9ICgpID0+IG5ldyBTaWduYWxSUmVmcmVzaFRva2VuQWN0aW9uKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWNvbmRzQmFja29mZihyZXRyeUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBkZWxheXNUYWJsZUluU2Vjb25kczogeyBba2V5OiBudW1iZXJdOiBudW1iZXJbXTsgfSA9IHtcbiAgICAxOiBbNSwgMjBdLCAvLzVzIC0gMjBzXG4gICAgMjogWzI1LCA0MF0sIC8vIDI1cyAtIDQwc1xuICAgIDM6IFs0NSwgNjBdLCAvLyA0NXMgLSA2MHNcbiAgICA0OiBbNjUsIDgwXSwgLy8gNjVzIC0gODBzXG4gICAgNTogWzYwMCwgOTAwXSwgIC8vIDEwbSAtIDE1bVxuICB9O1xuICBjb25zdCBbbWluU2Vjb25kcywgbWF4U2Vjb25kc10gPSBkZWxheXNUYWJsZUluU2Vjb25kc1tyZXRyeUNvdW50XSB8fCBbMCwgMF07XG4gIHJldHVybiAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heFNlY29uZHMgLSBtaW5TZWNvbmRzICsgMSkpICsgbWluU2Vjb25kcykgKiBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUztcbn1cbiJdfQ==
@@ -98722,6 +98722,8 @@ class SignalR {
98722
98722
  })
98723
98723
  .withAutomaticReconnect(new TibaRetryPolicy(maxConsecutiveFailedRetryCount))
98724
98724
  .build();
98725
+ this.connection.keepAliveIntervalInMilliseconds = 8000;
98726
+ this.connection.serverTimeoutInMilliseconds = 30000;
98725
98727
  this.connection.onreconnecting((error) => {
98726
98728
  datadogLogs.logger.info('Attempting to reconnect:', error);
98727
98729
  });