@tiba-spark/client-shared-lib 26.3.0-534 → 26.3.0-535
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.
|
@@ -412,15 +412,17 @@ let SmartparkState = class SmartparkState {
|
|
|
412
412
|
const request = new Rpc.SetEdgeWebhooksRequestDto({ enable: action.enable });
|
|
413
413
|
// SPRK3-14400: the command is SmartPark-wide; facilityId 0 fills the route convention only.
|
|
414
414
|
return this.backofficeEdgeWebhooksRpcServiceProxy.setEdgeWebhooks(action.smartpark.guid, 0, request).pipe(tap({
|
|
415
|
-
next: (
|
|
416
|
-
|
|
415
|
+
next: () => {
|
|
416
|
+
// SPRK3-15602: proxy-rpc wraps the body in HttpResponseData, so read the state from the request; 200 means confirmed + saved.
|
|
417
|
+
const isEnabledWebhooks = action.enable;
|
|
418
|
+
const successMessage = isEnabledWebhooks
|
|
417
419
|
? Localization.edge_webhooks_enabled_for_smartpark
|
|
418
420
|
: Localization.edge_webhooks_disabled_for_smartpark;
|
|
419
421
|
this.messageBarService.success(successMessage, { messageParams: { smartparkName: action.smartpark.name } });
|
|
420
422
|
const updatedSmartparks = (ctx.getState().smartparks || []).map(item => {
|
|
421
423
|
let result = item;
|
|
422
424
|
if (item instanceof SmartparkDto && item.id === action.smartpark.id) {
|
|
423
|
-
result = new SmartparkDto({ ...item, isEnabledWebhooks
|
|
425
|
+
result = new SmartparkDto({ ...item, isEnabledWebhooks });
|
|
424
426
|
markEntitiesAsChanged([result], RowOperation.Update);
|
|
425
427
|
}
|
|
426
428
|
return result;
|
|
@@ -608,4 +610,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
608
610
|
}] }, { type: i4.BackofficeCloudServiceProxy }, { type: i4.LicenseCloudServiceProxy }, { type: i6.Rpc.BackofficeEdgeWebhooksRpcServiceProxy, decorators: [{
|
|
609
611
|
type: Optional
|
|
610
612
|
}] }], propDecorators: { onClearSmartparksBasicAction: [], onLoadSmartparksTableAction: [], onLoadBackofficeSmartparksTableAction: [], onSetSmartParkTableAction: [], onSetSmartParksAction: [], onSetSelectedSmartparkAction: [], onUpdateSmartparkNameAction: [], onRemoveSmartparkBasicAction: [], onLoadParksAction: [], onLoadParkDevices: [], onSelectParkAction: [], onClearSelectedParkAction: [], onClearSelectedsmartparkAction: [], onSmartParkDeviceStatusChangedAction: [], onSetSmartParkVersionsAction: [], onLoadSpAndSparkVersionsAction: [], onLoadBackofficeSpAndSparkVersionsAction: [], onClearSpAndSparkVersionsAction: [], onLoadVarsAction: [], onLoadBackofficeVarsAction: [], onLoadBackofficeVarByIdAction: [], onSyncUsersAndRolesBySmartparkIdAction: [], onExportSmartparksAction: [], onExportPdfSmartparksTableAction: [], onLoadAllSmartparksAction: [], onUpdateSmartparkVarAction: [], onSetSmartparkEdgeWebhooksAction: [] } });
|
|
611
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwYXJrLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3NtYXJ0cGFya3Mvc21hcnRwYXJrLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUc1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBRXVCLFlBQVksRUFDeEMsZUFBZSxFQUFFLGFBQWEsRUFBeUIscUJBQXFCLEVBQzdFLE1BQU0sMkNBQTJDLENBQUM7QUFNbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFN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RSxJQUFJO1lBQ3ZCLEtBQUssRUFBRSxJQUFJO1lBQ1gsY0FBYyxFQUFFLElBQUk7WUFDcEIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixhQUFhLEVBQUUsSUFBSTtZQUNuQixRQUFRLEVBQUUsRUFBRTtZQUNaLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixJQUFJLEVBQUUsRUFBRTtZQUNSLG1CQUFtQixFQUFFLElBQUk7WUFDekIsWUFBWSxFQUFFLEVBQUU7U0FDakI7S0FDRixDQUFDO0dBQ1csY0FBYyxDQW9oQjFCOzs0RkFwaEJZLGNBQWM7a0JBdEIxQixVQUFVOzswQkFnQ04sUUFBUTs7MEJBR1IsUUFBUTt5Q0F5RlgsNEJBQTRCLE1BTzVCLDJCQUEyQixNQVkzQixxQ0FBcUMsTUFhckMseUJBQXlCLE1BT3pCLHFCQUFxQixNQWVyQiw0QkFBNEIsTUFRNUIsMkJBQTJCLE1BYTNCLDRCQUE0QixNQXFCNUIsaUJBQWlCLE1Bb0RqQixpQkFBaUIsTUF1QmpCLGtCQUFrQixNQU1sQix5QkFBeUIsTUFRekIsOEJBQThCLE1BUTlCLG9DQUFvQyxNQWdCcEMsNEJBQTRCLE1BTzVCLDhCQUE4QixNQVU5Qix3Q0FBd0MsTUFVeEMsK0JBQStCLE1BTy9CLGdCQUFnQixNQVdoQiwwQkFBMEIsTUFXMUIsNkJBQTZCLE1BVTdCLHNDQUFzQyxNQVF0Qyx3QkFBd0IsTUE2QnhCLGdDQUFnQyxNQWFoQyx5QkFBeUIsTUFZekIsMEJBQTBCLE1BMEMxQixnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgRU1QVFksIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyUG9zaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLXBvc2l0aW9uLmVudW0nO1xuaW1wb3J0IHsgTWVzc2FnZUJhclBheWxvYWQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLXRleHQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IFNtYXJ0UGFya1N0YXR1c1RleHQgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBJUGFya0RldGFpbHMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BhcmstZGV0YWlscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUnBjIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eSc7XG5pbXBvcnQge1xuICBCYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHksIEZhY2lsaXR5QmFzaWNEdG8sIExpY2Vuc2VDbG91ZFNlcnZpY2VQcm94eSwgT2JqZWN0SHR0cFJlc3BvbnNlRGF0YSxcbiAgU21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHksIFNtYXJ0cGFya0R0bywgU21hcnRwYXJrRmlsdGVyT3B0aW9uRHRvLCBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGEsXG4gIFNtYXJ0UGFya1N0YXR1cywgU21hcnRQYXJrVHlwZSwgU3BBbmRTcGFya1ZlcnNpb25zRHRvLCBVcGRhdGVTbWFydHBhcmtWYXJEdG8sIFZhckR0b1xufSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBTbWFydHBhcmtCYXNpY0R0bywgU21hcnRQYXJrV3JhcHBlckR0byB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvaWRlbnRpdHktc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEZhY2lsaXR5UnBjU2VydmljZVByb3h5LCBJRGV2aWNlRHRvIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9ycGMtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEV4cG9ydEZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXhwb3J0LWZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXZlbnVlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JldmVudWUuc2VydmljZSc7XG5pbXBvcnQgeyBTbWFydHBhcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc21hcnRwYXJrLnNlcnZpY2UnO1xuaW1wb3J0IHsgcGFyc2VBcGlFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlscy9hcGktaGVscGVyLnV0aWwnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdERldmljZVN0YXR1cyB9IGZyb20gJy4uLy4uL3V0aWxzL2RldmljZS51dGlsJztcbmltcG9ydCB7IG1hcmtFbnRpdGllc0FzQ2hhbmdlZCwgUm93T3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVyLnV0aWwnO1xuaW1wb3J0IHsgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24gfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQgeyBTdHJpbmdNYXAgfSBmcm9tICcuLi8uLi91dGlscy9sYW5nLnV0aWwnO1xuaW1wb3J0IHsgY3JlYXRlTWVzc2FnZVRleHQgfSBmcm9tICcuLi8uLi91dGlscy9tZXNzYWdlLWJhci51dGlsJztcbmltcG9ydCB7IGxvd2VyQ2FzZUZpcnN0TGV0dGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvdGV4dC51dGlsJztcbmltcG9ydCB7XG4gIENsZWFyU2VsZWN0ZWRQYXJrQWN0aW9uLCBDbGVhclNlbGVjdGVkU21hcnRwYXJrQWN0aW9uLCBDbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbiwgQ2xlYXJTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24sXG4gIEV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbiwgRXhwb3J0U21hcnRwYXJrQWN0aW9uLCBMb2FkQmFja29mZmljZVNtYXJ0cGFya3NUYWJsZUFjdGlvbixcbiAgTG9hZEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24sIExvYWRCYWNrb2ZmaWNlVmFyQnlJZEFjdGlvbiwgTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uLFxuICBMb2FkUGFya0RldmljZXNBY3Rpb24sIExvYWRQYXJrc0FjdGlvbiwgTG9hZFNtYXJ0cGFya3NEcm9wZG93bkFjdGlvbiwgTG9hZFNtYXJ0cGFya3NUYWJsZUFjdGlvbixcbiAgTG9hZFNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbiwgTG9hZFZhcnNBY3Rpb24sIFJlbW92ZVNtYXJ0cGFya0Jhc2ljQWN0aW9uLCBTZWxlY3RQYXJrQWN0aW9uLCBTZWxlY3RTbWFydFBhcmtBY3Rpb24sXG4gIFNldFNlbGVjdGVkU21hcnRwYXJrQWN0aW9uLCBTZXRTbWFydFBhcmtBY3Rpb24sIFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uLCBTZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbixcbiAgU2V0U21hcnRwYXJrRWRnZVdlYmhvb2tzQWN0aW9uLCBTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uLCBTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24sXG4gIFVwZGF0ZVNtYXJ0cGFya05hbWVBY3Rpb24sIFVwZGF0ZVNtYXJ0cGFya1ZhckFjdGlvblxufSBmcm9tICcuL3NtYXJ0cGFyay5hY3Rpb25zJztcbmltcG9ydCB7IGNvdW50U21hcnRwYXJrUGFya2luZ0xvdHMgfSBmcm9tICcuL3NtYXJ0cGFyay51dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBTbWFydHBhcmtzU3RhdGVNb2RlbCB7XG4gIHNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXTtcbiAgbGF0ZXN0U21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdO1xuICBTcEFuZFNwYXJrVmVyc2lvbnM6IFNwQW5kU3BhcmtWZXJzaW9uc0R0bztcbiAgY291bnRTbWFydFBhcmtzOiBudW1iZXI7XG4gIGNvdW50UGFya2luZ0xvdHM6IG51bWJlcjtcbiAgc2VsZWN0ZWRTbWFydFBhcmtJZDogbnVtYmVyO1xuICBzZWxlY3RlZFNtYXJ0UGFyazogU21hcnRwYXJrRHRvO1xuICBwYXJrczogRmFjaWxpdHlCYXNpY0R0b1tdO1xuICBzZWxlY3RlZFBhcmtJZDogbnVtYmVyO1xuICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBJUGFya0RldGFpbHM7XG4gIHNtYXJ0cGFya0d1aWQ6IHN0cmluZztcbiAgdmVyc2lvbnM6IFN0cmluZ01hcDxzdHJpbmc+O1xuICBzbWFydFBhcmtXcmFwcGVyOiBTbWFydFBhcmtXcmFwcGVyRHRvO1xuICB2YXJzOiBWYXJEdG9bXTtcbiAgZXhwb3J0UGRmU21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdO1xuICBmYWNpbGl0eVRyZWU6IFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b1tdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5AU3RhdGU8U21hcnRwYXJrc1N0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ3NtYXJ0cGFyaycsXG4gIGRlZmF1bHRzOiB7XG4gICAgc21hcnRwYXJrczogbnVsbCxcbiAgICBsYXRlc3RTbWFydHBhcmtzOiBudWxsLFxuICAgIGNvdW50U21hcnRQYXJrczogMCxcbiAgICBjb3VudFBhcmtpbmdMb3RzOiAwLFxuICAgIHNlbGVjdGVkU21hcnRQYXJrSWQ6IG51bGwsXG4gICAgc2VsZWN0ZWRTbWFydFBhcms6IG51bGwsXG4gICAgcGFya3M6IG51bGwsXG4gICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgc2VsZWN0ZWRQYXJrRGV0YWlsczogbnVsbCxcbiAgICBzbWFydHBhcmtHdWlkOiBudWxsLFxuICAgIHZlcnNpb25zOiB7fSxcbiAgICBTcEFuZFNwYXJrVmVyc2lvbnM6IG51bGwsXG4gICAgc21hcnRQYXJrV3JhcHBlcjogbnVsbCxcbiAgICB2YXJzOiBbXSxcbiAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBudWxsLFxuICAgIGZhY2lsaXR5VHJlZTogW10sXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0cGFya1N0YXRlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIHJldmVudWVTZXJ2aWNlOiBSZXZlbnVlU2VydmljZSxcbiAgICBwcml2YXRlIHNtYXJ0cGFya1NlcnZpY2U6IFNtYXJ0cGFya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eTogU21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBmYWNpbGl0eVJwY1NlcnZpY2VQcm94eTogRmFjaWxpdHlScGNTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBkZXZpY2VScGNTZXJ2aWNlUHJveHk6IFJwYy5EZXZpY2VScGNTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZXhwb3J0RmlsZVNlcnZpY2U6IEV4cG9ydEZpbGVTZXJ2aWNlIHwgbnVsbCxcbiAgICBwcml2YXRlIGJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eTogQmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgbGljZW5zZUNsb3VkU2VydmljZVByb3h5OiBMaWNlbnNlQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBiYWNrb2ZmaWNlRWRnZVdlYmhvb2tzUnBjU2VydmljZVByb3h5OiBScGMuQmFja29mZmljZUVkZ2VXZWJob29rc1JwY1NlcnZpY2VQcm94eSB8IG51bGwpIHtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgcGFya3Moc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogRmFjaWxpdHlCYXNpY0R0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUucGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkUGFya0lkKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkUGFya0lkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFBhcmtEZXRhaWxzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IElQYXJrRGV0YWlscyB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkUGFya0RldGFpbHM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHBhcmtEZXZpY2VzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IElEZXZpY2VEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkUGFya0RldGFpbHM/LmRldmljZXM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGd1aWQoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RhdGUuc21hcnRwYXJrR3VpZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc21hcnRwYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW10ge1xuICAgIHJldHVybiBzdGF0ZS5zbWFydHBhcmtzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBsYXRlc3RQYWdlKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLmxhdGVzdFNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkU21hcnRQYXJrSWQoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRTbWFydFBhcmtJZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRTbWFydFBhcmtEZXRhaWxzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IFNtYXJ0cGFya0R0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkU21hcnRQYXJrO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBjb3VudFNtYXJ0UGFya3Moc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuY291bnRTbWFydFBhcmtzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBjb3VudFBhcmtpbmdMb3RzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLmNvdW50UGFya2luZ0xvdHM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHZlcnNpb25zKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IFN0cmluZ01hcDxzdHJpbmc+IHtcbiAgICByZXR1cm4gc3RhdGUudmVyc2lvbnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNtYXJ0cGFya1NlYXJjaE9wdGlvbnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU3BBbmRTcGFya1ZlcnNpb25zRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuU3BBbmRTcGFya1ZlcnNpb25zO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzbWFydFBhcmtXcmFwcGVyKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IFNtYXJ0UGFya1dyYXBwZXJEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5zbWFydFBhcmtXcmFwcGVyO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyB2YXJzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IFZhckR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUudmFycztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZXhwb3J0UGRmU21hcnRwYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW10ge1xuICAgIHJldHVybiBzdGF0ZS5leHBvcnRQZGZTbWFydHBhcmtzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBmYWNpbGl0eVRyZWUoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRwYXJrRmlsdGVyT3B0aW9uRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5mYWNpbGl0eVRyZWU7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBfOiBDbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0UGFya1dyYXBwZXI6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc1RhYmxlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBmaWx0ZXIgfTogTG9hZFNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoZmlsdGVyKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGxhdGVzdFNtYXJ0cGFya3M6IHNtYXJ0cGFya3MuZGF0YS5lbnRpdGllcyxcbiAgICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzLmRhdGEuY291bnRlcixcbiAgICAgICAgY291bnRQYXJraW5nTG90czogc21hcnRwYXJrcy5kYXRhLnN1YkNvdW50ZXJcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQmFja29mZmljZVNtYXJ0cGFya3NUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgZmlsdGVyIH06IExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU21hcnRwYXJrcyhmaWx0ZXIpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcChzbWFydHBhcmtzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbGF0ZXN0U21hcnRwYXJrczogc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzLFxuICAgICAgICBjb3VudFNtYXJ0UGFya3M6IHNtYXJ0cGFya3MuZGF0YS5jb3VudGVyLFxuICAgICAgICBjb3VudFBhcmtpbmdMb3RzOiBzbWFydHBhcmtzLmRhdGEuc3ViQ291bnRlclxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cblxuICBAQWN0aW9uKFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKVxuICBvblNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBzbWFydHBhcmtzIH06IFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc21hcnRwYXJrc1xuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTZXRTbWFydFBhcmtBY3Rpb24pXG4gIG9uU2V0U21hcnRQYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgc21hcnRwYXJrV3JhcHBlciwgcmVsb2FkIH06IFNldFNtYXJ0UGFya0FjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3M6IFNtYXJ0cGFya0Jhc2ljRHRvW10gPSBzbWFydHBhcmtXcmFwcGVyPy5kYXRhPy5zbWFydFBhcmtzID8gT2JqZWN0LnZhbHVlcyhzbWFydHBhcmtXcmFwcGVyLmRhdGEuc21hcnRQYXJrcykgOiBbXTtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydHBhcmtzLFxuICAgICAgc21hcnRQYXJrV3JhcHBlcjogc21hcnRwYXJrV3JhcHBlcj8uZGF0YSA/PyBudWxsLFxuICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzLmxlbmd0aCxcbiAgICAgIGNvdW50UGFya2luZ0xvdHM6IGNvdW50U21hcnRwYXJrUGFya2luZ0xvdHMoc21hcnRwYXJrcylcbiAgICB9KTtcblxuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFya0lkKSB7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IFNlbGVjdFNtYXJ0UGFya0FjdGlvbihjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFya0lkLCByZWxvYWQpKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKFNldFNlbGVjdGVkU21hcnRwYXJrQWN0aW9uKVxuICBvblNldFNlbGVjdGVkU21hcnRwYXJrQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBzbWFydFBhcmtJZCwgc21hcnRwYXJrLCByZWxvYWQgfTogU2V0U2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkU21hcnRQYXJrSWQ6IHNtYXJ0UGFya0lkLCBzZWxlY3RlZFNtYXJ0UGFyazogc21hcnRwYXJrIH0pO1xuICAgIGlmIChyZWxvYWQpIHtcbiAgICAgIGN0eC5kaXNwYXRjaChuZXcgTG9hZFBhcmtzQWN0aW9uKCkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oVXBkYXRlU21hcnRwYXJrTmFtZUFjdGlvbilcbiAgb25VcGRhdGVTbWFydHBhcmtOYW1lQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBzbWFydFBhcmtJZCwgbmFtZSB9OiBVcGRhdGVTbWFydHBhcmtOYW1lQWN0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGUgPSBjdHguZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBzbWFydHBhcmtzID0gKHN0YXRlLnNtYXJ0cGFya3MgfHwgW10pLm1hcChzbWFydHBhcmsgPT5cbiAgICAgIChzbWFydHBhcmsgYXMgU21hcnRwYXJrRHRvKS5pZCA9PT0gc21hcnRQYXJrSWRcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHNtYXJ0cGFyaykpLCBzbWFydHBhcmssIHsgbmFtZSB9KVxuICAgICAgICA6IHNtYXJ0cGFyayk7XG4gICAgY29uc3Qgc2VsZWN0ZWRTbWFydFBhcmsgPSBzdGF0ZS5zZWxlY3RlZFNtYXJ0UGFya0lkID09PSBzbWFydFBhcmtJZCAmJiBzdGF0ZS5zZWxlY3RlZFNtYXJ0UGFya1xuICAgICAgPyBuZXcgU21hcnRwYXJrRHRvKHsgLi4uc3RhdGUuc2VsZWN0ZWRTbWFydFBhcmssIG5hbWUgfSlcbiAgICAgIDogc3RhdGUuc2VsZWN0ZWRTbWFydFBhcms7XG4gICAgY3R4LnBhdGNoU3RhdGUoeyBzbWFydHBhcmtzLCBzZWxlY3RlZFNtYXJ0UGFyayB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oUmVtb3ZlU21hcnRwYXJrQmFzaWNBY3Rpb24pXG4gIG9uUmVtb3ZlU21hcnRwYXJrQmFzaWNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGd1aWQgfTogUmVtb3ZlU21hcnRwYXJrQmFzaWNBY3Rpb24pIHtcbiAgICBjb25zdCBzdGF0ZSA9IGN0eC5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHNtYXJ0cGFya3MgPSAoc3RhdGUuc21hcnRwYXJrcyB8fCBbXSkuZmlsdGVyKHNtYXJ0cGFyayA9PiBzbWFydHBhcmsuZ3VpZCAhPT0gZ3VpZCk7XG4gICAgbGV0IHNtYXJ0UGFya1dyYXBwZXIgPSBzdGF0ZS5zbWFydFBhcmtXcmFwcGVyO1xuICAgIGlmIChzbWFydFBhcmtXcmFwcGVyPy5zbWFydFBhcmtzPy5bZ3VpZF0pIHtcbiAgICAgIGNvbnN0IHNtYXJ0UGFya3MgPSB7IC4uLnNtYXJ0UGFya1dyYXBwZXIuc21hcnRQYXJrcyB9O1xuICAgICAgZGVsZXRlIHNtYXJ0UGFya3NbZ3VpZF07XG4gICAgICBzbWFydFBhcmtXcmFwcGVyID0gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihzbWFydFBhcmtXcmFwcGVyKSksIHNtYXJ0UGFya1dyYXBwZXIsIHsgc21hcnRQYXJrcyB9KTtcbiAgICB9XG4gICAgY29uc3QgdmVyc2lvbnMgPSB7IC4uLnN0YXRlLnZlcnNpb25zIH07XG4gICAgZGVsZXRlIHZlcnNpb25zW2d1aWRdO1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0cGFya3MsXG4gICAgICBzbWFydFBhcmtXcmFwcGVyLFxuICAgICAgdmVyc2lvbnMsXG4gICAgICBjb3VudFNtYXJ0UGFya3M6IHNtYXJ0cGFya3MubGVuZ3RoLFxuICAgICAgY291bnRQYXJraW5nTG90czogY291bnRTbWFydHBhcmtQYXJraW5nTG90cyhzbWFydHBhcmtzKSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFBhcmtzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFBhcmtzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VsZWN0ZWRQYXJrRGV0YWlsczogbnVsbCwgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsIHBhcmtzOiBudWxsLCBzbWFydHBhcmtHdWlkOiBudWxsIH0pO1xuICAgIGNvbnN0IGd1aWQgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFyaz8uZ3VpZDtcbiAgICBpZiAoIWd1aWQpIHtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZWRTbWFydFBhcmtzID0gY3R4LmdldFN0YXRlKCkuc21hcnRQYXJrV3JhcHBlcj8uc21hcnRQYXJrcztcbiAgICBpZiAoY2FjaGVkU21hcnRQYXJrcyAmJiAhY2FjaGVkU21hcnRQYXJrc1tndWlkXSkge1xuICAgICAgdGhpcy5yZWZyZXNoU21hcnRwYXJrQmFzaWNzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KFNtYXJ0cGFya1N0YXRlLnNtYXJ0UGFya1dyYXBwZXIpLnBpcGUoXG4gICAgICBmaWx0ZXIoc21hcnRQYXJrV3JhcHBlciA9PiAhIXNtYXJ0UGFya1dyYXBwZXI/LnNtYXJ0UGFya3M/LltndWlkXSksXG4gICAgICB0YWtlVW50aWwodGhpcy5zbWFydHBhcmtTZXJ2aWNlLmhhc0Vycm9yJC5waXBlKGZpbHRlcihCb29sZWFuKSkpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHRhcChzbWFydFBhcmtXcmFwcGVyID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRTbWFydFBhcmsgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFyaztcbiAgICAgICAgaWYgKCFzZWxlY3RlZFNtYXJ0UGFyaykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHR5cGUgfSA9IHNlbGVjdGVkU21hcnRQYXJrO1xuICAgICAgICBsZXQgc2VsZWN0ZWRQYXJrSWQ6IG51bWJlcjtcbiAgICAgICAgY29uc3QgcGFya3MgPSBzbWFydFBhcmtXcmFwcGVyLnNtYXJ0UGFya3NbZ3VpZF0/LmZhY2lsaXRpZXM7XG4gICAgICAgIGlmICh0eXBlID09PSBTbWFydFBhcmtUeXBlLlN1cGVyUGFyaykge1xuICAgICAgICAgIGNvbnN0IG11bHRpUGFyayA9IHBhcmtzPy5maW5kKHBhcmsgPT4gcGFyay5pc011bHRpUGFyayk7XG4gICAgICAgICAgc2VsZWN0ZWRQYXJrSWQgPSBtdWx0aVBhcmsgPyBtdWx0aVBhcmsuaWQgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIHBhcmtzOiBwYXJrcyB8fCBbXSxcbiAgICAgICAgICBzZWxlY3RlZFBhcmtJZDogc2VsZWN0ZWRQYXJrSWQgPz8gKHBhcmtzPy5sZW5ndGggJiYgcGFya3NbMF0uaWQgfHwgbnVsbCksXG4gICAgICAgICAgc21hcnRwYXJrR3VpZDogZ3VpZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHBhcmtzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjdHguZGlzcGF0Y2goTG9hZFBhcmtEZXZpY2VzQWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFNtYXJ0cGFya0Jhc2ljcygpOiB2b2lkIHtcbiAgICBjb25zdCBhcHBNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpO1xuICAgIGNvbnN0IHN1Yk1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLnN1Yk1vZHVsZSk7XG4gICAgLy8gc2V0U21hcnRwYXJrQmFzaWM9ZmFsc2Uga2VlcHMgdGhlIHByZS1mZXRjaCBjbGVhcnMgb3V0IG9mIHRoZSB3YXksIHNvIHRoZSBkcm9wZG93biBhbmQgdGFibGVcbiAgICAvLyBzdGF5IHBvcHVsYXRlZCB3aGlsZSB0aGUgcmVmcmVzaGVkIHdyYXBwZXIgYXJyaXZlcy5cbiAgICB0aGlzLnNtYXJ0cGFya1NlcnZpY2UuZ2V0U21hcnRwYXJrQmFzaWNBbGwoYXBwTW9kdWxlLCBzdWJNb2R1bGUsIGZhbHNlKVxuICAgICAgLnN1YnNjcmliZShzbWFydHBhcmtCYXNpYyA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTbWFydHBhcmtCYXNpY0FsbEFjdGlvbihzbWFydHBhcmtCYXNpYykpKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFBhcmtEZXZpY2VzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFBhcmtEZXZpY2VzKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGNvbnN0IHBhcmtEZXRhaWwgPSBjdHguZ2V0U3RhdGUoKS5wYXJrcy5maW5kKChwYXJrKSA9PiBwYXJrLmlkID09PSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFBhcmtJZCk7XG4gICAgY29uc3QgZ3VpZCA9IGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya0d1aWQ7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZhY2lsaXR5UnBjU2VydmljZVByb3h5LmdldEZhY2lsaXR5KGd1aWQsIHBhcmtEZXRhaWwuaWQpLFxuICAgICAgdGhpcy5yZXZlbnVlU2VydmljZS5nZXRSZXZlbnVlKHBhcmtEZXRhaWwuaWQsIGd1aWQpLnBpcGUoZmlsdGVyKHJldmVudWUgPT4gISFyZXZlbnVlKSksXG4gICAgICB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXRTbWFydHBhcmtzRGV2aWNlcyhndWlkLCBwYXJrRGV0YWlsLmlkLCBudWxsLCBudWxsLCBudWxsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCksXG4gICAgXSkucGlwZSh0YXAoKFtmYWNpbGl0eSwgcmV2ZW51ZXMsIGRldmljZXNdKSA9PiB7XG4gICAgICBjb25zdCByZXZlbnVlID0gcGFya0RldGFpbC5pc011bHRpUGFyayA9PSAxID8gdGhpcy5yZXZlbnVlU2VydmljZS5jYWxjdWxhdGVSZXZlbnVlRm9yTXVsdGlQYXJrKHJldmVudWVzKSA6IHJldmVudWVzW3BhcmtEZXRhaWwuaWRdO1xuICAgICAgZGV2aWNlcz8uZGF0YS5mb3JFYWNoKGRldmljZSA9PiBkZXZpY2UuZGV2aWNlU3RhdHVzID0gZGV2aWNlLmRldmljZVN0YXR1cyA/PyBnZXREZWZhdWx0RGV2aWNlU3RhdHVzKGRldmljZSkpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiB7XG4gICAgICAgICAgZmFjaWxpdHk6IGZhY2lsaXR5LmRhdGEsXG4gICAgICAgICAgZGV2aWNlczogZGV2aWNlcy5kYXRhLFxuICAgICAgICAgIHJldmVudWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cblxuICBAQWN0aW9uKFNlbGVjdFBhcmtBY3Rpb24pXG4gIG9uU2VsZWN0UGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogU2VsZWN0UGFya0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VsZWN0ZWRQYXJrSWQ6IGFjdGlvbi5wYXJrSWQgfSk7XG4gICAgY3R4LmRpc3BhdGNoKExvYWRQYXJrRGV2aWNlc0FjdGlvbik7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU2VsZWN0ZWRQYXJrQWN0aW9uKVxuICBvbkNsZWFyU2VsZWN0ZWRQYXJrQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkUGFya0RldGFpbHM6IG51bGwsXG4gICAgICBzZWxlY3RlZFBhcmtJZDogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTZWxlY3RlZFNtYXJ0cGFya0FjdGlvbilcbiAgb25DbGVhclNlbGVjdGVkc21hcnRwYXJrQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkU21hcnRQYXJrSWQ6IG51bGwsXG4gICAgICBzZWxlY3RlZFNtYXJ0UGFyazogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oU21hcnRQYXJrRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbilcbiAgb25TbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRQYXJrRGV0YWlscyA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkUGFya0RldGFpbHM7XG4gICAgaWYgKHNlbGVjdGVkUGFya0RldGFpbHMpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gc2VsZWN0ZWRQYXJrRGV0YWlscz8uZGV2aWNlcz8uZmluZEluZGV4KGRldmljZSA9PiBkZXZpY2UuaWQgPT09IGFjdGlvbi5kZXZpY2VTdGF0dXMuZGV2aWNlSUQpO1xuICAgICAgY29uc3QgY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgPSBzZWxlY3RlZFBhcmtEZXRhaWxzLmRldmljZXNbaW5kZXhdLmRldmljZVN0YXR1cy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZTtcbiAgICAgIGNvbnN0IG5ld0NvbW1QZXJjZW50YWdlID0gYWN0aW9uLmRldmljZVN0YXR1cy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZTtcbiAgICAgIGlmIChpbmRleCA+PSAwICYmIGNvbW11bmljYXRpb25QZXJjZW50YWdlICE9PSBuZXdDb21tUGVyY2VudGFnZSkge1xuICAgICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzLmRldmljZXNbaW5kZXhdLmRldmljZVN0YXR1cy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZSA9IG5ld0NvbW1QZXJjZW50YWdlO1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgc2VsZWN0ZWRQYXJrRGV0YWlsczogY2xvbmVEZWVwKHNlbGVjdGVkUGFya0RldGFpbHMpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKVxuICBvblNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHZlcnNpb25zOiBhY3Rpb24udmVyc2lvbnMsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uTG9hZFNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBpZiAoY3R4LmdldFN0YXRlKCkuU3BBbmRTcGFya1ZlcnNpb25zID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZlcnNpb25zJCA9IHRoaXMuc21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0U3BBbmRTcGFya1ZlcnNpb25zKCk7XG4gICAgICByZXR1cm4gdmVyc2lvbnMkLnBpcGUodGFwKHZlcnNpb25zID0+IHtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoeyBTcEFuZFNwYXJrVmVyc2lvbnM6IHZlcnNpb25zLmRhdGEgfSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihMb2FkQmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbilcbiAgb25Mb2FkQmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBpZiAoY3R4LmdldFN0YXRlKCkuU3BBbmRTcGFya1ZlcnNpb25zID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZlcnNpb25zJCA9IHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnMoKTtcbiAgICAgIHJldHVybiB2ZXJzaW9ucyQucGlwZSh0YXAodmVyc2lvbnMgPT4ge1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7IFNwQW5kU3BhcmtWZXJzaW9uczogdmVyc2lvbnMuZGF0YSB9KTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKVxuICBvbkNsZWFyU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIFNwQW5kU3BhcmtWZXJzaW9uczogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkVmFyc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRWYXJzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkVmFyc0FjdGlvbikge1xuICAgIGNvbnN0IHZhcnMkID0gdGhpcy5zbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eS5nZXRWYXJzKGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ubWF4UmVzdWx0cywgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcbiAgICByZXR1cm4gdmFycyQucGlwZSh0YXAodmFycyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHZhcnM6IHZhcnMuZGF0YVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkQmFja29mZmljZVZhcnNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQmFja29mZmljZVZhcnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbikge1xuICAgIGNvbnN0IHZhcnMkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVZhcnMoYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLnNlYXJjaFRlcm0sXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkuY29sdW1uLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuICAgIHJldHVybiB2YXJzJC5waXBlKHRhcCh2YXJzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgdmFyczogdmFycy5kYXRhXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlVmFyQnlJZEFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRCYWNrb2ZmaWNlVmFyQnlJZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZEJhY2tvZmZpY2VWYXJCeUlkQWN0aW9uKSB7XG4gICAgY29uc3QgdmFyJCA9IHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VWYXJCeUlkKGFjdGlvbi52YXJJZCk7XG4gICAgcmV0dXJuIHZhciQucGlwZSh0YXAodmFyUmVzcG9uc2UgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICB2YXJzOiBbdmFyUmVzcG9uc2UuZGF0YV1cbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oU3luY1VzZXJzQW5kUm9sZXNCeVNtYXJ0cGFya0lkQWN0aW9uKVxuICBvblN5bmNVc2Vyc0FuZFJvbGVzQnlTbWFydHBhcmtJZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogU3luY1VzZXJzQW5kUm9sZXNCeVNtYXJ0cGFya0lkQWN0aW9uKTogT2JzZXJ2YWJsZTxPYmplY3RIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LnN5bmNVc2Vyc0J5U21hcnRwYXJrSWQoYWN0aW9uLnNtYXJ0cGFyay50ZW5hbnRJRCwgYWN0aW9uLnNtYXJ0cGFyay5pZCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogXyA9PiB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uLnN1Y2Nlc3NmdWxfc3luY191c2Vyc19hbmRfcm9sZXNfZm9yX3NtYXJ0cGFyaywgeyBtZXNzYWdlUGFyYW1zOiB7IHNtYXJ0cGFya05hbWU6IGFjdGlvbi5zbWFydHBhcmsubmFtZSB9IH0pLFxuICAgICAgZXJyb3I6IGUgPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihwYXJzZUFwaUVycm9yTWVzc2FnZShlKSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLkZsb2F0IH0pLFxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oRXhwb3J0U21hcnRwYXJrQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uRXhwb3J0U21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogRXhwb3J0U21hcnRwYXJrQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU21hcnRwYXJrcyhhY3Rpb24uc21hcnRwYXJrRmlsdGVyKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoe1xuICAgICAgbmV4dDogc21hcnRwYXJrcyA9PiB7XG4gICAgICAgIGlmICghdGhpcy5leHBvcnRGaWxlU2VydmljZSkgeyByZXR1cm47IH1cbiAgICAgICAgY29uc3QgdGFibGVSb3dzOiBhbnlbXVtdID0gW107XG4gICAgICAgIGNvbnN0IHNtYXJ0cGFya3NMaXN0OiBTbWFydHBhcmtEdG9bXSA9IHNtYXJ0cGFya3MuZGF0YS5lbnRpdGllcztcbiAgICAgICAgc21hcnRwYXJrc0xpc3QuZm9yRWFjaCgoc21hcnRwYXJrKSA9PiB7XG4gICAgICAgICAgdGFibGVSb3dzLnB1c2goW1xuICAgICAgICAgICAgc21hcnRwYXJrLm5hbWUsXG4gICAgICAgICAgICBTbWFydFBhcmtUeXBlW3NtYXJ0cGFyay50eXBlXS5yZXBsYWNlKC8oW0EtWl0pL2csICcgJDEnKS50cmltKCksXG4gICAgICAgICAgICBzbWFydHBhcmsudGVuYW50TmFtZSxcbiAgICAgICAgICAgIHNtYXJ0cGFyay52ZXJzaW9uLFxuICAgICAgICAgICAgc21hcnRwYXJrLnNwYXJrVmVyc2lvbixcbiAgICAgICAgICAgIHNtYXJ0cGFyay5jcmVhdGVkQXQsXG4gICAgICAgICAgICBzbWFydHBhcmsuZ3VpZCxcbiAgICAgICAgICAgIHNtYXJ0cGFyay52YXJOYW1lIHx8ICctJyxcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFNtYXJ0UGFya1N0YXR1c1RleHRbU21hcnRQYXJrU3RhdHVzW3NtYXJ0cGFyay5zdGF0dXNdXSlcbiAgICAgICAgICBdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhwb3J0RmlsZVNlcnZpY2UuZXhwb3J0KGFjdGlvbi5maWxlVHlwZSwgdGFibGVSb3dzLCBhY3Rpb24uY29sdW1uc0hlYWRlciwgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnNtYXJ0cGFyaykpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmZhaWxlZF9leHBvcnRfZmlsZSkpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oRXhwb3J0UGRmU21hcnRwYXJrc1RhYmxlQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uRXhwb3J0UGRmU21hcnRwYXJrc1RhYmxlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBmaWx0ZXIgfTogRXhwb3J0UGRmU21hcnRwYXJrc1RhYmxlQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZXhwb3J0UGRmU21hcnRwYXJrczogbnVsbCxcbiAgICB9KTtcbiAgICBjb25zdCBzbWFydHBhcmtzJCA9IHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VTbWFydHBhcmtzKGZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXMsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQWxsU21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFNtYXJ0cGFya3NEcm9wZG93bkFjdGlvbik6IE9ic2VydmFibGU8U21hcnRwYXJrRmlsdGVyT3B0aW9uRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmxpY2Vuc2VDbG91ZFNlcnZpY2VQcm94eS5iYXNlU21hcnRwYXJrcyhhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm1heFJlc3VsdHMsXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5jb2x1bW4sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG5cbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoZmFjaWxpdHlUcmVlRHRvID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZmFjaWxpdHlUcmVlOiBmYWNpbGl0eVRyZWVEdG8uZGF0YSxcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oVXBkYXRlU21hcnRwYXJrVmFyQWN0aW9uKVxuICBvblVwZGF0ZVNtYXJ0cGFya1ZhckFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogVXBkYXRlU21hcnRwYXJrVmFyQWN0aW9uKSB7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQgPSB0aGlzLmdldE1lc3NhZ2VJbmZvKGFjdGlvbi5zbWFydHBhcmsubmFtZSwgTG9jYWxpemF0aW9uLnNtYXJ0cGFyaywgTG9jYWxpemF0aW9uLnVwZGF0ZSk7XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIG1lc3NhZ2VCYXJQYXlsb2FkKTtcblxuICAgIGNvbnN0IHVwZGF0ZVNtYXJ0cGFya1ZhcjogVXBkYXRlU21hcnRwYXJrVmFyRHRvID0gbmV3IFVwZGF0ZVNtYXJ0cGFya1ZhckR0byh7XG4gICAgICB2YXJJZDogYWN0aW9uLnZhckR0by5pZCxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS51cGRhdGVTbWFydHBhcmtWYXIoYWN0aW9uLnNtYXJ0cGFyay5pZCwgdXBkYXRlU21hcnRwYXJrVmFyKS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkID0gdGhpcy5nZXRNZXNzYWdlSW5mbyhhY3Rpb24uc21hcnRwYXJrLm5hbWUsIExvY2FsaXphdGlvbi5zbWFydHBhcmssIExvY2FsaXphdGlvbi51cGRhdGVkKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcywgbWVzc2FnZUJhclBheWxvYWQpO1xuXG4gICAgICAgIGNvbnN0IGRpc3BsYXllZFNtYXJ0cGFya3MgPSBjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtzIHx8IFtdO1xuICAgICAgICBjb25zdCBzbWFydHBhcmtJbmRleCA9IGRpc3BsYXllZFNtYXJ0cGFya3MuZmluZEluZGV4KGUgPT4gZSBpbnN0YW5jZW9mIFNtYXJ0cGFya0R0byAmJiBlLmlkID09PSBhY3Rpb24uc21hcnRwYXJrLmlkKTtcblxuICAgICAgICBpZiAoc21hcnRwYXJrSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZFNtYXJ0cGFya3MgPSBkaXNwbGF5ZWRTbWFydHBhcmtzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gc21hcnRwYXJrSW5kZXggJiYgaXRlbSBpbnN0YW5jZW9mIFNtYXJ0cGFya0R0bykge1xuICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkID0gbmV3IFNtYXJ0cGFya0R0byh7XG4gICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICB2YXJJZDogYWN0aW9uLnZhckR0by5pZCxcbiAgICAgICAgICAgICAgICB2YXJOYW1lOiBhY3Rpb24udmFyRHRvLm5hbWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW3VwZGF0ZWRdLCBSb3dPcGVyYXRpb24uVXBkYXRlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICAgIHNtYXJ0cGFya3M6IHVwZGF0ZWRTbWFydHBhcmtzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWQsIG1lc3NhZ2VCYXJQYXlsb2FkKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNldFNtYXJ0cGFya0VkZ2VXZWJob29rc0FjdGlvbilcbiAgb25TZXRTbWFydHBhcmtFZGdlV2ViaG9va3NBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNldFNtYXJ0cGFya0VkZ2VXZWJob29rc0FjdGlvbikge1xuICAgIC8vIFNQUkszLTE0NDAwOiBvcHRpb25hbCBzbyBhcHBzIHRoYXQgcmVnaXN0ZXIgU21hcnRwYXJrU3RhdGUgd2l0aG91dCB0aGlzIHByb3h5IChtb2JpbGUpIHN0aWxsIGJvb3RzdHJhcC5cbiAgICBpZiAoIXRoaXMuYmFja29mZmljZUVkZ2VXZWJob29rc1JwY1NlcnZpY2VQcm94eSkge1xuICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihMb2NhbGl6YXRpb24uZ2VuZXJhbF9lcnJvciwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLkZsb2F0IH0pO1xuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkID0gdGhpcy5nZXRNZXNzYWdlSW5mbyhhY3Rpb24uc21hcnRwYXJrLm5hbWUsIExvY2FsaXphdGlvbi5zbWFydHBhcmssIExvY2FsaXphdGlvbi51cGRhdGUpO1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBtZXNzYWdlQmFyUGF5bG9hZCk7XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IFJwYy5TZXRFZGdlV2ViaG9va3NSZXF1ZXN0RHRvKHsgZW5hYmxlOiBhY3Rpb24uZW5hYmxlIH0pO1xuXG4gICAgLy8gU1BSSzMtMTQ0MDA6IHRoZSBjb21tYW5kIGlzIFNtYXJ0UGFyay13aWRlOyBmYWNpbGl0eUlkIDAgZmlsbHMgdGhlIHJvdXRlIGNvbnZlbnRpb24gb25seS5cbiAgICByZXR1cm4gdGhpcy5iYWNrb2ZmaWNlRWRnZVdlYmhvb2tzUnBjU2VydmljZVByb3h5LnNldEVkZ2VXZWJob29rcyhhY3Rpb24uc21hcnRwYXJrLmd1aWQsIDAsIHJlcXVlc3QpLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzTWVzc2FnZSA9IHN0YXRlLmlzRW5hYmxlZFdlYmhvb2tzXG4gICAgICAgICAgPyBMb2NhbGl6YXRpb24uZWRnZV93ZWJob29rc19lbmFibGVkX2Zvcl9zbWFydHBhcmtcbiAgICAgICAgICA6IExvY2FsaXphdGlvbi5lZGdlX3dlYmhvb2tzX2Rpc2FibGVkX2Zvcl9zbWFydHBhcms7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhzdWNjZXNzTWVzc2FnZSwgeyBtZXNzYWdlUGFyYW1zOiB7IHNtYXJ0cGFya05hbWU6IGFjdGlvbi5zbWFydHBhcmsubmFtZSB9IH0pO1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTbWFydHBhcmtzID0gKGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya3MgfHwgW10pLm1hcChpdGVtID0+IHtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gaXRlbTtcbiAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIFNtYXJ0cGFya0R0byAmJiBpdGVtLmlkID09PSBhY3Rpb24uc21hcnRwYXJrLmlkKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBuZXcgU21hcnRwYXJrRHRvKHsgLi4uaXRlbSwgaXNFbmFibGVkV2ViaG9va3M6IHN0YXRlLmlzRW5hYmxlZFdlYmhvb2tzIH0pO1xuICAgICAgICAgICAgbWFya0VudGl0aWVzQXNDaGFuZ2VkKFtyZXN1bHRdLCBSb3dPcGVyYXRpb24uVXBkYXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoeyBzbWFydHBhcmtzOiB1cGRhdGVkU21hcnRwYXJrcyB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgLy8gVGhlIGdlbmVyYXRlZCBjbGllbnQgdGhyb3dzIHRoZSBib2R5IGl0c2VsZjogUHJvYmxlbURldGFpbHMgZm9yIDQwNC81MDAvNTA0LCBWYWxpZGF0aW9uUHJvYmxlbURldGFpbHMgZm9yIDQwMC5cbiAgICAgICAgY29uc3QgcHJvYmxlbTogUnBjLlByb2JsZW1EZXRhaWxzIHwgUnBjLlZhbGlkYXRpb25Qcm9ibGVtRGV0YWlscyB8IHVuZGVmaW5lZCA9XG4gICAgICAgICAgZSBpbnN0YW5jZW9mIFJwYy5Qcm9ibGVtRGV0YWlscyB8fCBlIGluc3RhbmNlb2YgUnBjLlZhbGlkYXRpb25Qcm9ibGVtRGV0YWlscyA/IGUgOiBlPy5yZXN1bHQ7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IocHJvYmxlbT8uZGV0YWlsIHx8IHByb2JsZW0/LnRpdGxlIHx8IHBhcnNlQXBpRXJyb3JNZXNzYWdlKGUpLCB7IHBvc2l0aW9uOiBNZXNzYWdlQmFyUG9zaXRpb24uRmxvYXQgfSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cblxuXG4gIHByaXZhdGUgZ2V0TWVzc2FnZUluZm8oZW50aXR5TmFtZTogc3RyaW5nLCBlbnRpdHlUeXBlOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nKSB7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkID0ge1xuICAgICAgZW50aXR5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChlbnRpdHlUeXBlKSxcbiAgICAgIGVudGl0eU5hbWUsXG4gICAgICBhY3Rpb246IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGFjdGlvbikpLFxuICAgIH07XG5cbiAgICByZXR1cm4gY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpO1xuICB9XG59XG4iXX0=
|
|
613
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwYXJrLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3NtYXJ0cGFya3Mvc21hcnRwYXJrLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUc1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBRXVCLFlBQVksRUFDeEMsZUFBZSxFQUFFLGFBQWEsRUFBeUIscUJBQXFCLEVBQzdFLE1BQU0sMkNBQTJDLENBQUM7QUFNbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFN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WUFDekIsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixLQUFLLEVBQUUsSUFBSTtZQUNYLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLG1CQUFtQixFQUFFLElBQUk7WUFDekIsYUFBYSxFQUFFLElBQUk7WUFDbkIsUUFBUSxFQUFFLEVBQUU7WUFDWixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsSUFBSSxFQUFFLEVBQUU7WUFDUixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLFlBQVksRUFBRSxFQUFFO1NBQ2pCO0tBQ0YsQ0FBQztHQUNXLGNBQWMsQ0FzaEIxQjs7NEZBdGhCWSxjQUFjO2tCQXRCMUIsVUFBVTs7MEJBZ0NOLFFBQVE7OzBCQUdSLFFBQVE7eUNBeUZYLDRCQUE0QixNQU81QiwyQkFBMkIsTUFZM0IscUNBQXFDLE1BYXJDLHlCQUF5QixNQU96QixxQkFBcUIsTUFlckIsNEJBQTRCLE1BUTVCLDJCQUEyQixNQWEzQiw0QkFBNEIsTUFxQjVCLGlCQUFpQixNQW9EakIsaUJBQWlCLE1BdUJqQixrQkFBa0IsTUFNbEIseUJBQXlCLE1BUXpCLDhCQUE4QixNQVE5QixvQ0FBb0MsTUFnQnBDLDRCQUE0QixNQU81Qiw4QkFBOEIsTUFVOUIsd0NBQXdDLE1BVXhDLCtCQUErQixNQU8vQixnQkFBZ0IsTUFXaEIsMEJBQTBCLE1BVzFCLDZCQUE2QixNQVU3QixzQ0FBc0MsTUFRdEMsd0JBQXdCLE1BNkJ4QixnQ0FBZ0MsTUFhaEMseUJBQXlCLE1BWXpCLDBCQUEwQixNQTBDMUIsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci1wb3NpdGlvbi5lbnVtJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJQYXlsb2FkIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci10ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBTbWFydFBhcmtTdGF0dXNUZXh0IH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvbG9jYWxpemF0aW9uLmVudW0nO1xuaW1wb3J0IHsgSVBhcmtEZXRhaWxzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wYXJrLWRldGFpbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJwYyB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHknO1xuaW1wb3J0IHtcbiAgQmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LCBGYWNpbGl0eUJhc2ljRHRvLCBMaWNlbnNlQ2xvdWRTZXJ2aWNlUHJveHksIE9iamVjdEh0dHBSZXNwb25zZURhdGEsXG4gIFNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5LCBTbWFydHBhcmtEdG8sIFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0bywgU21hcnRwYXJrRmlsdGVyT3B0aW9uRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhLFxuICBTbWFydFBhcmtTdGF0dXMsIFNtYXJ0UGFya1R5cGUsIFNwQW5kU3BhcmtWZXJzaW9uc0R0bywgVXBkYXRlU21hcnRwYXJrVmFyRHRvLCBWYXJEdG9cbn0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgU21hcnRwYXJrQmFzaWNEdG8sIFNtYXJ0UGFya1dyYXBwZXJEdG8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2lkZW50aXR5LXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBGYWNpbGl0eVJwY1NlcnZpY2VQcm94eSwgSURldmljZUR0byB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvcnBjLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBFeHBvcnRGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydC1maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmV2ZW51ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXZlbnVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRwYXJrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NtYXJ0cGFyay5zZXJ2aWNlJztcbmltcG9ydCB7IHBhcnNlQXBpRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLWhlbHBlci51dGlsJztcbmltcG9ydCB7IGdldERlZmF1bHREZXZpY2VTdGF0dXMgfSBmcm9tICcuLi8uLi91dGlscy9kZXZpY2UudXRpbCc7XG5pbXBvcnQgeyBtYXJrRW50aXRpZXNBc0NoYW5nZWQsIFJvd09wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlci51dGlsJztcbmltcG9ydCB7IFNldFNtYXJ0cGFya0Jhc2ljQWxsQWN0aW9uIH0gZnJvbSAnLi4vZmFjaWxpdHkvZmFjaWxpdHkuYWN0aW9ucyc7XG5pbXBvcnQgeyBTaWRlbmF2U3RhdGUgfSBmcm9tICcuLi9zaWRlbmF2L3NpZGVuYXYuc3RhdGUnO1xuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IGNyZWF0ZU1lc3NhZ2VUZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvbWVzc2FnZS1iYXIudXRpbCc7XG5pbXBvcnQgeyBsb3dlckNhc2VGaXJzdExldHRlciB9IGZyb20gJy4uLy4uL3V0aWxzL3RleHQudXRpbCc7XG5pbXBvcnQge1xuICBDbGVhclNlbGVjdGVkUGFya0FjdGlvbiwgQ2xlYXJTZWxlY3RlZFNtYXJ0cGFya0FjdGlvbiwgQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24sIENsZWFyU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uLFxuICBFeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24sIEV4cG9ydFNtYXJ0cGFya0FjdGlvbiwgTG9hZEJhY2tvZmZpY2VTbWFydHBhcmtzVGFibGVBY3Rpb24sXG4gIExvYWRCYWNrb2ZmaWNlU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uLCBMb2FkQmFja29mZmljZVZhckJ5SWRBY3Rpb24sIExvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbixcbiAgTG9hZFBhcmtEZXZpY2VzQWN0aW9uLCBMb2FkUGFya3NBY3Rpb24sIExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24sIExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24sXG4gIExvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24sIExvYWRWYXJzQWN0aW9uLCBSZW1vdmVTbWFydHBhcmtCYXNpY0FjdGlvbiwgU2VsZWN0UGFya0FjdGlvbiwgU2VsZWN0U21hcnRQYXJrQWN0aW9uLFxuICBTZXRTZWxlY3RlZFNtYXJ0cGFya0FjdGlvbiwgU2V0U21hcnRQYXJrQWN0aW9uLCBTZXRTbWFydFBhcmtUYWJsZUFjdGlvbiwgU2V0U21hcnRQYXJrVmVyc2lvbnNBY3Rpb24sXG4gIFNldFNtYXJ0cGFya0VkZ2VXZWJob29rc0FjdGlvbiwgU21hcnRQYXJrRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbiwgU3luY1VzZXJzQW5kUm9sZXNCeVNtYXJ0cGFya0lkQWN0aW9uLFxuICBVcGRhdGVTbWFydHBhcmtOYW1lQWN0aW9uLCBVcGRhdGVTbWFydHBhcmtWYXJBY3Rpb25cbn0gZnJvbSAnLi9zbWFydHBhcmsuYWN0aW9ucyc7XG5pbXBvcnQgeyBjb3VudFNtYXJ0cGFya1BhcmtpbmdMb3RzIH0gZnJvbSAnLi9zbWFydHBhcmsudXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRwYXJrc1N0YXRlTW9kZWwge1xuICBzbWFydHBhcmtzOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW107XG4gIGxhdGVzdFNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXTtcbiAgU3BBbmRTcGFya1ZlcnNpb25zOiBTcEFuZFNwYXJrVmVyc2lvbnNEdG87XG4gIGNvdW50U21hcnRQYXJrczogbnVtYmVyO1xuICBjb3VudFBhcmtpbmdMb3RzOiBudW1iZXI7XG4gIHNlbGVjdGVkU21hcnRQYXJrSWQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRTbWFydFBhcms6IFNtYXJ0cGFya0R0bztcbiAgcGFya3M6IEZhY2lsaXR5QmFzaWNEdG9bXTtcbiAgc2VsZWN0ZWRQYXJrSWQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYXJrRGV0YWlsczogSVBhcmtEZXRhaWxzO1xuICBzbWFydHBhcmtHdWlkOiBzdHJpbmc7XG4gIHZlcnNpb25zOiBTdHJpbmdNYXA8c3RyaW5nPjtcbiAgc21hcnRQYXJrV3JhcHBlcjogU21hcnRQYXJrV3JhcHBlckR0bztcbiAgdmFyczogVmFyRHRvW107XG4gIGV4cG9ydFBkZlNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXTtcbiAgZmFjaWxpdHlUcmVlOiBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG9bXTtcbn1cblxuQEluamVjdGFibGUoKVxuQFN0YXRlPFNtYXJ0cGFya3NTdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICdzbWFydHBhcmsnLFxuICBkZWZhdWx0czoge1xuICAgIHNtYXJ0cGFya3M6IG51bGwsXG4gICAgbGF0ZXN0U21hcnRwYXJrczogbnVsbCxcbiAgICBjb3VudFNtYXJ0UGFya3M6IDAsXG4gICAgY291bnRQYXJraW5nTG90czogMCxcbiAgICBzZWxlY3RlZFNtYXJ0UGFya0lkOiBudWxsLFxuICAgIHNlbGVjdGVkU21hcnRQYXJrOiBudWxsLFxuICAgIHBhcmtzOiBudWxsLFxuICAgIHNlbGVjdGVkUGFya0lkOiBudWxsLFxuICAgIHNlbGVjdGVkUGFya0RldGFpbHM6IG51bGwsXG4gICAgc21hcnRwYXJrR3VpZDogbnVsbCxcbiAgICB2ZXJzaW9uczoge30sXG4gICAgU3BBbmRTcGFya1ZlcnNpb25zOiBudWxsLFxuICAgIHNtYXJ0UGFya1dyYXBwZXI6IG51bGwsXG4gICAgdmFyczogW10sXG4gICAgZXhwb3J0UGRmU21hcnRwYXJrczogbnVsbCxcbiAgICBmYWNpbGl0eVRyZWU6IFtdLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydHBhcmtTdGF0ZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSByZXZlbnVlU2VydmljZTogUmV2ZW51ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbWFydHBhcmtTZXJ2aWNlOiBTbWFydHBhcmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgc21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHk6IFNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZmFjaWxpdHlScGNTZXJ2aWNlUHJveHk6IEZhY2lsaXR5UnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZGV2aWNlUnBjU2VydmljZVByb3h5OiBScGMuRGV2aWNlUnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgbWVzc2FnZUJhclNlcnZpY2U6IE1lc3NhZ2VCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGV4cG9ydEZpbGVTZXJ2aWNlOiBFeHBvcnRGaWxlU2VydmljZSB8IG51bGwsXG4gICAgcHJpdmF0ZSBiYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHk6IEJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGxpY2Vuc2VDbG91ZFNlcnZpY2VQcm94eTogTGljZW5zZUNsb3VkU2VydmljZVByb3h5LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgYmFja29mZmljZUVkZ2VXZWJob29rc1JwY1NlcnZpY2VQcm94eTogUnBjLkJhY2tvZmZpY2VFZGdlV2ViaG9va3NScGNTZXJ2aWNlUHJveHkgfCBudWxsKSB7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IEZhY2lsaXR5QmFzaWNEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLnBhcmtzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFBhcmtJZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFBhcmtJZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRQYXJrRGV0YWlscyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBJUGFya0RldGFpbHMge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFBhcmtEZXRhaWxzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwYXJrRGV2aWNlcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBJRGV2aWNlRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFBhcmtEZXRhaWxzPy5kZXZpY2VzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBndWlkKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0cGFya0d1aWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNtYXJ0cGFya3Moc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdIHtcbiAgICByZXR1cm4gc3RhdGUuc21hcnRwYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgbGF0ZXN0UGFnZShzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW10ge1xuICAgIHJldHVybiBzdGF0ZS5sYXRlc3RTbWFydHBhcmtzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFNtYXJ0UGFya0lkKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkU21hcnRQYXJrSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkU21hcnRQYXJrRGV0YWlscyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTbWFydHBhcmtEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFNtYXJ0UGFyaztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgY291bnRTbWFydFBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLmNvdW50U21hcnRQYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgY291bnRQYXJraW5nTG90cyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5jb3VudFBhcmtpbmdMb3RzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyB2ZXJzaW9ucyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTdHJpbmdNYXA8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHN0YXRlLnZlcnNpb25zO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzbWFydHBhcmtTZWFyY2hPcHRpb25zKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IFNwQW5kU3BhcmtWZXJzaW9uc0R0byB7XG4gICAgcmV0dXJuIHN0YXRlLlNwQW5kU3BhcmtWZXJzaW9ucztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc21hcnRQYXJrV3JhcHBlcihzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTbWFydFBhcmtXcmFwcGVyRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuc21hcnRQYXJrV3JhcHBlcjtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdmFycyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBWYXJEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLnZhcnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGV4cG9ydFBkZlNtYXJ0cGFya3Moc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdIHtcbiAgICByZXR1cm4gc3RhdGUuZXhwb3J0UGRmU21hcnRwYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZmFjaWxpdHlUcmVlKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZmFjaWxpdHlUcmVlO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkNsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgXzogQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydFBhcmtXcmFwcGVyOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkU21hcnRwYXJrc1RhYmxlQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFNtYXJ0cGFya3NUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgZmlsdGVyIH06IExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24pIHtcbiAgICBjb25zdCBzbWFydHBhcmtzJCA9IHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VTbWFydHBhcmtzKGZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBsYXRlc3RTbWFydHBhcmtzOiBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXMsXG4gICAgICAgIGNvdW50U21hcnRQYXJrczogc21hcnRwYXJrcy5kYXRhLmNvdW50ZXIsXG4gICAgICAgIGNvdW50UGFya2luZ0xvdHM6IHNtYXJ0cGFya3MuZGF0YS5zdWJDb3VudGVyXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEJhY2tvZmZpY2VTbWFydHBhcmtzVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGZpbHRlciB9OiBMb2FkQmFja29mZmljZVNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoZmlsdGVyKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGxhdGVzdFNtYXJ0cGFya3M6IHNtYXJ0cGFya3MuZGF0YS5lbnRpdGllcyxcbiAgICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzLmRhdGEuY291bnRlcixcbiAgICAgICAgY291bnRQYXJraW5nTG90czogc21hcnRwYXJrcy5kYXRhLnN1YkNvdW50ZXJcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG5cbiAgQEFjdGlvbihTZXRTbWFydFBhcmtUYWJsZUFjdGlvbilcbiAgb25TZXRTbWFydFBhcmtUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgc21hcnRwYXJrcyB9OiBTZXRTbWFydFBhcmtUYWJsZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0cGFya3NcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0U21hcnRQYXJrQWN0aW9uKVxuICBvblNldFNtYXJ0UGFya3NBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IHNtYXJ0cGFya1dyYXBwZXIsIHJlbG9hZCB9OiBTZXRTbWFydFBhcmtBY3Rpb24pIHtcbiAgICBjb25zdCBzbWFydHBhcmtzOiBTbWFydHBhcmtCYXNpY0R0b1tdID0gc21hcnRwYXJrV3JhcHBlcj8uZGF0YT8uc21hcnRQYXJrcyA/IE9iamVjdC52YWx1ZXMoc21hcnRwYXJrV3JhcHBlci5kYXRhLnNtYXJ0UGFya3MpIDogW107XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc21hcnRwYXJrcyxcbiAgICAgIHNtYXJ0UGFya1dyYXBwZXI6IHNtYXJ0cGFya1dyYXBwZXI/LmRhdGEgPz8gbnVsbCxcbiAgICAgIGNvdW50U21hcnRQYXJrczogc21hcnRwYXJrcy5sZW5ndGgsXG4gICAgICBjb3VudFBhcmtpbmdMb3RzOiBjb3VudFNtYXJ0cGFya1BhcmtpbmdMb3RzKHNtYXJ0cGFya3MpXG4gICAgfSk7XG5cbiAgICBpZiAoY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRTbWFydFBhcmtJZCkge1xuICAgICAgY3R4LmRpc3BhdGNoKG5ldyBTZWxlY3RTbWFydFBhcmtBY3Rpb24oY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRTbWFydFBhcmtJZCwgcmVsb2FkKSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihTZXRTZWxlY3RlZFNtYXJ0cGFya0FjdGlvbilcbiAgb25TZXRTZWxlY3RlZFNtYXJ0cGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgc21hcnRQYXJrSWQsIHNtYXJ0cGFyaywgcmVsb2FkIH06IFNldFNlbGVjdGVkU21hcnRwYXJrQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoeyBzZWxlY3RlZFNtYXJ0UGFya0lkOiBzbWFydFBhcmtJZCwgc2VsZWN0ZWRTbWFydFBhcms6IHNtYXJ0cGFyayB9KTtcbiAgICBpZiAocmVsb2FkKSB7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IExvYWRQYXJrc0FjdGlvbigpKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZVNtYXJ0cGFya05hbWVBY3Rpb24pXG4gIG9uVXBkYXRlU21hcnRwYXJrTmFtZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgc21hcnRQYXJrSWQsIG5hbWUgfTogVXBkYXRlU21hcnRwYXJrTmFtZUFjdGlvbikge1xuICAgIGNvbnN0IHN0YXRlID0gY3R4LmdldFN0YXRlKCk7XG4gICAgY29uc3Qgc21hcnRwYXJrcyA9IChzdGF0ZS5zbWFydHBhcmtzIHx8IFtdKS5tYXAoc21hcnRwYXJrID0+XG4gICAgICAoc21hcnRwYXJrIGFzIFNtYXJ0cGFya0R0bykuaWQgPT09IHNtYXJ0UGFya0lkXG4gICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihzbWFydHBhcmspKSwgc21hcnRwYXJrLCB7IG5hbWUgfSlcbiAgICAgICAgOiBzbWFydHBhcmspO1xuICAgIGNvbnN0IHNlbGVjdGVkU21hcnRQYXJrID0gc3RhdGUuc2VsZWN0ZWRTbWFydFBhcmtJZCA9PT0gc21hcnRQYXJrSWQgJiYgc3RhdGUuc2VsZWN0ZWRTbWFydFBhcmtcbiAgICAgID8gbmV3IFNtYXJ0cGFya0R0byh7IC4uLnN0YXRlLnNlbGVjdGVkU21hcnRQYXJrLCBuYW1lIH0pXG4gICAgICA6IHN0YXRlLnNlbGVjdGVkU21hcnRQYXJrO1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc21hcnRwYXJrcywgc2VsZWN0ZWRTbWFydFBhcmsgfSk7XG4gIH1cblxuICBAQWN0aW9uKFJlbW92ZVNtYXJ0cGFya0Jhc2ljQWN0aW9uKVxuICBvblJlbW92ZVNtYXJ0cGFya0Jhc2ljQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBndWlkIH06IFJlbW92ZVNtYXJ0cGFya0Jhc2ljQWN0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGUgPSBjdHguZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBzbWFydHBhcmtzID0gKHN0YXRlLnNtYXJ0cGFya3MgfHwgW10pLmZpbHRlcihzbWFydHBhcmsgPT4gc21hcnRwYXJrLmd1aWQgIT09IGd1aWQpO1xuICAgIGxldCBzbWFydFBhcmtXcmFwcGVyID0gc3RhdGUuc21hcnRQYXJrV3JhcHBlcjtcbiAgICBpZiAoc21hcnRQYXJrV3JhcHBlcj8uc21hcnRQYXJrcz8uW2d1aWRdKSB7XG4gICAgICBjb25zdCBzbWFydFBhcmtzID0geyAuLi5zbWFydFBhcmtXcmFwcGVyLnNtYXJ0UGFya3MgfTtcbiAgICAgIGRlbGV0ZSBzbWFydFBhcmtzW2d1aWRdO1xuICAgICAgc21hcnRQYXJrV3JhcHBlciA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc21hcnRQYXJrV3JhcHBlcikpLCBzbWFydFBhcmtXcmFwcGVyLCB7IHNtYXJ0UGFya3MgfSk7XG4gICAgfVxuICAgIGNvbnN0IHZlcnNpb25zID0geyAuLi5zdGF0ZS52ZXJzaW9ucyB9O1xuICAgIGRlbGV0ZSB2ZXJzaW9uc1tndWlkXTtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydHBhcmtzLFxuICAgICAgc21hcnRQYXJrV3JhcHBlcixcbiAgICAgIHZlcnNpb25zLFxuICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzLmxlbmd0aCxcbiAgICAgIGNvdW50UGFya2luZ0xvdHM6IGNvdW50U21hcnRwYXJrUGFya2luZ0xvdHMoc21hcnRwYXJrcyksXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRQYXJrc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRQYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkUGFya0RldGFpbHM6IG51bGwsIHNlbGVjdGVkUGFya0lkOiBudWxsLCBwYXJrczogbnVsbCwgc21hcnRwYXJrR3VpZDogbnVsbCB9KTtcbiAgICBjb25zdCBndWlkID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRTbWFydFBhcms/Lmd1aWQ7XG4gICAgaWYgKCFndWlkKSB7XG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVkU21hcnRQYXJrcyA9IGN0eC5nZXRTdGF0ZSgpLnNtYXJ0UGFya1dyYXBwZXI/LnNtYXJ0UGFya3M7XG4gICAgaWYgKGNhY2hlZFNtYXJ0UGFya3MgJiYgIWNhY2hlZFNtYXJ0UGFya3NbZ3VpZF0pIHtcbiAgICAgIHRoaXMucmVmcmVzaFNtYXJ0cGFya0Jhc2ljcygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChTbWFydHBhcmtTdGF0ZS5zbWFydFBhcmtXcmFwcGVyKS5waXBlKFxuICAgICAgZmlsdGVyKHNtYXJ0UGFya1dyYXBwZXIgPT4gISFzbWFydFBhcmtXcmFwcGVyPy5zbWFydFBhcmtzPy5bZ3VpZF0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuc21hcnRwYXJrU2VydmljZS5oYXNFcnJvciQucGlwZShmaWx0ZXIoQm9vbGVhbikpKSxcbiAgICAgIHRha2UoMSksXG4gICAgICB0YXAoc21hcnRQYXJrV3JhcHBlciA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkU21hcnRQYXJrID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRTbWFydFBhcms7XG4gICAgICAgIGlmICghc2VsZWN0ZWRTbWFydFBhcmspIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBzZWxlY3RlZFNtYXJ0UGFyaztcbiAgICAgICAgbGV0IHNlbGVjdGVkUGFya0lkOiBudW1iZXI7XG4gICAgICAgIGNvbnN0IHBhcmtzID0gc21hcnRQYXJrV3JhcHBlci5zbWFydFBhcmtzW2d1aWRdPy5mYWNpbGl0aWVzO1xuICAgICAgICBpZiAodHlwZSA9PT0gU21hcnRQYXJrVHlwZS5TdXBlclBhcmspIHtcbiAgICAgICAgICBjb25zdCBtdWx0aVBhcmsgPSBwYXJrcz8uZmluZChwYXJrID0+IHBhcmsuaXNNdWx0aVBhcmspO1xuICAgICAgICAgIHNlbGVjdGVkUGFya0lkID0gbXVsdGlQYXJrID8gbXVsdGlQYXJrLmlkIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBwYXJrczogcGFya3MgfHwgW10sXG4gICAgICAgICAgc2VsZWN0ZWRQYXJrSWQ6IHNlbGVjdGVkUGFya0lkID8/IChwYXJrcz8ubGVuZ3RoICYmIHBhcmtzWzBdLmlkIHx8IG51bGwpLFxuICAgICAgICAgIHNtYXJ0cGFya0d1aWQ6IGd1aWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwYXJrcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY3R4LmRpc3BhdGNoKExvYWRQYXJrRGV2aWNlc0FjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hTbWFydHBhcmtCYXNpY3MoKTogdm9pZCB7XG4gICAgY29uc3QgYXBwTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuYXBwTW9kdWxlKTtcbiAgICBjb25zdCBzdWJNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5zdWJNb2R1bGUpO1xuICAgIC8vIHNldFNtYXJ0cGFya0Jhc2ljPWZhbHNlIGtlZXBzIHRoZSBwcmUtZmV0Y2ggY2xlYXJzIG91dCBvZiB0aGUgd2F5LCBzbyB0aGUgZHJvcGRvd24gYW5kIHRhYmxlXG4gICAgLy8gc3RheSBwb3B1bGF0ZWQgd2hpbGUgdGhlIHJlZnJlc2hlZCB3cmFwcGVyIGFycml2ZXMuXG4gICAgdGhpcy5zbWFydHBhcmtTZXJ2aWNlLmdldFNtYXJ0cGFya0Jhc2ljQWxsKGFwcE1vZHVsZSwgc3ViTW9kdWxlLCBmYWxzZSlcbiAgICAgIC5zdWJzY3JpYmUoc21hcnRwYXJrQmFzaWMgPT4gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24oc21hcnRwYXJrQmFzaWMpKSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRQYXJrRGV2aWNlc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRQYXJrRGV2aWNlcyhjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjb25zdCBwYXJrRGV0YWlsID0gY3R4LmdldFN0YXRlKCkucGFya3MuZmluZCgocGFyaykgPT4gcGFyay5pZCA9PT0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRQYXJrSWQpO1xuICAgIGNvbnN0IGd1aWQgPSBjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtHdWlkO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mYWNpbGl0eVJwY1NlcnZpY2VQcm94eS5nZXRGYWNpbGl0eShndWlkLCBwYXJrRGV0YWlsLmlkKSxcbiAgICAgIHRoaXMucmV2ZW51ZVNlcnZpY2UuZ2V0UmV2ZW51ZShwYXJrRGV0YWlsLmlkLCBndWlkKS5waXBlKGZpbHRlcihyZXZlbnVlID0+ICEhcmV2ZW51ZSkpLFxuICAgICAgdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0U21hcnRwYXJrc0RldmljZXMoZ3VpZCwgcGFya0RldGFpbC5pZCwgbnVsbCwgbnVsbCwgbnVsbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpLFxuICAgIF0pLnBpcGUodGFwKChbZmFjaWxpdHksIHJldmVudWVzLCBkZXZpY2VzXSkgPT4ge1xuICAgICAgY29uc3QgcmV2ZW51ZSA9IHBhcmtEZXRhaWwuaXNNdWx0aVBhcmsgPT0gMSA/IHRoaXMucmV2ZW51ZVNlcnZpY2UuY2FsY3VsYXRlUmV2ZW51ZUZvck11bHRpUGFyayhyZXZlbnVlcykgOiByZXZlbnVlc1twYXJrRGV0YWlsLmlkXTtcbiAgICAgIGRldmljZXM/LmRhdGEuZm9yRWFjaChkZXZpY2UgPT4gZGV2aWNlLmRldmljZVN0YXR1cyA9IGRldmljZS5kZXZpY2VTdGF0dXMgPz8gZ2V0RGVmYXVsdERldmljZVN0YXR1cyhkZXZpY2UpKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgc2VsZWN0ZWRQYXJrRGV0YWlsczoge1xuICAgICAgICAgIGZhY2lsaXR5OiBmYWNpbGl0eS5kYXRhLFxuICAgICAgICAgIGRldmljZXM6IGRldmljZXMuZGF0YSxcbiAgICAgICAgICByZXZlbnVlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG5cbiAgQEFjdGlvbihTZWxlY3RQYXJrQWN0aW9uKVxuICBvblNlbGVjdFBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdFBhcmtBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkUGFya0lkOiBhY3Rpb24ucGFya0lkIH0pO1xuICAgIGN0eC5kaXNwYXRjaChMb2FkUGFya0RldmljZXNBY3Rpb24pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlbGVjdGVkUGFya0FjdGlvbilcbiAgb25DbGVhclNlbGVjdGVkUGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBudWxsLFxuICAgICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24pXG4gIG9uQ2xlYXJTZWxlY3RlZHNtYXJ0cGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFNtYXJ0UGFya0lkOiBudWxsLFxuICAgICAgc2VsZWN0ZWRTbWFydFBhcms6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pXG4gIG9uU21hcnRQYXJrRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogU21hcnRQYXJrRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGVkUGFya0RldGFpbHMgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFBhcmtEZXRhaWxzO1xuICAgIGlmIChzZWxlY3RlZFBhcmtEZXRhaWxzKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHNlbGVjdGVkUGFya0RldGFpbHM/LmRldmljZXM/LmZpbmRJbmRleChkZXZpY2UgPT4gZGV2aWNlLmlkID09PSBhY3Rpb24uZGV2aWNlU3RhdHVzLmRldmljZUlEKTtcbiAgICAgIGNvbnN0IGNvbW11bmljYXRpb25QZXJjZW50YWdlID0gc2VsZWN0ZWRQYXJrRGV0YWlscy5kZXZpY2VzW2luZGV4XS5kZXZpY2VTdGF0dXMuY29tbXVuaWNhdGlvblBlcmNlbnRhZ2U7XG4gICAgICBjb25zdCBuZXdDb21tUGVyY2VudGFnZSA9IGFjdGlvbi5kZXZpY2VTdGF0dXMuY29tbXVuaWNhdGlvblBlcmNlbnRhZ2U7XG4gICAgICBpZiAoaW5kZXggPj0gMCAmJiBjb21tdW5pY2F0aW9uUGVyY2VudGFnZSAhPT0gbmV3Q29tbVBlcmNlbnRhZ2UpIHtcbiAgICAgICAgc2VsZWN0ZWRQYXJrRGV0YWlscy5kZXZpY2VzW2luZGV4XS5kZXZpY2VTdGF0dXMuY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgPSBuZXdDb21tUGVyY2VudGFnZTtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGVkUGFya0RldGFpbHM6IGNsb25lRGVlcChzZWxlY3RlZFBhcmtEZXRhaWxzKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihTZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbilcbiAgb25TZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0U21hcnRQYXJrVmVyc2lvbnNBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICB2ZXJzaW9uczogYWN0aW9uLnZlcnNpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKVxuICBvbkxvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgaWYgKGN0eC5nZXRTdGF0ZSgpLlNwQW5kU3BhcmtWZXJzaW9ucyA9PSBudWxsKSB7XG4gICAgICBjb25zdCB2ZXJzaW9ucyQgPSB0aGlzLnNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5LmdldFNwQW5kU3BhcmtWZXJzaW9ucygpO1xuICAgICAgcmV0dXJuIHZlcnNpb25zJC5waXBlKHRhcCh2ZXJzaW9ucyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHsgU3BBbmRTcGFya1ZlcnNpb25zOiB2ZXJzaW9ucy5kYXRhIH0pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uTG9hZEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgaWYgKGN0eC5nZXRTdGF0ZSgpLlNwQW5kU3BhcmtWZXJzaW9ucyA9PSBudWxsKSB7XG4gICAgICBjb25zdCB2ZXJzaW9ucyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU3BBbmRTcGFya1ZlcnNpb25zKCk7XG4gICAgICByZXR1cm4gdmVyc2lvbnMkLnBpcGUodGFwKHZlcnNpb25zID0+IHtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoeyBTcEFuZFNwYXJrVmVyc2lvbnM6IHZlcnNpb25zLmRhdGEgfSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihDbGVhclNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbilcbiAgb25DbGVhclNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBTcEFuZFNwYXJrVmVyc2lvbnM6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFZhcnNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkVmFyc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFZhcnNBY3Rpb24pIHtcbiAgICBjb25zdCB2YXJzJCA9IHRoaXMuc21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0VmFycyhhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm1heFJlc3VsdHMsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5jb2x1bW4sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG4gICAgcmV0dXJuIHZhcnMkLnBpcGUodGFwKHZhcnMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICB2YXJzOiB2YXJzLmRhdGFcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkQmFja29mZmljZVZhcnNBY3Rpb24pIHtcbiAgICBjb25zdCB2YXJzJCA9IHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VWYXJzKGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ubWF4UmVzdWx0cywgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcbiAgICByZXR1cm4gdmFycyQucGlwZSh0YXAodmFycyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHZhcnM6IHZhcnMuZGF0YVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkQmFja29mZmljZVZhckJ5SWRBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQmFja29mZmljZVZhckJ5SWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRCYWNrb2ZmaWNlVmFyQnlJZEFjdGlvbikge1xuICAgIGNvbnN0IHZhciQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlVmFyQnlJZChhY3Rpb24udmFySWQpO1xuICAgIHJldHVybiB2YXIkLnBpcGUodGFwKHZhclJlc3BvbnNlID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgdmFyczogW3ZhclJlc3BvbnNlLmRhdGFdXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFN5bmNVc2Vyc0FuZFJvbGVzQnlTbWFydHBhcmtJZEFjdGlvbilcbiAgb25TeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFN5bmNVc2Vyc0FuZFJvbGVzQnlTbWFydHBhcmtJZEFjdGlvbik6IE9ic2VydmFibGU8T2JqZWN0SHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5zeW5jVXNlcnNCeVNtYXJ0cGFya0lkKGFjdGlvbi5zbWFydHBhcmsudGVuYW50SUQsIGFjdGlvbi5zbWFydHBhcmsuaWQpLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IF8gPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbi5zdWNjZXNzZnVsX3N5bmNfdXNlcnNfYW5kX3JvbGVzX2Zvcl9zbWFydHBhcmssIHsgbWVzc2FnZVBhcmFtczogeyBzbWFydHBhcmtOYW1lOiBhY3Rpb24uc21hcnRwYXJrLm5hbWUgfSB9KSxcbiAgICAgIGVycm9yOiBlID0+IHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IocGFyc2VBcGlFcnJvck1lc3NhZ2UoZSksIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5GbG9hdCB9KSxcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKEV4cG9ydFNtYXJ0cGFya0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkV4cG9ydFNtYXJ0cGFya3NBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IEV4cG9ydFNtYXJ0cGFya0FjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoYWN0aW9uLnNtYXJ0cGFya0ZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IHNtYXJ0cGFya3MgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZXhwb3J0RmlsZVNlcnZpY2UpIHsgcmV0dXJuOyB9XG4gICAgICAgIGNvbnN0IHRhYmxlUm93czogYW55W11bXSA9IFtdO1xuICAgICAgICBjb25zdCBzbWFydHBhcmtzTGlzdDogU21hcnRwYXJrRHRvW10gPSBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXM7XG4gICAgICAgIHNtYXJ0cGFya3NMaXN0LmZvckVhY2goKHNtYXJ0cGFyaykgPT4ge1xuICAgICAgICAgIHRhYmxlUm93cy5wdXNoKFtcbiAgICAgICAgICAgIHNtYXJ0cGFyay5uYW1lLFxuICAgICAgICAgICAgU21hcnRQYXJrVHlwZVtzbWFydHBhcmsudHlwZV0ucmVwbGFjZSgvKFtBLVpdKS9nLCAnICQxJykudHJpbSgpLFxuICAgICAgICAgICAgc21hcnRwYXJrLnRlbmFudE5hbWUsXG4gICAgICAgICAgICBzbWFydHBhcmsudmVyc2lvbixcbiAgICAgICAgICAgIHNtYXJ0cGFyay5zcGFya1ZlcnNpb24sXG4gICAgICAgICAgICBzbWFydHBhcmsuY3JlYXRlZEF0LFxuICAgICAgICAgICAgc21hcnRwYXJrLmd1aWQsXG4gICAgICAgICAgICBzbWFydHBhcmsudmFyTmFtZSB8fCAnLScsXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChTbWFydFBhcmtTdGF0dXNUZXh0W1NtYXJ0UGFya1N0YXR1c1tzbWFydHBhcmsuc3RhdHVzXV0pXG4gICAgICAgICAgXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4cG9ydEZpbGVTZXJ2aWNlLmV4cG9ydChhY3Rpb24uZmlsZVR5cGUsIHRhYmxlUm93cywgYWN0aW9uLmNvbHVtbnNIZWFkZXIsIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5zbWFydHBhcmspKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5mYWlsZWRfZXhwb3J0X2ZpbGUpKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKEV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgZmlsdGVyIH06IEV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGV4cG9ydFBkZlNtYXJ0cGFya3M6IG51bGwsXG4gICAgfSk7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU21hcnRwYXJrcyhmaWx0ZXIpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcChzbWFydHBhcmtzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZXhwb3J0UGRmU21hcnRwYXJrczogc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkU21hcnRwYXJrc0Ryb3Bkb3duQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEFsbFNtYXJ0cGFya3NBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24pOiBPYnNlcnZhYmxlPFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5saWNlbnNlQ2xvdWRTZXJ2aWNlUHJveHkuYmFzZVNtYXJ0cGFya3MoYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkuY29sdW1uLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuXG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKGZhY2lsaXR5VHJlZUR0byA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGZhY2lsaXR5VHJlZTogZmFjaWxpdHlUcmVlRHRvLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZVNtYXJ0cGFya1ZhckFjdGlvbilcbiAgb25VcGRhdGVTbWFydHBhcmtWYXJBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFVwZGF0ZVNtYXJ0cGFya1ZhckFjdGlvbikge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkID0gdGhpcy5nZXRNZXNzYWdlSW5mbyhhY3Rpb24uc21hcnRwYXJrLm5hbWUsIExvY2FsaXphdGlvbi5zbWFydHBhcmssIExvY2FsaXphdGlvbi51cGRhdGUpO1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBtZXNzYWdlQmFyUGF5bG9hZCk7XG5cbiAgICBjb25zdCB1cGRhdGVTbWFydHBhcmtWYXI6IFVwZGF0ZVNtYXJ0cGFya1ZhckR0byA9IG5ldyBVcGRhdGVTbWFydHBhcmtWYXJEdG8oe1xuICAgICAgdmFySWQ6IGFjdGlvbi52YXJEdG8uaWQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkudXBkYXRlU21hcnRwYXJrVmFyKGFjdGlvbi5zbWFydHBhcmsuaWQsIHVwZGF0ZVNtYXJ0cGFya1ZhcikucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZCA9IHRoaXMuZ2V0TWVzc2FnZUluZm8oYWN0aW9uLnNtYXJ0cGFyay5uYW1lLCBMb2NhbGl6YXRpb24uc21hcnRwYXJrLCBMb2NhbGl6YXRpb24udXBkYXRlZCk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3MsIG1lc3NhZ2VCYXJQYXlsb2FkKTtcblxuICAgICAgICBjb25zdCBkaXNwbGF5ZWRTbWFydHBhcmtzID0gY3R4LmdldFN0YXRlKCkuc21hcnRwYXJrcyB8fCBbXTtcbiAgICAgICAgY29uc3Qgc21hcnRwYXJrSW5kZXggPSBkaXNwbGF5ZWRTbWFydHBhcmtzLmZpbmRJbmRleChlID0+IGUgaW5zdGFuY2VvZiBTbWFydHBhcmtEdG8gJiYgZS5pZCA9PT0gYWN0aW9uLnNtYXJ0cGFyay5pZCk7XG5cbiAgICAgICAgaWYgKHNtYXJ0cGFya0luZGV4ICE9PSAtMSkge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTbWFydHBhcmtzID0gZGlzcGxheWVkU21hcnRwYXJrcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHNtYXJ0cGFya0luZGV4ICYmIGl0ZW0gaW5zdGFuY2VvZiBTbWFydHBhcmtEdG8pIHtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZCA9IG5ldyBTbWFydHBhcmtEdG8oe1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgdmFySWQ6IGFjdGlvbi52YXJEdG8uaWQsXG4gICAgICAgICAgICAgICAgdmFyTmFtZTogYWN0aW9uLnZhckR0by5uYW1lLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbWFya0VudGl0aWVzQXNDaGFuZ2VkKFt1cGRhdGVkXSwgUm93T3BlcmF0aW9uLlVwZGF0ZSk7XG4gICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgICBzbWFydHBhcmtzOiB1cGRhdGVkU21hcnRwYXJrcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKExvY2FsaXphdGlvbi5lbnRpdHlfZmFpbGVkLCBtZXNzYWdlQmFyUGF5bG9hZCk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRTbWFydHBhcmtFZGdlV2ViaG9va3NBY3Rpb24pXG4gIG9uU2V0U21hcnRwYXJrRWRnZVdlYmhvb2tzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRTbWFydHBhcmtFZGdlV2ViaG9va3NBY3Rpb24pIHtcbiAgICAvLyBTUFJLMy0xNDQwMDogb3B0aW9uYWwgc28gYXBwcyB0aGF0IHJlZ2lzdGVyIFNtYXJ0cGFya1N0YXRlIHdpdGhvdXQgdGhpcyBwcm94eSAobW9iaWxlKSBzdGlsbCBib290c3RyYXAuXG4gICAgaWYgKCF0aGlzLmJhY2tvZmZpY2VFZGdlV2ViaG9va3NScGNTZXJ2aWNlUHJveHkpIHtcbiAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoTG9jYWxpemF0aW9uLmdlbmVyYWxfZXJyb3IsIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5GbG9hdCB9KTtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZCA9IHRoaXMuZ2V0TWVzc2FnZUluZm8oYWN0aW9uLnNtYXJ0cGFyay5uYW1lLCBMb2NhbGl6YXRpb24uc21hcnRwYXJrLCBMb2NhbGl6YXRpb24udXBkYXRlKTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgbWVzc2FnZUJhclBheWxvYWQpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBScGMuU2V0RWRnZVdlYmhvb2tzUmVxdWVzdER0byh7IGVuYWJsZTogYWN0aW9uLmVuYWJsZSB9KTtcblxuICAgIC8vIFNQUkszLTE0NDAwOiB0aGUgY29tbWFuZCBpcyBTbWFydFBhcmstd2lkZTsgZmFjaWxpdHlJZCAwIGZpbGxzIHRoZSByb3V0ZSBjb252ZW50aW9uIG9ubHkuXG4gICAgcmV0dXJuIHRoaXMuYmFja29mZmljZUVkZ2VXZWJob29rc1JwY1NlcnZpY2VQcm94eS5zZXRFZGdlV2ViaG9va3MoYWN0aW9uLnNtYXJ0cGFyay5ndWlkLCAwLCByZXF1ZXN0KS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIC8vIFNQUkszLTE1NjAyOiBwcm94eS1ycGMgd3JhcHMgdGhlIGJvZHkgaW4gSHR0cFJlc3BvbnNlRGF0YSwgc28gcmVhZCB0aGUgc3RhdGUgZnJvbSB0aGUgcmVxdWVzdDsgMjAwIG1lYW5zIGNvbmZpcm1lZCArIHNhdmVkLlxuICAgICAgICBjb25zdCBpc0VuYWJsZWRXZWJob29rcyA9IGFjdGlvbi5lbmFibGU7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gaXNFbmFibGVkV2ViaG9va3NcbiAgICAgICAgICA/IExvY2FsaXphdGlvbi5lZGdlX3dlYmhvb2tzX2VuYWJsZWRfZm9yX3NtYXJ0cGFya1xuICAgICAgICAgIDogTG9jYWxpemF0aW9uLmVkZ2Vfd2ViaG9va3NfZGlzYWJsZWRfZm9yX3NtYXJ0cGFyaztcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKHN1Y2Nlc3NNZXNzYWdlLCB7IG1lc3NhZ2VQYXJhbXM6IHsgc21hcnRwYXJrTmFtZTogYWN0aW9uLnNtYXJ0cGFyay5uYW1lIH0gfSk7XG5cbiAgICAgICAgY29uc3QgdXBkYXRlZFNtYXJ0cGFya3MgPSAoY3R4LmdldFN0YXRlKCkuc21hcnRwYXJrcyB8fCBbXSkubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIGxldCByZXN1bHQgPSBpdGVtO1xuICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgU21hcnRwYXJrRHRvICYmIGl0ZW0uaWQgPT09IGFjdGlvbi5zbWFydHBhcmsuaWQpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTbWFydHBhcmtEdG8oeyAuLi5pdGVtLCBpc0VuYWJsZWRXZWJob29rcyB9KTtcbiAgICAgICAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbcmVzdWx0XSwgUm93T3BlcmF0aW9uLlVwZGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHsgc21hcnRwYXJrczogdXBkYXRlZFNtYXJ0cGFya3MgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgIC8vIFRoZSBnZW5lcmF0ZWQgY2xpZW50IHRocm93cyB0aGUgYm9keSBpdHNlbGY6IFByb2JsZW1EZXRhaWxzIGZvciA0MDQvNTAwLzUwNCwgVmFsaWRhdGlvblByb2JsZW1EZXRhaWxzIGZvciA0MDAuXG4gICAgICAgIGNvbnN0IHByb2JsZW06IFJwYy5Qcm9ibGVtRGV0YWlscyB8IFJwYy5WYWxpZGF0aW9uUHJvYmxlbURldGFpbHMgfCB1bmRlZmluZWQgPVxuICAgICAgICAgIGUgaW5zdGFuY2VvZiBScGMuUHJvYmxlbURldGFpbHMgfHwgZSBpbnN0YW5jZW9mIFJwYy5WYWxpZGF0aW9uUHJvYmxlbURldGFpbHMgPyBlIDogZT8ucmVzdWx0O1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHByb2JsZW0/LmRldGFpbCB8fCBwcm9ibGVtPy50aXRsZSB8fCBwYXJzZUFwaUVycm9yTWVzc2FnZShlKSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLkZsb2F0IH0pO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG5cblxuICBwcml2YXRlIGdldE1lc3NhZ2VJbmZvKGVudGl0eU5hbWU6IHN0cmluZywgZW50aXR5VHlwZTogc3RyaW5nLCBhY3Rpb246IHN0cmluZykge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZW50aXR5VHlwZSksXG4gICAgICBlbnRpdHlOYW1lLFxuICAgICAgYWN0aW9uOiBsb3dlckNhc2VGaXJzdExldHRlcih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChhY3Rpb24pKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKTtcbiAgfVxufVxuIl19
|
|
@@ -130095,15 +130095,17 @@ let SmartparkState = class SmartparkState {
|
|
|
130095
130095
|
const request = new SetEdgeWebhooksRequestDto({ enable: action.enable });
|
|
130096
130096
|
// SPRK3-14400: the command is SmartPark-wide; facilityId 0 fills the route convention only.
|
|
130097
130097
|
return this.backofficeEdgeWebhooksRpcServiceProxy.setEdgeWebhooks(action.smartpark.guid, 0, request).pipe(tap({
|
|
130098
|
-
next: (
|
|
130099
|
-
|
|
130098
|
+
next: () => {
|
|
130099
|
+
// SPRK3-15602: proxy-rpc wraps the body in HttpResponseData, so read the state from the request; 200 means confirmed + saved.
|
|
130100
|
+
const isEnabledWebhooks = action.enable;
|
|
130101
|
+
const successMessage = isEnabledWebhooks
|
|
130100
130102
|
? Localization.edge_webhooks_enabled_for_smartpark
|
|
130101
130103
|
: Localization.edge_webhooks_disabled_for_smartpark;
|
|
130102
130104
|
this.messageBarService.success(successMessage, { messageParams: { smartparkName: action.smartpark.name } });
|
|
130103
130105
|
const updatedSmartparks = (ctx.getState().smartparks || []).map(item => {
|
|
130104
130106
|
let result = item;
|
|
130105
130107
|
if (item instanceof SmartparkDto && item.id === action.smartpark.id) {
|
|
130106
|
-
result = new SmartparkDto({ ...item, isEnabledWebhooks
|
|
130108
|
+
result = new SmartparkDto({ ...item, isEnabledWebhooks });
|
|
130107
130109
|
markEntitiesAsChanged([result], RowOperation.Update);
|
|
130108
130110
|
}
|
|
130109
130111
|
return result;
|