@tiba-spark/client-shared-lib 26.3.0-206 → 26.3.0-219
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libraries/modules/facility/facility.service.mjs +13 -5
- package/esm2022/libraries/modules/facility/facility.state.mjs +67 -22
- package/esm2022/libraries/modules/park-manager/park-manager.state.mjs +9 -2
- package/esm2022/libraries/services/company.service.mjs +23 -3
- package/fesm2022/tiba-spark-client-shared-lib.mjs +108 -28
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/modules/facility/facility.service.d.ts.map +1 -1
- package/libraries/modules/facility/facility.state.d.ts.map +1 -1
- package/libraries/modules/park-manager/park-manager.state.d.ts.map +1 -1
- package/libraries/services/company.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -273,7 +273,14 @@ let ParkManagerState = class ParkManagerState {
|
|
|
273
273
|
const clonedDto = DeviceStatusDto.fromJS(action.deviceStatus);
|
|
274
274
|
clonedDto.type = devicesById[deviceId].type;
|
|
275
275
|
devicesById[deviceId].deviceStatus = clonedDto;
|
|
276
|
-
|
|
276
|
+
// SPRK3-14987 (Sentry JAVASCRIPT-ANGULAR-3A): the guard above tests byId, but
|
|
277
|
+
// this writes byCommId -- a different map, keyed by a different, optional field.
|
|
278
|
+
// byId is the primary index and both maps are rebuilt together in patchDevices,
|
|
279
|
+
// so a missing secondary entry must not cost byId its fresh status.
|
|
280
|
+
const deviceByCommId = devicesbyCommId[commID];
|
|
281
|
+
if (deviceByCommId) {
|
|
282
|
+
deviceByCommId.deviceStatus = clonedDto;
|
|
283
|
+
}
|
|
277
284
|
ctx.patchState({
|
|
278
285
|
byId: cloneDeep(devicesById),
|
|
279
286
|
byCommId: cloneDeep(devicesbyCommId),
|
|
@@ -632,4 +639,4 @@ export { ParkManagerState };
|
|
|
632
639
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParkManagerState, decorators: [{
|
|
633
640
|
type: Injectable
|
|
634
641
|
}], ctorParameters: () => [{ type: i1.Rpc.DeviceRpcServiceProxy }, { type: i2.FacilityRpcServiceProxy }, { type: i3.Store }], propDecorators: { onSetDeviceViewModeAction: [], onLoadDeviceEventsCollapse: [], onSetDeviceEventsExpanded: [], onLoadEventActivitiesCollapse: [], onSetEventActivitiesExpanded: [], onLoadLprTransactionsCollapse: [], onSetLprTransactionsExpanded: [], onClearDeviceEventsExpanded: [], onClearEventActivitiesExpanded: [], onClearLprTransactionsExpanded: [], onLoadDevicesAction: [], onLoadDevicesByTypeAction: [], onClearDevicesAction: [], onSelectDeviceAction: [], onLoadSelectedDeviceAction: [], onLoadDeviceStatusAction: [], onSetDeviceStatusAction: [], onLoadDeviceEventActivitiesAction: [], onLoadDeviceLprTransactionsAction: [], onLoadDeviceEventsAction: [], onLoadDeviceAction: [], onClearDeviceAction: [], onDeviceStatusChangedAction: [], onDeviceEventChangedAction: [], onDeviceActivityChangedAction: [], onLprTransactionsChangedAction: [], onSelectedRowAction: [], onSelectLprTransactionsRowAction: [], onClearSelectedRow: [] } });
|
|
635
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyay1tYW5hZ2VyLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBSXJFLE9BQU8sRUFDTSxjQUFjLEVBQTZCLGVBQWUsRUFBRSxnQkFBZ0IsRUFDM0MsY0FBYyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUNqRyxxQkFBcUIsRUFDdEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUsNEJBQTRCLEVBQzlGLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLDJCQUEyQixFQUFFLHdCQUF3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LEVBQUUsSUFBSTtZQUVyQixVQUFVLEVBQUUsSUFBSTtZQUNoQixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLG9CQUFvQixFQUFFLElBQUk7WUFDMUIsb0JBQW9CLEVBQUUsSUFBSTtZQUUxQixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLHVCQUF1QixFQUFFLElBQUk7WUFDN0IsdUJBQXVCLEVBQUUsSUFBSTtZQUU3QixZQUFZLEVBQUUsSUFBSTtZQUNsQixlQUFlLEVBQUUsSUFBSTtZQUNyQixlQUFlLEVBQUUsSUFBSTtZQUVyQixvQkFBb0IsRUFBRSxFQUFFO1lBQ3hCLHVCQUF1QixFQUFFLEVBQUU7WUFDM0IsdUJBQXVCLEVBQUUsRUFBRTtZQUUzQixXQUFXLEVBQUUsSUFBSTtZQUVqQiwwQkFBMEIsRUFBRSxJQUFJO1NBQ2pDO0tBQ0YsQ0FBQztHQUNXLGdCQUFnQixDQXVrQjVCOzs0RkF2a0JZLGdCQUFnQjtrQkFoQzVCLFVBQVU7d0pBbUpULHlCQUF5QixNQU96QiwwQkFBMEIsTUFjMUIseUJBQXlCLE1BT3pCLDZCQUE2QixNQWM3Qiw0QkFBNEIsTUFPNUIsNkJBQTZCLE1BZTdCLDRCQUE0QixNQU81QiwyQkFBMkIsTUFPM0IsOEJBQThCLE1BTzlCLDhCQUE4QixNQU85QixtQkFBbUIsTUEyQm5CLHlCQUF5QixNQVF6QixvQkFBb0IsTUFLcEIsb0JBQW9CLE1BTXBCLDBCQUEwQixNQVExQix3QkFBd0IsTUFtQnhCLHVCQUF1QixNQVF2QixpQ0FBaUMsTUFXakMsaUNBQWlDLE1BV2pDLHdCQUF3QixNQVd4QixrQkFBa0IsTUE4QmxCLG1CQUFtQixNQWNuQiwyQkFBMkIsTUFnQzNCLDBCQUEwQixNQWExQiw2QkFBNkIsTUFZN0IsOEJBQThCLE1BVTlCLG1CQUFtQixNQVNuQixnQ0FBZ0MsTUF1Q2hDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERldmljZXNWaWV3TW9kZSB9IGZyb20gJy4uLy4uL2VudW1zL2RldmljZXMtdmlldy1tb2RlLmVudW0nO1xuaW1wb3J0IHsgU2VsZWN0ZWRSb3cgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NlbGVjdGVkLXJvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90YWJsZS1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBScGMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5JztcbmltcG9ydCB7XG4gIERldmljZUR0bywgRGV2aWNlRXZlbnREdG8sIERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8sIERldmljZVN0YXR1c0R0bywgRXZlbnRBY3Rpdml0eUR0byxcbiAgRmFjaWxpdHlScGNTZXJ2aWNlUHJveHksIExwclRyYW5zYWN0aW9uRHRvLCBPcmRlckRpcmVjdGlvbiwgUGFya2VyVGlja2V0VHlwZSwgVHlwZUNhc3REZXZpY2VFdmVudCxcbiAgVHlwZUNhc3RFdmVudEFjdGl2aXR5XG59IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvcnBjLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBnZXRNb21lbnROdWxsYWJsZSB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUudXRpbCc7XG5pbXBvcnQgeyBnZXREZWZhdWx0RGV2aWNlU3RhdHVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGV2aWNlLnV0aWwnO1xuaW1wb3J0IHsgTnVtYmVyTWFwLCB0b051bWJlck1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vZmFjaWxpdHkvZmFjaWxpdHkuc3RhdGUnO1xuaW1wb3J0IHsgU2lkZW5hdlN0YXRlIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7XG4gIENsZWFyRGV2aWNlQWN0aW9uLCBDbGVhckRldmljZUV2ZW50c0V4cGFuZGVkLCBDbGVhckRldmljZXNBY3Rpb24sIENsZWFyRXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQsXG4gIENsZWFyTHByVHJhbnNhY3Rpb25zRXhwYW5kZWQsIENsZWFyU2VsZWN0ZWRSb3csIERldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbiwgRGV2aWNlRXZlbnRDaGFuZ2VkQWN0aW9uLFxuICBEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uLCBMb2FkRGV2aWNlQWN0aW9uLCBMb2FkRGV2aWNlRXZlbnRBY3Rpdml0aWVzQWN0aW9uLCBMb2FkRGV2aWNlRXZlbnRzQWN0aW9uLFxuICBMb2FkRGV2aWNlRXZlbnRzQ29sbGFwc2UsIExvYWREZXZpY2VMcHJUcmFuc2FjdGlvbnNBY3Rpb24sIExvYWREZXZpY2VzQWN0aW9uLCBMb2FkRGV2aWNlc0J5VHlwZUFjdGlvbiwgTG9hZERldmljZVN0YXR1c0FjdGlvbixcbiAgTG9hZEV2ZW50QWN0aXZpdGllc0NvbGxhcHNlLCBMb2FkTHByVHJhbnNhY3Rpb25zQ29sbGFwc2UsIExvYWRTZWxlY3RlZERldmljZUFjdGlvbiwgTHByVHJhbnNhY3Rpb25zQ2hhbmdlZEFjdGlvbixcbiAgU2VsZWN0RGV2aWNlQWN0aW9uLCBTZWxlY3RMcHJUcmFuc2FjdGlvbnNSb3dBY3Rpb24sIFNlbGVjdGVkUm93QWN0aW9uLCBTZXREZXZpY2VFdmVudHNFeHBhbmRlZCwgU2V0RGV2aWNlU3RhdHVzQWN0aW9uLFxuICBTZXREZXZpY2VWaWV3TW9kZUFjdGlvbiwgU2V0RXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQsIFNldExwclRyYW5zYWN0aW9uc0V4cGFuZGVkXG59IGZyb20gJy4vcGFyay1tYW5hZ2VyLmFjdGlvbnMnO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBTdWJNb2R1bGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFya01hbmFnZXJTdGF0ZU1vZGVsIHtcbiAgZmxhdDogRGV2aWNlRHRvW107XG4gIGJ5SWQ6IE51bWJlck1hcDxEZXZpY2VEdG8+O1xuICBieUNvbW1JZDogTnVtYmVyTWFwPERldmljZUR0bz47XG4gIGNvdW50OiBudW1iZXI7XG4gIGRldmljZXNWaWV3TW9kZTogRGV2aWNlc1ZpZXdNb2RlO1xuXG4gIHNlbGVjdGVkSWQ6IG51bWJlcjtcbiAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bztcbiAgc2VsZWN0ZWREZXZpY2VQYXJrSWQ6IG51bWJlcjtcbiAgZGV2aWNlUmVtb3RlQ29tbWFuZHM6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG9bXTtcblxuICBkZXZpY2VFdmVudHNDb2xsYXBzZTogVGFibGVEYXRhPERldmljZUV2ZW50RHRvPjtcbiAgZXZlbnRBY3Rpdml0aWVzQ29sbGFwc2U6IFRhYmxlRGF0YTxFdmVudEFjdGl2aXR5RHRvPjtcbiAgbHByVHJhbnNhY3Rpb25zQ29sbGFwc2U6IFRhYmxlRGF0YTxMcHJUcmFuc2FjdGlvbkR0bz47XG5cbiAgZGV2aWNlRXZlbnRzOiBEZXZpY2VFdmVudER0b1tdO1xuICBldmVudEFjdGl2aXRpZXM6IEV2ZW50QWN0aXZpdHlEdG9bXTtcbiAgbHByVHJhbnNhY3Rpb25zOiBMcHJUcmFuc2FjdGlvbkR0b1tdO1xuXG4gIGRldmljZUV2ZW50c0V4cGFuZGVkOiBEZXZpY2VFdmVudER0b1tdO1xuICBldmVudEFjdGl2aXRpZXNFeHBhbmRlZDogRXZlbnRBY3Rpdml0eUR0b1tdO1xuICBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZDogTHByVHJhbnNhY3Rpb25EdG9bXTtcblxuICAvLyBDcm9zcy10YWJsZSBtdXR1YWwtZXhjbHVzaW9uIG1hcmtlciAoRGV2aWNlRXZlbnQvRGV2aWNlQWN0aXZpdHkpOlxuICAvLyB3aGljaCB0YWJsZSBjdXJyZW50bHkgb3ducyByb3cgc2VsZWN0aW9uOyBob2xkcyBubyByb3cgZGF0YS5cbiAgc2VsZWN0ZWRSb3c6IFNlbGVjdGVkUm93O1xuXG4gIC8vIFRoZSBhY3R1YWwgc2VsZWN0ZWQgTFBSIHJvdywgcHJlc2VydmVkIGFjcm9zcyB0aGUgZGVmYXVsdDwtPmV4cGFuZGVkXG4gIC8vIHRhYmxlIHJlbW91bnQ7IGNsZWFyZWQgb24gZGV2aWNlIGNoYW5nZS5cbiAgc2VsZWN0ZWRMcHJUcmFuc2FjdGlvbnNSb3c6IExwclRyYW5zYWN0aW9uRHRvO1xufVxuXG5jb25zdCBFWFBBTkRFRF9SRVNVTFRfTElNSVQgPSAxMDAwO1xuXG5ASW5qZWN0YWJsZSgpXG5AU3RhdGU8UGFya01hbmFnZXJTdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICdwYXJrTWFuYWdlcicsXG4gIGRlZmF1bHRzOiB7XG4gICAgZmxhdDogbnVsbCxcbiAgICBieUlkOiB7fSxcbiAgICBieUNvbW1JZDoge30sXG4gICAgY291bnQ6IDAsXG4gICAgZGV2aWNlc1ZpZXdNb2RlOiBudWxsLFxuXG4gICAgc2VsZWN0ZWRJZDogbnVsbCxcbiAgICBzZWxlY3RlZERldmljZVN0YXR1czogbnVsbCxcbiAgICBzZWxlY3RlZERldmljZVBhcmtJZDogbnVsbCxcbiAgICBkZXZpY2VSZW1vdGVDb21tYW5kczogbnVsbCxcblxuICAgIGRldmljZUV2ZW50c0NvbGxhcHNlOiBudWxsLFxuICAgIGV2ZW50QWN0aXZpdGllc0NvbGxhcHNlOiBudWxsLFxuICAgIGxwclRyYW5zYWN0aW9uc0NvbGxhcHNlOiBudWxsLFxuXG4gICAgZGV2aWNlRXZlbnRzOiBudWxsLFxuICAgIGV2ZW50QWN0aXZpdGllczogbnVsbCxcbiAgICBscHJUcmFuc2FjdGlvbnM6IG51bGwsXG5cbiAgICBkZXZpY2VFdmVudHNFeHBhbmRlZDogW10sXG4gICAgZXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQ6IFtdLFxuICAgIGxwclRyYW5zYWN0aW9uc0V4cGFuZGVkOiBbXSxcblxuICAgIHNlbGVjdGVkUm93OiBudWxsLFxuXG4gICAgc2VsZWN0ZWRMcHJUcmFuc2FjdGlvbnNSb3c6IG51bGwsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFBhcmtNYW5hZ2VyU3RhdGUge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGV2aWNlUnBjU2VydmljZVByb3h5OiBScGMuRGV2aWNlUnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZmFjaWxpdHlScGNTZXJ2aWNlUHJveHk6IEZhY2lsaXR5UnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGZsYXQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZmxhdDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZGV2aWNlcyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRGV2aWNlRHRvW10ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHN0YXRlLmJ5SWQgfHwge30pO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBieUNvbW1JZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogTnVtYmVyTWFwPERldmljZUR0bz4ge1xuICAgIHJldHVybiBzdGF0ZS5ieUNvbW1JZCB8fCB7fTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgYnlJZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogTnVtYmVyTWFwPERldmljZUR0bz4ge1xuICAgIHJldHVybiBzdGF0ZS5ieUlkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBkZXZpY2VzVmlld01vZGUoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZXNWaWV3TW9kZSB7XG4gICAgLy8gQWxzbyByZXR1cm5zIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGUgdXNlciBoYXZuJ3QgY2hhbmdlIGl0IHlldFxuICAgIHJldHVybiBzdGF0ZS5kZXZpY2VzVmlld01vZGUgfHwgRGV2aWNlc1ZpZXdNb2RlLkdhbGxlcnk7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkRGV2aWNlSWQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCkge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZElkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZERldmljZShzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRGV2aWNlRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuYnlJZFtzdGF0ZS5zZWxlY3RlZElkXTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWREZXZpY2VTdGF0dXMoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZVN0YXR1c0R0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkRGV2aWNlU3RhdHVzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZERldmljZVBhcmtJZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWREZXZpY2VQYXJrSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50KHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpIHtcbiAgICByZXR1cm4gc3RhdGUuY291bnQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGV2ZW50QWN0aXZpdGllcyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRXZlbnRBY3Rpdml0eUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZXZlbnRBY3Rpdml0aWVzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBscHJUcmFuc2FjdGlvbnMoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IExwclRyYW5zYWN0aW9uRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5scHJUcmFuc2FjdGlvbnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGRldmljZUV2ZW50cyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRGV2aWNlRXZlbnREdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmRldmljZUV2ZW50cztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZGV2aWNlRXZlbnRzRXhwYW5kZWQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZUV2ZW50RHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5kZXZpY2VFdmVudHNFeHBhbmRlZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IEV2ZW50QWN0aXZpdHlEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmV2ZW50QWN0aXZpdGllc0V4cGFuZGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogTHByVHJhbnNhY3Rpb25EdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmxwclRyYW5zYWN0aW9uc0V4cGFuZGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBkZXZpY2VFdmVudHNDb2xsYXBzZShzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogVGFibGVEYXRhPERldmljZUV2ZW50RHRvPiB7XG4gICAgcmV0dXJuIHN0YXRlLmRldmljZUV2ZW50c0NvbGxhcHNlO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBldmVudEFjdGl2aXRpZXNDb2xsYXBzZShzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogVGFibGVEYXRhPEV2ZW50QWN0aXZpdHlEdG8+IHtcbiAgICByZXR1cm4gc3RhdGUuZXZlbnRBY3Rpdml0aWVzQ29sbGFwc2U7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxwclRyYW5zYWN0aW9uc0NvbGxhcHNlKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBUYWJsZURhdGE8THByVHJhbnNhY3Rpb25EdG8+IHtcbiAgICByZXR1cm4gc3RhdGUubHByVHJhbnNhY3Rpb25zQ29sbGFwc2U7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkUm93KHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBTZWxlY3RlZFJvdyB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkUm93O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZExwclRyYW5zYWN0aW9uc1JvdyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogTHByVHJhbnNhY3Rpb25EdG8ge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZExwclRyYW5zYWN0aW9uc1JvdztcbiAgfVxuXG4gIEBBY3Rpb24oU2V0RGV2aWNlVmlld01vZGVBY3Rpb24pXG4gIG9uU2V0RGV2aWNlVmlld01vZGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXREZXZpY2VWaWV3TW9kZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRldmljZXNWaWV3TW9kZTogYWN0aW9uLnZpZXdNb2RlLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlRXZlbnRzQ29sbGFwc2UpXG4gIG9uTG9hZERldmljZUV2ZW50c0NvbGxhcHNlKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZUV2ZW50c0NvbGxhcHNlKSB7XG4gICAgY29uc3QgZGV2aWNlRXZlbnRzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldERldmljZUV2ZW50cyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmRldmljZUlkLCBudWxsLCBudWxsLFxuICAgICAgbnVsbCwgbnVsbCwgbnVsbCwgYWN0aW9uLnJlc3VsdExpbWl0LCAwLCBudWxsLCBPcmRlckRpcmVjdGlvbi5Ob25lKTtcbiAgICByZXR1cm4gZGV2aWNlRXZlbnRzJC5waXBlKHRhcChkYXRhU2V0ID0+XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGRldmljZUV2ZW50c0NvbGxhcHNlOiB7XG4gICAgICAgICAgcmVzdWx0TGltaXQ6IGFjdGlvbi5yZXN1bHRMaW1pdCxcbiAgICAgICAgICBkYXRhU2V0OiBkYXRhU2V0LmRhdGEsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0RGV2aWNlRXZlbnRzRXhwYW5kZWQpXG4gIG9uU2V0RGV2aWNlRXZlbnRzRXhwYW5kZWQoY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXREZXZpY2VFdmVudHNFeHBhbmRlZCkge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRldmljZUV2ZW50c0V4cGFuZGVkOiBhY3Rpb24uZGF0YVNldCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEV2ZW50QWN0aXZpdGllc0NvbGxhcHNlKVxuICBvbkxvYWRFdmVudEFjdGl2aXRpZXNDb2xsYXBzZShjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRFdmVudEFjdGl2aXRpZXNDb2xsYXBzZSkge1xuICAgIGNvbnN0IGV2ZW50QWN0aXZpdGllcyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXREZXZpY2VBY3Rpdml0aWVzKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZGV2aWNlSWQsIG51bGwsIG51bGwsXG4gICAgICBudWxsLCBudWxsLCBudWxsLCBhY3Rpb24ucmVzdWx0TGltaXQsIDAsIG51bGwsIE9yZGVyRGlyZWN0aW9uLk5vbmUpO1xuICAgIHJldHVybiBldmVudEFjdGl2aXRpZXMkLnBpcGUodGFwKGRhdGFTZXQgPT5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZXZlbnRBY3Rpdml0aWVzQ29sbGFwc2U6IHtcbiAgICAgICAgICByZXN1bHRMaW1pdDogYWN0aW9uLnJlc3VsdExpbWl0LFxuICAgICAgICAgIGRhdGFTZXQ6IGRhdGFTZXQuZGF0YSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRFdmVudEFjdGl2aXRpZXNFeHBhbmRlZClcbiAgb25TZXRFdmVudEFjdGl2aXRpZXNFeHBhbmRlZChjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNldEV2ZW50QWN0aXZpdGllc0V4cGFuZGVkKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQ6IGFjdGlvbi5kYXRhU2V0LFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkTHByVHJhbnNhY3Rpb25zQ29sbGFwc2UpXG4gIG9uTG9hZExwclRyYW5zYWN0aW9uc0NvbGxhcHNlKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZExwclRyYW5zYWN0aW9uc0NvbGxhcHNlKSB7XG4gICAgY29uc3QgbHByVHJhbnNhY3Rpb25zJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5XG4gICAgICAuZ2V0RGV2aWNlTHByVHJhbnNhY3Rpb25zKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZGV2aWNlSWQsIG51bGwsIG51bGwsIG51bGwsIG51bGwsXG4gICAgICAgIG51bGwsIGFjdGlvbi5yZXN1bHRMaW1pdCwgMCwgbnVsbCwgT3JkZXJEaXJlY3Rpb24uTm9uZSk7XG4gICAgcmV0dXJuIGxwclRyYW5zYWN0aW9ucyQucGlwZSh0YXAoZGF0YVNldCA9PlxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBscHJUcmFuc2FjdGlvbnNDb2xsYXBzZToge1xuICAgICAgICAgIHJlc3VsdExpbWl0OiBhY3Rpb24ucmVzdWx0TGltaXQsXG4gICAgICAgICAgZGF0YVNldDogZGF0YVNldC5kYXRhLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKSk7XG4gIH1cblxuICBAQWN0aW9uKFNldExwclRyYW5zYWN0aW9uc0V4cGFuZGVkKVxuICBvblNldExwclRyYW5zYWN0aW9uc0V4cGFuZGVkKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0THByVHJhbnNhY3Rpb25zRXhwYW5kZWQpIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZDogYWN0aW9uLmRhdGFTZXQsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyRGV2aWNlRXZlbnRzRXhwYW5kZWQpXG4gIG9uQ2xlYXJEZXZpY2VFdmVudHNFeHBhbmRlZChjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZGV2aWNlRXZlbnRzRXhwYW5kZWQ6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckV2ZW50QWN0aXZpdGllc0V4cGFuZGVkKVxuICBvbkNsZWFyRXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQoY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGV2ZW50QWN0aXZpdGllc0V4cGFuZGVkOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJMcHJUcmFuc2FjdGlvbnNFeHBhbmRlZClcbiAgb25DbGVhckxwclRyYW5zYWN0aW9uc0V4cGFuZGVkKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZDogW10sXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWREZXZpY2VzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZERldmljZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRGV2aWNlc0FjdGlvbikge1xuICAgIHRoaXMucGF0Y2hEZXZpY2VzKGN0eCwgbnVsbCk7XG5cbiAgICBjb25zdCBhcHBNb2R1bGU6IEFwcE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XG4gICAgY29uc3Qgc3ViTW9kdWxlOiBTdWJNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5zdWJNb2R1bGUpO1xuXG4gICAgbGV0IGdldERldmljZXMkOiB0eXBlb2YgdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0Q0NEZXZpY2VzO1xuICAgIGlmIChhcHBNb2R1bGUgPT09IEFwcE1vZHVsZS5DYyB8fCBhcHBNb2R1bGUgPT09IEFwcE1vZHVsZS5UZWNoVG9vbHMpIHtcbiAgICAgIC8vIFNQUkszLTEzNzE5IOKAlCBUZWNoIFRvb2xzIHJldXNlcyB0aGUgY29tbWFuZC1jZW50ZXIgZGV2aWNlIGxpc3QuXG4gICAgICBnZXREZXZpY2VzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldENDRGV2aWNlcy5iaW5kKHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5KTtcbiAgICB9IGVsc2UgaWYgKGFwcE1vZHVsZSA9PT0gQXBwTW9kdWxlLk1vbnRobGllcykge1xuICAgICAgLy8gU1BSSzMtMTQyMDUg4oCUIHRoZSBtb250aGx5IHRyYWZmaWMgc2NyZWVuIGZpbHRlcnMgYnkgZGV2aWNlLiBGYWxsaW5nIHRocm91Z2ggaGVyZSBsZWZ0XG4gICAgICAvLyBnZXREZXZpY2VzJCB1bmRlZmluZWQgYW5kIHRoZSBkcm9wZG93biB0aHJldyBpbnN0ZWFkIG9mIGxvYWRpbmcuXG4gICAgICBnZXREZXZpY2VzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldE1vbnRobGllc0RldmljZXMuYmluZCh0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eSk7XG4gICAgfSBlbHNlIGlmIChhcHBNb2R1bGUgPT09IEFwcE1vZHVsZS5SZXBvcnRzKSB7XG4gICAgICBnZXREZXZpY2VzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldFJlcG9ydHNEZXZpY2VzLmJpbmQodGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkpO1xuICAgIH0gZWxzZSBpZiAoYXBwTW9kdWxlID09PSBBcHBNb2R1bGUuTG90Q29uZmlndXJhdGlvbiAmJiBzdWJNb2R1bGUgPT09IFN1Yk1vZHVsZS5TY2hlZHVsZXIpIHtcbiAgICAgIGdldERldmljZXMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0TG90Q29uZmlndXJhdGlvbnNEZXZpY2VzLmJpbmQodGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkpO1xuICAgIH1cblxuICAgIHJldHVybiBnZXREZXZpY2VzJChhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ubWF4UmVzdWx0cyxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/LnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkuY29sdW1uLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbiwgYWN0aW9uLmlzVGw2MCkucGlwZSh0YXAoZGV2aWNlcyA9PlxuICAgICAgICB0aGlzLnBhdGNoRGV2aWNlcyhjdHgsIGRldmljZXMuZGF0YSkpKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZERldmljZXNCeVR5cGVBY3Rpb24pXG4gIG9uTG9hZERldmljZXNCeVR5cGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRGV2aWNlc0J5VHlwZUFjdGlvbikge1xuICAgIGNvbnN0IGRldmljZXMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlc0J5VHlwZShhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ubWF4UmVzdWx0cyxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/LnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkuY29sdW1uLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbiwgYWN0aW9uLmRldmljZVR5cGVzKTtcbiAgICByZXR1cm4gZGV2aWNlcyQucGlwZSh0YXAoZGV2aWNlcyA9PiB0aGlzLnBhdGNoRGV2aWNlcyhjdHgsIGRldmljZXMuZGF0YSkpKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJEZXZpY2VzQWN0aW9uKVxuICBvbkNsZWFyRGV2aWNlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgdGhpcy5wYXRjaERldmljZXMoY3R4LCBudWxsKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2VsZWN0RGV2aWNlQWN0aW9uKVxuICBvblNlbGVjdERldmljZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdERldmljZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VsZWN0ZWRJZDogbnVsbCB9KTtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkSWQ6IGFjdGlvbi5kZXZpY2VJZCB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNlbGVjdGVkRGV2aWNlQWN0aW9uKVxuICBvbkxvYWRTZWxlY3RlZERldmljZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VJZCA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkSWQ7XG4gICAgaWYgKHNlbGVjdGVkRGV2aWNlSWQpIHtcbiAgICAgIHRoaXMub25Mb2FkRGV2aWNlQWN0aW9uKGN0eCwgeyBkZXZpY2VJZDogc2VsZWN0ZWREZXZpY2VJZCB9KTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWREZXZpY2VTdGF0dXNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkRGV2aWNlU3RhdHVzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZVN0YXR1c0FjdGlvbikge1xuICAgIGNvbnN0IGd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG5cbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZERldmljZVN0YXR1czogbnVsbCxcbiAgICAgIHNlbGVjdGVkRGV2aWNlUGFya0lkOiBudWxsLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGV2aWNlU3RhdHVzJCA9IHRoaXMuZmFjaWxpdHlScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlU3RhdHVzKGd1aWQsIGFjdGlvbi5kZXZpY2U/LnBhcmtJRCwgYWN0aW9uLmRldmljZT8uaWQpO1xuXG4gICAgcmV0dXJuIGRldmljZVN0YXR1cyQucGlwZSh0YXAoZGV2aWNlU3RhdHVzID0+XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHNlbGVjdGVkRGV2aWNlU3RhdHVzOiBkZXZpY2VTdGF0dXM/LmRhdGE/LmRhdGEgfHwgZ2V0RGVmYXVsdERldmljZVN0YXR1cyhhY3Rpb24uZGV2aWNlKSxcbiAgICAgICAgc2VsZWN0ZWREZXZpY2VQYXJrSWQ6IGRldmljZVN0YXR1cz8uZGF0YT8ucGFya0lELFxuICAgICAgfSksXG4gICAgKSk7XG4gIH1cblxuICBAQWN0aW9uKFNldERldmljZVN0YXR1c0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvblNldERldmljZVN0YXR1c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNldERldmljZVN0YXR1c0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkRGV2aWNlU3RhdHVzOiBnZXREZWZhdWx0RGV2aWNlU3RhdHVzKGFjdGlvbi5kZXZpY2UpLFxuICAgICAgc2VsZWN0ZWREZXZpY2VQYXJrSWQ6IGFjdGlvbi5kZXZpY2UucGFya0lELFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlRXZlbnRBY3Rpdml0aWVzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZERldmljZUV2ZW50QWN0aXZpdGllc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWREZXZpY2VFdmVudEFjdGl2aXRpZXNBY3Rpb24pIHtcbiAgICBjb25zdCBldmVudEFjdGl2aXRpZXMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlQWN0aXZpdGllcyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmRldmljZUlkLCBnZXRNb21lbnROdWxsYWJsZShhY3Rpb24uc3RhcnREYXRlKSxcbiAgICAgIGdldE1vbWVudE51bGxhYmxlKGFjdGlvbi5lbmREYXRlKSwgYWN0aW9uLnNlYXJjaFZhbHVlLCBudWxsLCBudWxsLCBhY3Rpb24udGFrZSwgYWN0aW9uLnNraXAsIG51bGwsIE9yZGVyRGlyZWN0aW9uLk5vbmUpO1xuICAgIHJldHVybiBldmVudEFjdGl2aXRpZXMkLnBpcGUodGFwKGV2ZW50QWN0aXZpdGllcyA9PlxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBldmVudEFjdGl2aXRpZXM6IGV2ZW50QWN0aXZpdGllcy5kYXRhLFxuICAgICAgfSksXG4gICAgKSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWREZXZpY2VMcHJUcmFuc2FjdGlvbnNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkRGV2aWNlTHByVHJhbnNhY3Rpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZUxwclRyYW5zYWN0aW9uc0FjdGlvbikge1xuICAgIGNvbnN0IGxwclRyYW5zYWN0aW9ucyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXREZXZpY2VMcHJUcmFuc2FjdGlvbnMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5kZXZpY2VJZCwgZ2V0TW9tZW50TnVsbGFibGUoYWN0aW9uLnN0YXJ0RGF0ZSksXG4gICAgICBnZXRNb21lbnROdWxsYWJsZShhY3Rpb24uZW5kRGF0ZSksIG51bGwsIG51bGwsIG51bGwsIGFjdGlvbi50YWtlLCBhY3Rpb24uc2tpcCwgbnVsbCwgT3JkZXJEaXJlY3Rpb24uTm9uZSk7XG4gICAgcmV0dXJuIGxwclRyYW5zYWN0aW9ucyQucGlwZSh0YXAobHByVHJhbnNhY3Rpb25zID0+XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGxwclRyYW5zYWN0aW9uczogbHByVHJhbnNhY3Rpb25zLmRhdGEsXG4gICAgICB9KSxcbiAgICApKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZERldmljZUV2ZW50c0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWREZXZpY2VFdmVudHNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRGV2aWNlRXZlbnRzQWN0aW9uKSB7XG4gICAgY29uc3QgZGV2aWNlRXZlbnRzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldERldmljZUV2ZW50cyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmRldmljZUlkLCBnZXRNb21lbnROdWxsYWJsZShhY3Rpb24uc3RhcnREYXRlKSxcbiAgICAgIGdldE1vbWVudE51bGxhYmxlKGFjdGlvbi5lbmREYXRlKSwgbnVsbCwgbnVsbCwgbnVsbCwgYWN0aW9uLnRha2UsIGFjdGlvbi5za2lwLCBudWxsLCBPcmRlckRpcmVjdGlvbi5Ob25lKTtcbiAgICByZXR1cm4gZGV2aWNlRXZlbnRzJC5waXBlKHRhcChkZXZpY2VFdmVudHMgPT5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGV2aWNlRXZlbnRzOiBkZXZpY2VFdmVudHMuZGF0YSxcbiAgICAgIH0pLFxuICAgICkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlQWN0aW9uKVxuICBvbkxvYWREZXZpY2VBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRGV2aWNlQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZXZlbnRBY3Rpdml0aWVzOiBudWxsLFxuICAgICAgbHByVHJhbnNhY3Rpb25zOiBudWxsLFxuICAgICAgZGV2aWNlRXZlbnRzOiBudWxsLFxuICAgICAgZGV2aWNlUmVtb3RlQ29tbWFuZHM6IG51bGwsXG4gICAgICBkZXZpY2VFdmVudHNDb2xsYXBzZTogbnVsbCxcbiAgICAgIGV2ZW50QWN0aXZpdGllc0NvbGxhcHNlOiBudWxsLFxuICAgICAgbHByVHJhbnNhY3Rpb25zQ29sbGFwc2U6IG51bGwsXG4gICAgICBkZXZpY2VFdmVudHNFeHBhbmRlZDogW10sXG4gICAgICBldmVudEFjdGl2aXRpZXNFeHBhbmRlZDogW10sXG4gICAgICBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZDogW10sXG4gICAgICBzZWxlY3RlZERldmljZVN0YXR1czogbnVsbCxcbiAgICAgIHNlbGVjdGVkRGV2aWNlUGFya0lkOiBudWxsLFxuICAgICAgc2VsZWN0ZWRMcHJUcmFuc2FjdGlvbnNSb3c6IG51bGwsXG4gICAgfSk7XG5cbiAgICAvLyB3YWl0IGZvciBkZXZpY2VzIHN0b3JlIHRvIGJlIGxvYWRlZCBiZWZvcmUgbG9hZGluZyBhIGRldmljZVxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChQYXJrTWFuYWdlclN0YXRlLmRldmljZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGRldmljZXMgPT4gZGV2aWNlcz8ubGVuZ3RoID4gMCksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHRhcCgoZmlsdGVyZWREZXZpY2VzKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGV2aWNlID0gZmlsdGVyZWREZXZpY2VzLmZpbmQoZCA9PiBkLmlkID09PSArYWN0aW9uLmRldmljZUlkKTtcbiAgICAgICAgICBjdHguZGlzcGF0Y2gobmV3IExvYWREZXZpY2VTdGF0dXNBY3Rpb24oZGV2aWNlKSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gIH1cblxuICBAQWN0aW9uKENsZWFyRGV2aWNlQWN0aW9uKVxuICBvbkNsZWFyRGV2aWNlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZElkOiBudWxsLFxuICAgICAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IG51bGwsXG4gICAgICBzZWxlY3RlZERldmljZVBhcmtJZDogbnVsbCxcbiAgICAgIGV2ZW50QWN0aXZpdGllczogbnVsbCxcbiAgICAgIGxwclRyYW5zYWN0aW9uczogbnVsbCxcbiAgICAgIGRldmljZUV2ZW50czogbnVsbCxcbiAgICAgIGRldmljZVJlbW90ZUNvbW1hbmRzOiBudWxsLFxuICAgICAgc2VsZWN0ZWRMcHJUcmFuc2FjdGlvbnNSb3c6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKERldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pXG4gIG9uRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IERldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBkZXZpY2VJZCA9IGFjdGlvbi5kZXZpY2VTdGF0dXM/LmRldmljZUlEO1xuICAgIGNvbnN0IGNvbW1JRCA9IGFjdGlvbi5kZXZpY2VTdGF0dXM/LmNvbW1JRDtcblxuICAgIGNvbnN0IGRldmljZXNCeUlkID0gY3R4LmdldFN0YXRlKCkuYnlJZDtcbiAgICBjb25zdCBkZXZpY2VzYnlDb21tSWQgPSBjdHguZ2V0U3RhdGUoKS5ieUNvbW1JZDtcblxuICAgIGlmIChkZXZpY2VzQnlJZFtkZXZpY2VJZF0pIHtcbiAgICAgIGlmICghaXNFcXVhbChkZXZpY2VzQnlJZFtkZXZpY2VJZF0uZGV2aWNlU3RhdHVzLCBhY3Rpb24uZGV2aWNlU3RhdHVzKSkge1xuICAgICAgICBjb25zdCBjbG9uZWREdG8gPSBEZXZpY2VTdGF0dXNEdG8uZnJvbUpTKGFjdGlvbi5kZXZpY2VTdGF0dXMpO1xuICAgICAgICBjbG9uZWREdG8udHlwZSA9IGRldmljZXNCeUlkW2RldmljZUlkXS50eXBlO1xuICAgICAgICBkZXZpY2VzQnlJZFtkZXZpY2VJZF0uZGV2aWNlU3RhdHVzID0gY2xvbmVkRHRvO1xuICAgICAgICBkZXZpY2VzYnlDb21tSWRbY29tbUlEXS5kZXZpY2VTdGF0dXMgPSBjbG9uZWREdG87XG5cbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIGJ5SWQ6IGNsb25lRGVlcChkZXZpY2VzQnlJZCksXG4gICAgICAgICAgYnlDb21tSWQ6IGNsb25lRGVlcChkZXZpY2VzYnlDb21tSWQpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZERldmljZVN0YXR1cyA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkRGV2aWNlU3RhdHVzO1xuICAgIGlmIChzZWxlY3RlZERldmljZVN0YXR1cz8uZGV2aWNlSUQgPT09IGRldmljZUlkKSB7XG4gICAgICBhY3Rpb24uZGV2aWNlU3RhdHVzLnR5cGUgPSBzZWxlY3RlZERldmljZVN0YXR1cy50eXBlO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZERldmljZVN0YXR1czogYWN0aW9uLmRldmljZVN0YXR1cyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZvciBEZXZpY2UgRXZlbnRzXG4gIEBBY3Rpb24oRGV2aWNlRXZlbnRDaGFuZ2VkQWN0aW9uKVxuICBvbkRldmljZUV2ZW50Q2hhbmdlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlUGFya0lkID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWREZXZpY2VQYXJrSWQ7XG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VTdGF0dXMgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZERldmljZVN0YXR1cztcbiAgICAvLyBUT0RPOiBjaGFuZ2UgdG8gZGV2aWNlSWQgb25jZSBTUCB3aWxsIGltcGxlbWVudFxuICAgIGlmIChzZWxlY3RlZERldmljZVN0YXR1cz8uY29tbUlEID09PSBhY3Rpb24uZGV2RXZlbnQ/LnJlYWRlcklEICYmIHNlbGVjdGVkRGV2aWNlUGFya0lkID09PSBhY3Rpb24uZGV2RXZlbnQ/LnBhcmtJRCkge1xuICAgICAgY29uc3QgZGV2aWNlRXZlbnREdG8gPSB0aGlzLnBvcHVsYXRlRGV2aWNlRXZlbnQoYWN0aW9uLmRldkV2ZW50KTtcbiAgICAgIHRoaXMucGF0Y2hEZXZpY2VJdGVtKGN0eCwgZGV2aWNlRXZlbnREdG8sICdkZXZpY2VFdmVudHMnKTtcbiAgICB9XG4gIH1cblxuXG4gIC8vLyBmb3IgRGV2aWNlIGFjdGl2aXR5XG4gIEBBY3Rpb24oRGV2aWNlQWN0aXZpdHlDaGFuZ2VkQWN0aW9uKVxuICBvbkRldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IERldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlUGFya0lkID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWREZXZpY2VQYXJrSWQ7XG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VTdGF0dXMgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZERldmljZVN0YXR1cztcbiAgICAvLyBUT0RPOiBjaGFuZ2UgdG8gZGV2aWNlSWQgb25jZSBTUCB3aWxsIGltcGxlbWVudFxuICAgIGlmIChzZWxlY3RlZERldmljZVN0YXR1cz8uY29tbUlEID09PSBhY3Rpb24uZXZlbnRBY3Rpdml0eT8ucmVhZGVySUQgJiYgc2VsZWN0ZWREZXZpY2VQYXJrSWQgPT09IGFjdGlvbi5ldmVudEFjdGl2aXR5Py5wYXJrSUQpIHtcbiAgICAgIGNvbnN0IGV2ZW50QWN0aXZpdHlEdG8gPSB0aGlzLnBvcHVsYXRlRXZlbnRBY3Rpdml0eShhY3Rpb24uZXZlbnRBY3Rpdml0eSk7XG4gICAgICB0aGlzLnBhdGNoRGV2aWNlSXRlbShjdHgsIGV2ZW50QWN0aXZpdHlEdG8sICdldmVudEFjdGl2aXRpZXMnKTtcbiAgICB9XG4gIH1cblxuICAvLy8gZm9yIExQUiBUcmFuc2FjdGlvbnNcbiAgQEFjdGlvbihMcHJUcmFuc2FjdGlvbnNDaGFuZ2VkQWN0aW9uKVxuICBvbkxwclRyYW5zYWN0aW9uc0NoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMcHJUcmFuc2FjdGlvbnNDaGFuZ2VkQWN0aW9uKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VQYXJrSWQgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZERldmljZVBhcmtJZDtcbiAgICBjb25zdCBzZWxlY3RlZERldmljZVN0YXR1cyA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkRGV2aWNlU3RhdHVzO1xuICAgIC8vIFRPRE86IGNoYW5nZSB0byBkZXZpY2VJZCBvbmNlIFNQIHdpbGwgaW1wbGVtZW50XG4gICAgaWYgKHNlbGVjdGVkRGV2aWNlU3RhdHVzPy5jb21tSUQgPT09IGFjdGlvbi5scHJUcmFuc2FjdGlvbj8ucmVhZGVySUQgJiYgc2VsZWN0ZWREZXZpY2VQYXJrSWQgPT09IGFjdGlvbi5scHJUcmFuc2FjdGlvbj8ucGFya0lEKSB7XG4gICAgICB0aGlzLnBhdGNoRGV2aWNlSXRlbShjdHgsIGFjdGlvbi5scHJUcmFuc2FjdGlvbiwgJ2xwclRyYW5zYWN0aW9ucycpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oU2VsZWN0ZWRSb3dBY3Rpb24pXG4gIG9uU2VsZWN0ZWRSb3dBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZWxlY3RlZFJvd0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkUm93OiB7XG4gICAgICAgIHRhYmxlTmFtZTogYWN0aW9uLnBheWxvYWQudGFibGVOYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oU2VsZWN0THByVHJhbnNhY3Rpb25zUm93QWN0aW9uKVxuICBvblNlbGVjdExwclRyYW5zYWN0aW9uc1Jvd0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdExwclRyYW5zYWN0aW9uc1Jvd0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkTHByVHJhbnNhY3Rpb25zUm93OiBhY3Rpb24udmFsdWVcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hEZXZpY2VzKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGRldmljZXM6IERldmljZUR0b1tdKSB7XG4gICAgZGV2aWNlcz8uZm9yRWFjaChkZXZpY2UgPT4gZGV2aWNlLmRldmljZVN0YXR1cyA9IGRldmljZS5kZXZpY2VTdGF0dXMgPz8gZ2V0RGVmYXVsdERldmljZVN0YXR1cyhkZXZpY2UpKTtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBmbGF0OiBkZXZpY2VzPy5zb3J0KChhLCBiKSA9PiBhLmlkIC0gYi5pZCksXG4gICAgICBieUlkOiB0b051bWJlck1hcChkZXZpY2VzIHx8IFtdLCAoZCkgPT4gZC5pZCksXG4gICAgICBieUNvbW1JZDogdG9OdW1iZXJNYXAoZGV2aWNlcyB8fCBbXSwgKGQpID0+IGQuY29tbUlEKSxcbiAgICAgIGNvdW50OiBkZXZpY2VzPy5sZW5ndGggfHwgMCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hEZXZpY2VJdGVtPFQ+KGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGl0ZW06IFQsIGl0ZW1zTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgY29sbGFwc2VJdGVtc05hbWUgPSBgJHtpdGVtc05hbWV9Q29sbGFwc2VgO1xuICAgIGNvbnN0IGV4cGFuZGVkSXRlbXNOYW1lID0gYCR7aXRlbXNOYW1lfUV4cGFuZGVkYDtcbiAgICBjb25zdCBjb2xsYXBzZUl0ZW1zID0gY3R4LmdldFN0YXRlKClbY29sbGFwc2VJdGVtc05hbWVdIGFzIFRhYmxlRGF0YTxhbnk+O1xuICAgIGxldCBleHBhbmRlZEl0ZW1zID0gY3R4LmdldFN0YXRlKClbZXhwYW5kZWRJdGVtc05hbWVdO1xuXG4gICAgaWYgKGNvbGxhcHNlSXRlbXMgIT09IG51bGwpIHtcbiAgICAgIGNvbGxhcHNlSXRlbXMuZGF0YVNldCA9IFsuLi5jb2xsYXBzZUl0ZW1zLmRhdGFTZXQuc2xpY2UoMCwgY29sbGFwc2VJdGVtcy5yZXN1bHRMaW1pdCAtIDEpXTtcbiAgICAgIGNvbGxhcHNlSXRlbXMuZGF0YVNldC51bnNoaWZ0KGl0ZW0pO1xuICAgIH1cblxuICAgIGlmIChleHBhbmRlZEl0ZW1zICE9PSBudWxsKSB7XG4gICAgICBleHBhbmRlZEl0ZW1zID0gWy4uLmV4cGFuZGVkSXRlbXNdLnNsaWNlKDAsIEVYUEFOREVEX1JFU1VMVF9MSU1JVCAtIDEpO1xuICAgICAgZXhwYW5kZWRJdGVtcy51bnNoaWZ0KGl0ZW0pO1xuICAgIH1cblxuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIFtjb2xsYXBzZUl0ZW1zTmFtZV06IGNsb25lRGVlcChjb2xsYXBzZUl0ZW1zKSxcbiAgICAgIFtleHBhbmRlZEl0ZW1zTmFtZV06IGV4cGFuZGVkSXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU2VsZWN0ZWRSb3cpXG4gIG9uQ2xlYXJTZWxlY3RlZFJvdyhjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VsZWN0ZWRSb3c6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlRGV2aWNlRXZlbnQoZGV2aWNlRXZlbnREYXRhOiBhbnkpIHtcbiAgICBjb25zdCBkZXZpY2VFdmVudER0byA9IERldmljZUV2ZW50RHRvLmZyb21KUyhkZXZpY2VFdmVudERhdGEpO1xuXG4gICAgLy8gYmFja3dhcmRzIC0gZnJvbSA5LjMuMiB0aGUgbWFwcGluZyBmcm9tIERldmljZUV2ZW50Q29yZSB0byBEZXZpY2VFdmVudER0byB3aWxsIGJlIGluIHRoZSBjbGllbnRcbiAgICBpZiAoZGV2aWNlRXZlbnREYXRhLnBhcmtlclRpY2tldFR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGV2aWNlRXZlbnREdG8ucGFya2VyVGlja2V0VHlwZSA9IHRoaXMuZ2V0RGV2aWNlRXZlbnRQYXJrZXJUaWNrZXRUeXBlKGRldmljZUV2ZW50RGF0YSk7XG4gICAgICBkZXZpY2VFdmVudER0by50aWNrZXROdW0gPSB0aGlzLkdldFRpY2tldE51bShkZXZpY2VFdmVudER0by5wYXJrZXJUaWNrZXRUeXBlLCBkZXZpY2VFdmVudER0by52YWx1ZTEpO1xuICAgIH1cbiAgICBpZiAoZGV2aWNlRXZlbnREdG8uZXZlbnRUeXBlPy5tb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRldmljZUV2ZW50RHRvLmV2ZW50VHlwZS5tb2RlID0gZGV2aWNlRXZlbnREYXRhLmV2ZW50VHlwZS5ldmVudFR5cGU7XG4gICAgICBkZXZpY2VFdmVudER0by5ldmVudFR5cGUudmFsdWUxX0Rlc2NyaXB0aW9uID0gZGV2aWNlRXZlbnREYXRhLmV2ZW50VHlwZS52YWx1ZTFfRGlzO1xuICAgICAgZGV2aWNlRXZlbnREdG8uZXZlbnRUeXBlLnZhbHVlMl9EZXNjcmlwdGlvbiA9IGRldmljZUV2ZW50RGF0YS5ldmVudFR5cGUudmFsdWUyX0RpcztcbiAgICAgIGRldmljZUV2ZW50RHRvLmV2ZW50VHlwZS52YWx1ZTNfRGVzY3JpcHRpb24gPSBkZXZpY2VFdmVudERhdGEuZXZlbnRUeXBlLnZhbHVlM19EaXM7XG4gICAgICBkZXZpY2VFdmVudER0by5ldmVudFR5cGUudmFsdWU0X0Rlc2NyaXB0aW9uID0gZGV2aWNlRXZlbnREYXRhLmV2ZW50VHlwZS52YWx1ZTRfRGlzO1xuICAgIH1cblxuICAgIHJldHVybiBkZXZpY2VFdmVudER0bztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGV2aWNlRXZlbnRQYXJrZXJUaWNrZXRUeXBlKGRldmljZUV2ZW50RGF0YTogYW55KTogUGFya2VyVGlja2V0VHlwZSB7XG4gICAgbGV0IHBhcmtlclRpY2tldFR5cGU6IFBhcmtlclRpY2tldFR5cGU7XG4gICAgc3dpdGNoIChkZXZpY2VFdmVudERhdGEuZXZlbnRJRCkge1xuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNhbmNlbGxlZFRpY2tldFBheW1lbnRQcm9jZXNzOlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50Lk5ld0VudHJ5VGlja2V0OlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LlRpY2tldFBheW1lbnRDYWxjdWxhdGlvbjpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5UaWNrZXRXaXRoTm9QYXltZW50OlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNoYXJnZVNlbnRGcm9tU2VydmVyOlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNhc2hiYWNrV2FzUHJpbnRlZDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5MUFJNaXNtYXRjaDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5BY2NlcHRFbnRyeVRpY2tldDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5EZW55RW50cnlUaWNrZXQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuRGVueUVudHJ5VGlja2V0RXJyb3I6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuQ2FyTGVmdExvb3BUaWNrZXRSZWplY3RlZDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5UaWNrZXREZXRhaWxzQ2hhbmdlOlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5UcmFuc2llbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNyZWRpdFRyYW5zYWN0aW9uQWNjZXB0ZWQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuQ3JlZGl0VHJhbnNhY3Rpb25SZWplY3RlZDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5DcmVkaXRQcm9jZXNzVGltZW91dDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5TdGlja2VyczpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuUGF5bWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5Vbmtub3duO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcGFya2VyVGlja2V0VHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgR2V0VGlja2V0TnVtID0gKHBhcmtlclRpY2tldFR5cGU6IFBhcmtlclRpY2tldFR5cGUsIHZhbHVlOiBudW1iZXIpOiBudW1iZXIgPT4gcGFya2VyVGlja2V0VHlwZSAhPSBQYXJrZXJUaWNrZXRUeXBlLlVua25vd24gPyB2YWx1ZSA6IG51bGw7XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZUV2ZW50QWN0aXZpdHkoZXZlbnRBY3Rpdml0eURhdGE6IGFueSkge1xuICAgIGNvbnN0IGV2ZW50QWN0aXZ0eUR0byA9IEV2ZW50QWN0aXZpdHlEdG8uZnJvbUpTKGV2ZW50QWN0aXZpdHlEYXRhKTtcbiAgICAvLyBiYWNrd2FyZHMgLSBmcm9tIDkuMy4yIHRoZSBtYXBwaW5nIGZyb20gRXZlbnRBY3Rpdml0eUNvcmUgdG8gRXZlbnRBY3Rpdml0eUR0byB3aWxsIGJlIGluIHRoZSBjbGllbnRcbiAgICBpZiAoZXZlbnRBY3Rpdml0eURhdGEucGFya2VyVGlja2V0VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBldmVudEFjdGl2dHlEdG8uZGVzY3JpcHRpb24gPSBldmVudEFjdGl2aXR5RGF0YS5kaXM7XG4gICAgICBldmVudEFjdGl2dHlEdG8uZGF0ZSA9IGV2ZW50QWN0aXZpdHlEYXRhLm5EYXRlO1xuICAgICAgZXZlbnRBY3RpdnR5RHRvLnRpbWUgPSBldmVudEFjdGl2aXR5RGF0YS5uVGltZTtcbiAgICAgIGV2ZW50QWN0aXZ0eUR0by5kYXRlVGltZSA9IGV2ZW50QWN0aXZpdHlEYXRhLm5EYXRlVGltZTtcbiAgICAgIGV2ZW50QWN0aXZ0eUR0by5wYXJrZXJUaWNrZXRUeXBlID0gdGhpcy5nZXRFdmVudEFjdGl2aXR5UGFya2VyVGlja2V0VHlwZShldmVudEFjdGl2aXR5RGF0YSk7XG4gICAgICBldmVudEFjdGl2dHlEdG8udGlja2V0SWQgPSB0aGlzLkdldFRpY2tldE51bShldmVudEFjdGl2dHlEdG8ucGFya2VyVGlja2V0VHlwZSwgZXZlbnRBY3Rpdml0eURhdGEucm93SXRlbURhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiBldmVudEFjdGl2dHlEdG87XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50QWN0aXZpdHlQYXJrZXJUaWNrZXRUeXBlKGV2ZW50QWN0aXZpdHlEYXRhOiBhbnkpOiBQYXJrZXJUaWNrZXRUeXBlIHtcbiAgICBsZXQgcGFya2VyVGlja2V0VHlwZTogUGFya2VyVGlja2V0VHlwZTtcbiAgICBzd2l0Y2ggKGV2ZW50QWN0aXZpdHlEYXRhLmltZ0NlbGxUYWcpIHtcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5LkNyZWRpdENhcmROb3RFbmFibGVkOlxuICAgICAgY2FzZSBUeXBlQ2FzdEV2ZW50QWN0aXZpdHkuQ3JlZGl0Q2FyZEVycm9yOlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5DcmVkaXRDYXJkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5LlRyYW5zaWVudE9wZW5UaWNrZXQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RXZlbnRBY3Rpdml0eS5UcmFuc2llbnRDbG9zZVRpY2tldDpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuVHJhbnNpZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5Lk1vbnRobHk6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLk1vbnRobHk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlQ2FzdEV2ZW50QWN0aXZpdHkuUGF5bWVudDpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuUGF5bWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFR5cGVDYXN0RXZlbnRBY3Rpdml0eS5HdWVzdDpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuR3Vlc3Q7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlQ2FzdEV2ZW50QWN0aXZpdHkuRVZvdWNoZXI6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLkVWb3VjaGVyO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLlVua25vd247XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJrZXJUaWNrZXRUeXBlO1xuICB9XG59XG4iXX0=
|
|
642
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyay1tYW5hZ2VyLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBSXJFLE9BQU8sRUFDTSxjQUFjLEVBQTZCLGVBQWUsRUFBRSxnQkFBZ0IsRUFDM0MsY0FBYyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUNqRyxxQkFBcUIsRUFDdEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUsNEJBQTRCLEVBQzlGLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLDJCQUEyQixFQUFFLHdCQUF3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Q0FBZ0MsTUF1Q2hDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERldmljZXNWaWV3TW9kZSB9IGZyb20gJy4uLy4uL2VudW1zL2RldmljZXMtdmlldy1tb2RlLmVudW0nO1xuaW1wb3J0IHsgU2VsZWN0ZWRSb3cgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NlbGVjdGVkLXJvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90YWJsZS1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBScGMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5JztcbmltcG9ydCB7XG4gIERldmljZUR0bywgRGV2aWNlRXZlbnREdG8sIERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8sIERldmljZVN0YXR1c0R0bywgRXZlbnRBY3Rpdml0eUR0byxcbiAgRmFjaWxpdHlScGNTZXJ2aWNlUHJveHksIExwclRyYW5zYWN0aW9uRHRvLCBPcmRlckRpcmVjdGlvbiwgUGFya2VyVGlja2V0VHlwZSwgVHlwZUNhc3REZXZpY2VFdmVudCxcbiAgVHlwZUNhc3RFdmVudEFjdGl2aXR5XG59IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvcnBjLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBnZXRNb21lbnROdWxsYWJsZSB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUudXRpbCc7XG5pbXBvcnQgeyBnZXREZWZhdWx0RGV2aWNlU3RhdHVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGV2aWNlLnV0aWwnO1xuaW1wb3J0IHsgTnVtYmVyTWFwLCB0b051bWJlck1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vZmFjaWxpdHkvZmFjaWxpdHkuc3RhdGUnO1xuaW1wb3J0IHsgU2lkZW5hdlN0YXRlIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7XG4gIENsZWFyRGV2aWNlQWN0aW9uLCBDbGVhckRldmljZUV2ZW50c0V4cGFuZGVkLCBDbGVhckRldmljZXNBY3Rpb24sIENsZWFyRXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQsXG4gIENsZWFyTHByVHJhbnNhY3Rpb25zRXhwYW5kZWQsIENsZWFyU2VsZWN0ZWRSb3csIERldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbiwgRGV2aWNlRXZlbnRDaGFuZ2VkQWN0aW9uLFxuICBEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uLCBMb2FkRGV2aWNlQWN0aW9uLCBMb2FkRGV2aWNlRXZlbnRBY3Rpdml0aWVzQWN0aW9uLCBMb2FkRGV2aWNlRXZlbnRzQWN0aW9uLFxuICBMb2FkRGV2aWNlRXZlbnRzQ29sbGFwc2UsIExvYWREZXZpY2VMcHJUcmFuc2FjdGlvbnNBY3Rpb24sIExvYWREZXZpY2VzQWN0aW9uLCBMb2FkRGV2aWNlc0J5VHlwZUFjdGlvbiwgTG9hZERldmljZVN0YXR1c0FjdGlvbixcbiAgTG9hZEV2ZW50QWN0aXZpdGllc0NvbGxhcHNlLCBMb2FkTHByVHJhbnNhY3Rpb25zQ29sbGFwc2UsIExvYWRTZWxlY3RlZERldmljZUFjdGlvbiwgTHByVHJhbnNhY3Rpb25zQ2hhbmdlZEFjdGlvbixcbiAgU2VsZWN0RGV2aWNlQWN0aW9uLCBTZWxlY3RMcHJUcmFuc2FjdGlvbnNSb3dBY3Rpb24sIFNlbGVjdGVkUm93QWN0aW9uLCBTZXREZXZpY2VFdmVudHNFeHBhbmRlZCwgU2V0RGV2aWNlU3RhdHVzQWN0aW9uLFxuICBTZXREZXZpY2VWaWV3TW9kZUFjdGlvbiwgU2V0RXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQsIFNldExwclRyYW5zYWN0aW9uc0V4cGFuZGVkXG59IGZyb20gJy4vcGFyay1tYW5hZ2VyLmFjdGlvbnMnO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBTdWJNb2R1bGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFya01hbmFnZXJTdGF0ZU1vZGVsIHtcbiAgZmxhdDogRGV2aWNlRHRvW107XG4gIGJ5SWQ6IE51bWJlck1hcDxEZXZpY2VEdG8+O1xuICBieUNvbW1JZDogTnVtYmVyTWFwPERldmljZUR0bz47XG4gIGNvdW50OiBudW1iZXI7XG4gIGRldmljZXNWaWV3TW9kZTogRGV2aWNlc1ZpZXdNb2RlO1xuXG4gIHNlbGVjdGVkSWQ6IG51bWJlcjtcbiAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bztcbiAgc2VsZWN0ZWREZXZpY2VQYXJrSWQ6IG51bWJlcjtcbiAgZGV2aWNlUmVtb3RlQ29tbWFuZHM6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG9bXTtcblxuICBkZXZpY2VFdmVudHNDb2xsYXBzZTogVGFibGVEYXRhPERldmljZUV2ZW50RHRvPjtcbiAgZXZlbnRBY3Rpdml0aWVzQ29sbGFwc2U6IFRhYmxlRGF0YTxFdmVudEFjdGl2aXR5RHRvPjtcbiAgbHByVHJhbnNhY3Rpb25zQ29sbGFwc2U6IFRhYmxlRGF0YTxMcHJUcmFuc2FjdGlvbkR0bz47XG5cbiAgZGV2aWNlRXZlbnRzOiBEZXZpY2VFdmVudER0b1tdO1xuICBldmVudEFjdGl2aXRpZXM6IEV2ZW50QWN0aXZpdHlEdG9bXTtcbiAgbHByVHJhbnNhY3Rpb25zOiBMcHJUcmFuc2FjdGlvbkR0b1tdO1xuXG4gIGRldmljZUV2ZW50c0V4cGFuZGVkOiBEZXZpY2VFdmVudER0b1tdO1xuICBldmVudEFjdGl2aXRpZXNFeHBhbmRlZDogRXZlbnRBY3Rpdml0eUR0b1tdO1xuICBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZDogTHByVHJhbnNhY3Rpb25EdG9bXTtcblxuICAvLyBDcm9zcy10YWJsZSBtdXR1YWwtZXhjbHVzaW9uIG1hcmtlciAoRGV2aWNlRXZlbnQvRGV2aWNlQWN0aXZpdHkpOlxuICAvLyB3aGljaCB0YWJsZSBjdXJyZW50bHkgb3ducyByb3cgc2VsZWN0aW9uOyBob2xkcyBubyByb3cgZGF0YS5cbiAgc2VsZWN0ZWRSb3c6IFNlbGVjdGVkUm93O1xuXG4gIC8vIFRoZSBhY3R1YWwgc2VsZWN0ZWQgTFBSIHJvdywgcHJlc2VydmVkIGFjcm9zcyB0aGUgZGVmYXVsdDwtPmV4cGFuZGVkXG4gIC8vIHRhYmxlIHJlbW91bnQ7IGNsZWFyZWQgb24gZGV2aWNlIGNoYW5nZS5cbiAgc2VsZWN0ZWRMcHJUcmFuc2FjdGlvbnNSb3c6IExwclRyYW5zYWN0aW9uRHRvO1xufVxuXG5jb25zdCBFWFBBTkRFRF9SRVNVTFRfTElNSVQgPSAxMDAwO1xuXG5ASW5qZWN0YWJsZSgpXG5AU3RhdGU8UGFya01hbmFnZXJTdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICdwYXJrTWFuYWdlcicsXG4gIGRlZmF1bHRzOiB7XG4gICAgZmxhdDogbnVsbCxcbiAgICBieUlkOiB7fSxcbiAgICBieUNvbW1JZDoge30sXG4gICAgY291bnQ6IDAsXG4gICAgZGV2aWNlc1ZpZXdNb2RlOiBudWxsLFxuXG4gICAgc2VsZWN0ZWRJZDogbnVsbCxcbiAgICBzZWxlY3RlZERldmljZVN0YXR1czogbnVsbCxcbiAgICBzZWxlY3RlZERldmljZVBhcmtJZDogbnVsbCxcbiAgICBkZXZpY2VSZW1vdGVDb21tYW5kczogbnVsbCxcblxuICAgIGRldmljZUV2ZW50c0NvbGxhcHNlOiBudWxsLFxuICAgIGV2ZW50QWN0aXZpdGllc0NvbGxhcHNlOiBudWxsLFxuICAgIGxwclRyYW5zYWN0aW9uc0NvbGxhcHNlOiBudWxsLFxuXG4gICAgZGV2aWNlRXZlbnRzOiBudWxsLFxuICAgIGV2ZW50QWN0aXZpdGllczogbnVsbCxcbiAgICBscHJUcmFuc2FjdGlvbnM6IG51bGwsXG5cbiAgICBkZXZpY2VFdmVudHNFeHBhbmRlZDogW10sXG4gICAgZXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQ6IFtdLFxuICAgIGxwclRyYW5zYWN0aW9uc0V4cGFuZGVkOiBbXSxcblxuICAgIHNlbGVjdGVkUm93OiBudWxsLFxuXG4gICAgc2VsZWN0ZWRMcHJUcmFuc2FjdGlvbnNSb3c6IG51bGwsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFBhcmtNYW5hZ2VyU3RhdGUge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGV2aWNlUnBjU2VydmljZVByb3h5OiBScGMuRGV2aWNlUnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZmFjaWxpdHlScGNTZXJ2aWNlUHJveHk6IEZhY2lsaXR5UnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGZsYXQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZmxhdDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZGV2aWNlcyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRGV2aWNlRHRvW10ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHN0YXRlLmJ5SWQgfHwge30pO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBieUNvbW1JZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogTnVtYmVyTWFwPERldmljZUR0bz4ge1xuICAgIHJldHVybiBzdGF0ZS5ieUNvbW1JZCB8fCB7fTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgYnlJZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogTnVtYmVyTWFwPERldmljZUR0bz4ge1xuICAgIHJldHVybiBzdGF0ZS5ieUlkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBkZXZpY2VzVmlld01vZGUoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZXNWaWV3TW9kZSB7XG4gICAgLy8gQWxzbyByZXR1cm5zIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGUgdXNlciBoYXZuJ3QgY2hhbmdlIGl0IHlldFxuICAgIHJldHVybiBzdGF0ZS5kZXZpY2VzVmlld01vZGUgfHwgRGV2aWNlc1ZpZXdNb2RlLkdhbGxlcnk7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkRGV2aWNlSWQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCkge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZElkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZERldmljZShzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRGV2aWNlRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuYnlJZFtzdGF0ZS5zZWxlY3RlZElkXTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWREZXZpY2VTdGF0dXMoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZVN0YXR1c0R0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkRGV2aWNlU3RhdHVzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZERldmljZVBhcmtJZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWREZXZpY2VQYXJrSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50KHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpIHtcbiAgICByZXR1cm4gc3RhdGUuY291bnQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGV2ZW50QWN0aXZpdGllcyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRXZlbnRBY3Rpdml0eUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZXZlbnRBY3Rpdml0aWVzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBscHJUcmFuc2FjdGlvbnMoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IExwclRyYW5zYWN0aW9uRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5scHJUcmFuc2FjdGlvbnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGRldmljZUV2ZW50cyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRGV2aWNlRXZlbnREdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmRldmljZUV2ZW50cztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZGV2aWNlRXZlbnRzRXhwYW5kZWQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZUV2ZW50RHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5kZXZpY2VFdmVudHNFeHBhbmRlZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IEV2ZW50QWN0aXZpdHlEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmV2ZW50QWN0aXZpdGllc0V4cGFuZGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogTHByVHJhbnNhY3Rpb25EdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmxwclRyYW5zYWN0aW9uc0V4cGFuZGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBkZXZpY2VFdmVudHNDb2xsYXBzZShzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogVGFibGVEYXRhPERldmljZUV2ZW50RHRvPiB7XG4gICAgcmV0dXJuIHN0YXRlLmRldmljZUV2ZW50c0NvbGxhcHNlO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBldmVudEFjdGl2aXRpZXNDb2xsYXBzZShzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogVGFibGVEYXRhPEV2ZW50QWN0aXZpdHlEdG8+IHtcbiAgICByZXR1cm4gc3RhdGUuZXZlbnRBY3Rpdml0aWVzQ29sbGFwc2U7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxwclRyYW5zYWN0aW9uc0NvbGxhcHNlKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBUYWJsZURhdGE8THByVHJhbnNhY3Rpb25EdG8+IHtcbiAgICByZXR1cm4gc3RhdGUubHByVHJhbnNhY3Rpb25zQ29sbGFwc2U7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkUm93KHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBTZWxlY3RlZFJvdyB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkUm93O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZExwclRyYW5zYWN0aW9uc1JvdyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogTHByVHJhbnNhY3Rpb25EdG8ge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZExwclRyYW5zYWN0aW9uc1JvdztcbiAgfVxuXG4gIEBBY3Rpb24oU2V0RGV2aWNlVmlld01vZGVBY3Rpb24pXG4gIG9uU2V0RGV2aWNlVmlld01vZGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXREZXZpY2VWaWV3TW9kZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRldmljZXNWaWV3TW9kZTogYWN0aW9uLnZpZXdNb2RlLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlRXZlbnRzQ29sbGFwc2UpXG4gIG9uTG9hZERldmljZUV2ZW50c0NvbGxhcHNlKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZUV2ZW50c0NvbGxhcHNlKSB7XG4gICAgY29uc3QgZGV2aWNlRXZlbnRzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldERldmljZUV2ZW50cyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmRldmljZUlkLCBudWxsLCBudWxsLFxuICAgICAgbnVsbCwgbnVsbCwgbnVsbCwgYWN0aW9uLnJlc3VsdExpbWl0LCAwLCBudWxsLCBPcmRlckRpcmVjdGlvbi5Ob25lKTtcbiAgICByZXR1cm4gZGV2aWNlRXZlbnRzJC5waXBlKHRhcChkYXRhU2V0ID0+XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGRldmljZUV2ZW50c0NvbGxhcHNlOiB7XG4gICAgICAgICAgcmVzdWx0TGltaXQ6IGFjdGlvbi5yZXN1bHRMaW1pdCxcbiAgICAgICAgICBkYXRhU2V0OiBkYXRhU2V0LmRhdGEsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0RGV2aWNlRXZlbnRzRXhwYW5kZWQpXG4gIG9uU2V0RGV2aWNlRXZlbnRzRXhwYW5kZWQoY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXREZXZpY2VFdmVudHNFeHBhbmRlZCkge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRldmljZUV2ZW50c0V4cGFuZGVkOiBhY3Rpb24uZGF0YVNldCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEV2ZW50QWN0aXZpdGllc0NvbGxhcHNlKVxuICBvbkxvYWRFdmVudEFjdGl2aXRpZXNDb2xsYXBzZShjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRFdmVudEFjdGl2aXRpZXNDb2xsYXBzZSkge1xuICAgIGNvbnN0IGV2ZW50QWN0aXZpdGllcyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXREZXZpY2VBY3Rpdml0aWVzKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZGV2aWNlSWQsIG51bGwsIG51bGwsXG4gICAgICBudWxsLCBudWxsLCBudWxsLCBhY3Rpb24ucmVzdWx0TGltaXQsIDAsIG51bGwsIE9yZGVyRGlyZWN0aW9uLk5vbmUpO1xuICAgIHJldHVybiBldmVudEFjdGl2aXRpZXMkLnBpcGUodGFwKGRhdGFTZXQgPT5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZXZlbnRBY3Rpdml0aWVzQ29sbGFwc2U6IHtcbiAgICAgICAgICByZXN1bHRMaW1pdDogYWN0aW9uLnJlc3VsdExpbWl0LFxuICAgICAgICAgIGRhdGFTZXQ6IGRhdGFTZXQuZGF0YSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRFdmVudEFjdGl2aXRpZXNFeHBhbmRlZClcbiAgb25TZXRFdmVudEFjdGl2aXRpZXNFeHBhbmRlZChjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNldEV2ZW50QWN0aXZpdGllc0V4cGFuZGVkKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQ6IGFjdGlvbi5kYXRhU2V0LFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkTHByVHJhbnNhY3Rpb25zQ29sbGFwc2UpXG4gIG9uTG9hZExwclRyYW5zYWN0aW9uc0NvbGxhcHNlKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZExwclRyYW5zYWN0aW9uc0NvbGxhcHNlKSB7XG4gICAgY29uc3QgbHByVHJhbnNhY3Rpb25zJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5XG4gICAgICAuZ2V0RGV2aWNlTHByVHJhbnNhY3Rpb25zKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZGV2aWNlSWQsIG51bGwsIG51bGwsIG51bGwsIG51bGwsXG4gICAgICAgIG51bGwsIGFjdGlvbi5yZXN1bHRMaW1pdCwgMCwgbnVsbCwgT3JkZXJEaXJlY3Rpb24uTm9uZSk7XG4gICAgcmV0dXJuIGxwclRyYW5zYWN0aW9ucyQucGlwZSh0YXAoZGF0YVNldCA9PlxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBscHJUcmFuc2FjdGlvbnNDb2xsYXBzZToge1xuICAgICAgICAgIHJlc3VsdExpbWl0OiBhY3Rpb24ucmVzdWx0TGltaXQsXG4gICAgICAgICAgZGF0YVNldDogZGF0YVNldC5kYXRhLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKSk7XG4gIH1cblxuICBAQWN0aW9uKFNldExwclRyYW5zYWN0aW9uc0V4cGFuZGVkKVxuICBvblNldExwclRyYW5zYWN0aW9uc0V4cGFuZGVkKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0THByVHJhbnNhY3Rpb25zRXhwYW5kZWQpIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZDogYWN0aW9uLmRhdGFTZXQsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyRGV2aWNlRXZlbnRzRXhwYW5kZWQpXG4gIG9uQ2xlYXJEZXZpY2VFdmVudHNFeHBhbmRlZChjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZGV2aWNlRXZlbnRzRXhwYW5kZWQ6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckV2ZW50QWN0aXZpdGllc0V4cGFuZGVkKVxuICBvbkNsZWFyRXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQoY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGV2ZW50QWN0aXZpdGllc0V4cGFuZGVkOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJMcHJUcmFuc2FjdGlvbnNFeHBhbmRlZClcbiAgb25DbGVhckxwclRyYW5zYWN0aW9uc0V4cGFuZGVkKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZDogW10sXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWREZXZpY2VzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZERldmljZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRGV2aWNlc0FjdGlvbikge1xuICAgIHRoaXMucGF0Y2hEZXZpY2VzKGN0eCwgbnVsbCk7XG5cbiAgICBjb25zdCBhcHBNb2R1bGU6IEFwcE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XG4gICAgY29uc3Qgc3ViTW9kdWxlOiBTdWJNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5zdWJNb2R1bGUpO1xuXG4gICAgbGV0IGdldERldmljZXMkOiB0eXBlb2YgdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0Q0NEZXZpY2VzO1xuICAgIGlmIChhcHBNb2R1bGUgPT09IEFwcE1vZHVsZS5DYyB8fCBhcHBNb2R1bGUgPT09IEFwcE1vZHVsZS5UZWNoVG9vbHMpIHtcbiAgICAgIC8vIFNQUkszLTEzNzE5IOKAlCBUZWNoIFRvb2xzIHJldXNlcyB0aGUgY29tbWFuZC1jZW50ZXIgZGV2aWNlIGxpc3QuXG4gICAgICBnZXREZXZpY2VzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldENDRGV2aWNlcy5iaW5kKHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5KTtcbiAgICB9IGVsc2UgaWYgKGFwcE1vZHVsZSA9PT0gQXBwTW9kdWxlLk1vbnRobGllcykge1xuICAgICAgLy8gU1BSSzMtMTQyMDUg4oCUIHRoZSBtb250aGx5IHRyYWZmaWMgc2NyZWVuIGZpbHRlcnMgYnkgZGV2aWNlLiBGYWxsaW5nIHRocm91Z2ggaGVyZSBsZWZ0XG4gICAgICAvLyBnZXREZXZpY2VzJCB1bmRlZmluZWQgYW5kIHRoZSBkcm9wZG93biB0aHJldyBpbnN0ZWFkIG9mIGxvYWRpbmcuXG4gICAgICBnZXREZXZpY2VzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldE1vbnRobGllc0RldmljZXMuYmluZCh0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eSk7XG4gICAgfSBlbHNlIGlmIChhcHBNb2R1bGUgPT09IEFwcE1vZHVsZS5SZXBvcnRzKSB7XG4gICAgICBnZXREZXZpY2VzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldFJlcG9ydHNEZXZpY2VzLmJpbmQodGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkpO1xuICAgIH0gZWxzZSBpZiAoYXBwTW9kdWxlID09PSBBcHBNb2R1bGUuTG90Q29uZmlndXJhdGlvbiAmJiBzdWJNb2R1bGUgPT09IFN1Yk1vZHVsZS5TY2hlZHVsZXIpIHtcbiAgICAgIGdldERldmljZXMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0TG90Q29uZmlndXJhdGlvbnNEZXZpY2VzLmJpbmQodGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkpO1xuICAgIH1cblxuICAgIHJldHVybiBnZXREZXZpY2VzJChhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ubWF4UmVzdWx0cyxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/LnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkuY29sdW1uLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbiwgYWN0aW9uLmlzVGw2MCkucGlwZSh0YXAoZGV2aWNlcyA9PlxuICAgICAgICB0aGlzLnBhdGNoRGV2aWNlcyhjdHgsIGRldmljZXMuZGF0YSkpKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZERldmljZXNCeVR5cGVBY3Rpb24pXG4gIG9uTG9hZERldmljZXNCeVR5cGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRGV2aWNlc0J5VHlwZUFjdGlvbikge1xuICAgIGNvbnN0IGRldmljZXMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlc0J5VHlwZShhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ubWF4UmVzdWx0cyxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/LnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkuY29sdW1uLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbiwgYWN0aW9uLmRldmljZVR5cGVzKTtcbiAgICByZXR1cm4gZGV2aWNlcyQucGlwZSh0YXAoZGV2aWNlcyA9PiB0aGlzLnBhdGNoRGV2aWNlcyhjdHgsIGRldmljZXMuZGF0YSkpKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJEZXZpY2VzQWN0aW9uKVxuICBvbkNsZWFyRGV2aWNlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgdGhpcy5wYXRjaERldmljZXMoY3R4LCBudWxsKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2VsZWN0RGV2aWNlQWN0aW9uKVxuICBvblNlbGVjdERldmljZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdERldmljZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VsZWN0ZWRJZDogbnVsbCB9KTtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkSWQ6IGFjdGlvbi5kZXZpY2VJZCB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNlbGVjdGVkRGV2aWNlQWN0aW9uKVxuICBvbkxvYWRTZWxlY3RlZERldmljZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VJZCA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkSWQ7XG4gICAgaWYgKHNlbGVjdGVkRGV2aWNlSWQpIHtcbiAgICAgIHRoaXMub25Mb2FkRGV2aWNlQWN0aW9uKGN0eCwgeyBkZXZpY2VJZDogc2VsZWN0ZWREZXZpY2VJZCB9KTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWREZXZpY2VTdGF0dXNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkRGV2aWNlU3RhdHVzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZVN0YXR1c0FjdGlvbikge1xuICAgIGNvbnN0IGd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG5cbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZERldmljZVN0YXR1czogbnVsbCxcbiAgICAgIHNlbGVjdGVkRGV2aWNlUGFya0lkOiBudWxsLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGV2aWNlU3RhdHVzJCA9IHRoaXMuZmFjaWxpdHlScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlU3RhdHVzKGd1aWQsIGFjdGlvbi5kZXZpY2U/LnBhcmtJRCwgYWN0aW9uLmRldmljZT8uaWQpO1xuXG4gICAgcmV0dXJuIGRldmljZVN0YXR1cyQucGlwZSh0YXAoZGV2aWNlU3RhdHVzID0+XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHNlbGVjdGVkRGV2aWNlU3RhdHVzOiBkZXZpY2VTdGF0dXM/LmRhdGE/LmRhdGEgfHwgZ2V0RGVmYXVsdERldmljZVN0YXR1cyhhY3Rpb24uZGV2aWNlKSxcbiAgICAgICAgc2VsZWN0ZWREZXZpY2VQYXJrSWQ6IGRldmljZVN0YXR1cz8uZGF0YT8ucGFya0lELFxuICAgICAgfSksXG4gICAgKSk7XG4gIH1cblxuICBAQWN0aW9uKFNldERldmljZVN0YXR1c0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvblNldERldmljZVN0YXR1c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNldERldmljZVN0YXR1c0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkRGV2aWNlU3RhdHVzOiBnZXREZWZhdWx0RGV2aWNlU3RhdHVzKGFjdGlvbi5kZXZpY2UpLFxuICAgICAgc2VsZWN0ZWREZXZpY2VQYXJrSWQ6IGFjdGlvbi5kZXZpY2UucGFya0lELFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlRXZlbnRBY3Rpdml0aWVzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZERldmljZUV2ZW50QWN0aXZpdGllc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWREZXZpY2VFdmVudEFjdGl2aXRpZXNBY3Rpb24pIHtcbiAgICBjb25zdCBldmVudEFjdGl2aXRpZXMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlQWN0aXZpdGllcyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmRldmljZUlkLCBnZXRNb21lbnROdWxsYWJsZShhY3Rpb24uc3RhcnREYXRlKSxcbiAgICAgIGdldE1vbWVudE51bGxhYmxlKGFjdGlvbi5lbmREYXRlKSwgYWN0aW9uLnNlYXJjaFZhbHVlLCBudWxsLCBudWxsLCBhY3Rpb24udGFrZSwgYWN0aW9uLnNraXAsIG51bGwsIE9yZGVyRGlyZWN0aW9uLk5vbmUpO1xuICAgIHJldHVybiBldmVudEFjdGl2aXRpZXMkLnBpcGUodGFwKGV2ZW50QWN0aXZpdGllcyA9PlxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBldmVudEFjdGl2aXRpZXM6IGV2ZW50QWN0aXZpdGllcy5kYXRhLFxuICAgICAgfSksXG4gICAgKSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWREZXZpY2VMcHJUcmFuc2FjdGlvbnNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkRGV2aWNlTHByVHJhbnNhY3Rpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZUxwclRyYW5zYWN0aW9uc0FjdGlvbikge1xuICAgIGNvbnN0IGxwclRyYW5zYWN0aW9ucyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXREZXZpY2VMcHJUcmFuc2FjdGlvbnMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5kZXZpY2VJZCwgZ2V0TW9tZW50TnVsbGFibGUoYWN0aW9uLnN0YXJ0RGF0ZSksXG4gICAgICBnZXRNb21lbnROdWxsYWJsZShhY3Rpb24uZW5kRGF0ZSksIG51bGwsIG51bGwsIG51bGwsIGFjdGlvbi50YWtlLCBhY3Rpb24uc2tpcCwgbnVsbCwgT3JkZXJEaXJlY3Rpb24uTm9uZSk7XG4gICAgcmV0dXJuIGxwclRyYW5zYWN0aW9ucyQucGlwZSh0YXAobHByVHJhbnNhY3Rpb25zID0+XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGxwclRyYW5zYWN0aW9uczogbHByVHJhbnNhY3Rpb25zLmRhdGEsXG4gICAgICB9KSxcbiAgICApKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZERldmljZUV2ZW50c0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWREZXZpY2VFdmVudHNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRGV2aWNlRXZlbnRzQWN0aW9uKSB7XG4gICAgY29uc3QgZGV2aWNlRXZlbnRzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldERldmljZUV2ZW50cyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmRldmljZUlkLCBnZXRNb21lbnROdWxsYWJsZShhY3Rpb24uc3RhcnREYXRlKSxcbiAgICAgIGdldE1vbWVudE51bGxhYmxlKGFjdGlvbi5lbmREYXRlKSwgbnVsbCwgbnVsbCwgbnVsbCwgYWN0aW9uLnRha2UsIGFjdGlvbi5za2lwLCBudWxsLCBPcmRlckRpcmVjdGlvbi5Ob25lKTtcbiAgICByZXR1cm4gZGV2aWNlRXZlbnRzJC5waXBlKHRhcChkZXZpY2VFdmVudHMgPT5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGV2aWNlRXZlbnRzOiBkZXZpY2VFdmVudHMuZGF0YSxcbiAgICAgIH0pLFxuICAgICkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlQWN0aW9uKVxuICBvbkxvYWREZXZpY2VBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRGV2aWNlQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZXZlbnRBY3Rpdml0aWVzOiBudWxsLFxuICAgICAgbHByVHJhbnNhY3Rpb25zOiBudWxsLFxuICAgICAgZGV2aWNlRXZlbnRzOiBudWxsLFxuICAgICAgZGV2aWNlUmVtb3RlQ29tbWFuZHM6IG51bGwsXG4gICAgICBkZXZpY2VFdmVudHNDb2xsYXBzZTogbnVsbCxcbiAgICAgIGV2ZW50QWN0aXZpdGllc0NvbGxhcHNlOiBudWxsLFxuICAgICAgbHByVHJhbnNhY3Rpb25zQ29sbGFwc2U6IG51bGwsXG4gICAgICBkZXZpY2VFdmVudHNFeHBhbmRlZDogW10sXG4gICAgICBldmVudEFjdGl2aXRpZXNFeHBhbmRlZDogW10sXG4gICAgICBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZDogW10sXG4gICAgICBzZWxlY3RlZERldmljZVN0YXR1czogbnVsbCxcbiAgICAgIHNlbGVjdGVkRGV2aWNlUGFya0lkOiBudWxsLFxuICAgICAgc2VsZWN0ZWRMcHJUcmFuc2FjdGlvbnNSb3c6IG51bGwsXG4gICAgfSk7XG5cbiAgICAvLyB3YWl0IGZvciBkZXZpY2VzIHN0b3JlIHRvIGJlIGxvYWRlZCBiZWZvcmUgbG9hZGluZyBhIGRldmljZVxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChQYXJrTWFuYWdlclN0YXRlLmRldmljZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGRldmljZXMgPT4gZGV2aWNlcz8ubGVuZ3RoID4gMCksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHRhcCgoZmlsdGVyZWREZXZpY2VzKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGV2aWNlID0gZmlsdGVyZWREZXZpY2VzLmZpbmQoZCA9PiBkLmlkID09PSArYWN0aW9uLmRldmljZUlkKTtcbiAgICAgICAgICBjdHguZGlzcGF0Y2gobmV3IExvYWREZXZpY2VTdGF0dXNBY3Rpb24oZGV2aWNlKSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gIH1cblxuICBAQWN0aW9uKENsZWFyRGV2aWNlQWN0aW9uKVxuICBvbkNsZWFyRGV2aWNlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZElkOiBudWxsLFxuICAgICAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IG51bGwsXG4gICAgICBzZWxlY3RlZERldmljZVBhcmtJZDogbnVsbCxcbiAgICAgIGV2ZW50QWN0aXZpdGllczogbnVsbCxcbiAgICAgIGxwclRyYW5zYWN0aW9uczogbnVsbCxcbiAgICAgIGRldmljZUV2ZW50czogbnVsbCxcbiAgICAgIGRldmljZVJlbW90ZUNvbW1hbmRzOiBudWxsLFxuICAgICAgc2VsZWN0ZWRMcHJUcmFuc2FjdGlvbnNSb3c6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKERldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pXG4gIG9uRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IERldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBkZXZpY2VJZCA9IGFjdGlvbi5kZXZpY2VTdGF0dXM/LmRldmljZUlEO1xuICAgIGNvbnN0IGNvbW1JRCA9IGFjdGlvbi5kZXZpY2VTdGF0dXM/LmNvbW1JRDtcblxuICAgIGNvbnN0IGRldmljZXNCeUlkID0gY3R4LmdldFN0YXRlKCkuYnlJZDtcbiAgICBjb25zdCBkZXZpY2VzYnlDb21tSWQgPSBjdHguZ2V0U3RhdGUoKS5ieUNvbW1JZDtcblxuICAgIGlmIChkZXZpY2VzQnlJZFtkZXZpY2VJZF0pIHtcbiAgICAgIGlmICghaXNFcXVhbChkZXZpY2VzQnlJZFtkZXZpY2VJZF0uZGV2aWNlU3RhdHVzLCBhY3Rpb24uZGV2aWNlU3RhdHVzKSkge1xuICAgICAgICBjb25zdCBjbG9uZWREdG8gPSBEZXZpY2VTdGF0dXNEdG8uZnJvbUpTKGFjdGlvbi5kZXZpY2VTdGF0dXMpO1xuICAgICAgICBjbG9uZWREdG8udHlwZSA9IGRldmljZXNCeUlkW2RldmljZUlkXS50eXBlO1xuICAgICAgICBkZXZpY2VzQnlJZFtkZXZpY2VJZF0uZGV2aWNlU3RhdHVzID0gY2xvbmVkRHRvO1xuICAgICAgICAvLyBTUFJLMy0xNDk4NyAoU2VudHJ5IEpBVkFTQ1JJUFQtQU5HVUxBUi0zQSk6IHRoZSBndWFyZCBhYm92ZSB0ZXN0cyBieUlkLCBidXRcbiAgICAgICAgLy8gdGhpcyB3cml0ZXMgYnlDb21tSWQgLS0gYSBkaWZmZXJlbnQgbWFwLCBrZXllZCBieSBhIGRpZmZlcmVudCwgb3B0aW9uYWwgZmllbGQuXG4gICAgICAgIC8vIGJ5SWQgaXMgdGhlIHByaW1hcnkgaW5kZXggYW5kIGJvdGggbWFwcyBhcmUgcmVidWlsdCB0b2dldGhlciBpbiBwYXRjaERldmljZXMsXG4gICAgICAgIC8vIHNvIGEgbWlzc2luZyBzZWNvbmRhcnkgZW50cnkgbXVzdCBub3QgY29zdCBieUlkIGl0cyBmcmVzaCBzdGF0dXMuXG4gICAgICAgIGNvbnN0IGRldmljZUJ5Q29tbUlkID0gZGV2aWNlc2J5Q29tbUlkW2NvbW1JRF07XG4gICAgICAgIGlmIChkZXZpY2VCeUNvbW1JZCkge1xuICAgICAgICAgIGRldmljZUJ5Q29tbUlkLmRldmljZVN0YXR1cyA9IGNsb25lZER0bztcbiAgICAgICAgfVxuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBieUlkOiBjbG9uZURlZXAoZGV2aWNlc0J5SWQpLFxuICAgICAgICAgIGJ5Q29tbUlkOiBjbG9uZURlZXAoZGV2aWNlc2J5Q29tbUlkKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VTdGF0dXMgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZERldmljZVN0YXR1cztcbiAgICBpZiAoc2VsZWN0ZWREZXZpY2VTdGF0dXM/LmRldmljZUlEID09PSBkZXZpY2VJZCkge1xuICAgICAgYWN0aW9uLmRldmljZVN0YXR1cy50eXBlID0gc2VsZWN0ZWREZXZpY2VTdGF0dXMudHlwZTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IGFjdGlvbi5kZXZpY2VTdGF0dXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBmb3IgRGV2aWNlIEV2ZW50c1xuICBAQWN0aW9uKERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbilcbiAgb25EZXZpY2VFdmVudENoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBEZXZpY2VFdmVudENoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBzZWxlY3RlZERldmljZVBhcmtJZCA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkRGV2aWNlUGFya0lkO1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlU3RhdHVzID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWREZXZpY2VTdGF0dXM7XG4gICAgLy8gVE9ETzogY2hhbmdlIHRvIGRldmljZUlkIG9uY2UgU1Agd2lsbCBpbXBsZW1lbnRcbiAgICBpZiAoc2VsZWN0ZWREZXZpY2VTdGF0dXM/LmNvbW1JRCA9PT0gYWN0aW9uLmRldkV2ZW50Py5yZWFkZXJJRCAmJiBzZWxlY3RlZERldmljZVBhcmtJZCA9PT0gYWN0aW9uLmRldkV2ZW50Py5wYXJrSUQpIHtcbiAgICAgIGNvbnN0IGRldmljZUV2ZW50RHRvID0gdGhpcy5wb3B1bGF0ZURldmljZUV2ZW50KGFjdGlvbi5kZXZFdmVudCk7XG4gICAgICB0aGlzLnBhdGNoRGV2aWNlSXRlbShjdHgsIGRldmljZUV2ZW50RHRvLCAnZGV2aWNlRXZlbnRzJyk7XG4gICAgfVxuICB9XG5cblxuICAvLy8gZm9yIERldmljZSBhY3Rpdml0eVxuICBAQWN0aW9uKERldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbilcbiAgb25EZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBEZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBzZWxlY3RlZERldmljZVBhcmtJZCA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkRGV2aWNlUGFya0lkO1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlU3RhdHVzID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWREZXZpY2VTdGF0dXM7XG4gICAgLy8gVE9ETzogY2hhbmdlIHRvIGRldmljZUlkIG9uY2UgU1Agd2lsbCBpbXBsZW1lbnRcbiAgICBpZiAoc2VsZWN0ZWREZXZpY2VTdGF0dXM/LmNvbW1JRCA9PT0gYWN0aW9uLmV2ZW50QWN0aXZpdHk/LnJlYWRlcklEICYmIHNlbGVjdGVkRGV2aWNlUGFya0lkID09PSBhY3Rpb24uZXZlbnRBY3Rpdml0eT8ucGFya0lEKSB7XG4gICAgICBjb25zdCBldmVudEFjdGl2aXR5RHRvID0gdGhpcy5wb3B1bGF0ZUV2ZW50QWN0aXZpdHkoYWN0aW9uLmV2ZW50QWN0aXZpdHkpO1xuICAgICAgdGhpcy5wYXRjaERldmljZUl0ZW0oY3R4LCBldmVudEFjdGl2aXR5RHRvLCAnZXZlbnRBY3Rpdml0aWVzJyk7XG4gICAgfVxuICB9XG5cbiAgLy8vIGZvciBMUFIgVHJhbnNhY3Rpb25zXG4gIEBBY3Rpb24oTHByVHJhbnNhY3Rpb25zQ2hhbmdlZEFjdGlvbilcbiAgb25McHJUcmFuc2FjdGlvbnNDaGFuZ2VkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTHByVHJhbnNhY3Rpb25zQ2hhbmdlZEFjdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlUGFya0lkID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWREZXZpY2VQYXJrSWQ7XG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VTdGF0dXMgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZERldmljZVN0YXR1cztcbiAgICAvLyBUT0RPOiBjaGFuZ2UgdG8gZGV2aWNlSWQgb25jZSBTUCB3aWxsIGltcGxlbWVudFxuICAgIGlmIChzZWxlY3RlZERldmljZVN0YXR1cz8uY29tbUlEID09PSBhY3Rpb24ubHByVHJhbnNhY3Rpb24/LnJlYWRlcklEICYmIHNlbGVjdGVkRGV2aWNlUGFya0lkID09PSBhY3Rpb24ubHByVHJhbnNhY3Rpb24/LnBhcmtJRCkge1xuICAgICAgdGhpcy5wYXRjaERldmljZUl0ZW0oY3R4LCBhY3Rpb24ubHByVHJhbnNhY3Rpb24sICdscHJUcmFuc2FjdGlvbnMnKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKFNlbGVjdGVkUm93QWN0aW9uKVxuICBvblNlbGVjdGVkUm93QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogU2VsZWN0ZWRSb3dBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFJvdzoge1xuICAgICAgICB0YWJsZU5hbWU6IGFjdGlvbi5wYXlsb2FkLnRhYmxlTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFNlbGVjdExwclRyYW5zYWN0aW9uc1Jvd0FjdGlvbilcbiAgb25TZWxlY3RMcHJUcmFuc2FjdGlvbnNSb3dBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZWxlY3RMcHJUcmFuc2FjdGlvbnNSb3dBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZExwclRyYW5zYWN0aW9uc1JvdzogYWN0aW9uLnZhbHVlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoRGV2aWNlcyhjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBkZXZpY2VzOiBEZXZpY2VEdG9bXSkge1xuICAgIGRldmljZXM/LmZvckVhY2goZGV2aWNlID0+IGRldmljZS5kZXZpY2VTdGF0dXMgPSBkZXZpY2UuZGV2aWNlU3RhdHVzID8/IGdldERlZmF1bHREZXZpY2VTdGF0dXMoZGV2aWNlKSk7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZmxhdDogZGV2aWNlcz8uc29ydCgoYSwgYikgPT4gYS5pZCAtIGIuaWQpLFxuICAgICAgYnlJZDogdG9OdW1iZXJNYXAoZGV2aWNlcyB8fCBbXSwgKGQpID0+IGQuaWQpLFxuICAgICAgYnlDb21tSWQ6IHRvTnVtYmVyTWFwKGRldmljZXMgfHwgW10sIChkKSA9PiBkLmNvbW1JRCksXG4gICAgICBjb3VudDogZGV2aWNlcz8ubGVuZ3RoIHx8IDAsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoRGV2aWNlSXRlbTxUPihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBpdGVtOiBULCBpdGVtc05hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbGxhcHNlSXRlbXNOYW1lID0gYCR7aXRlbXNOYW1lfUNvbGxhcHNlYDtcbiAgICBjb25zdCBleHBhbmRlZEl0ZW1zTmFtZSA9IGAke2l0ZW1zTmFtZX1FeHBhbmRlZGA7XG4gICAgY29uc3QgY29sbGFwc2VJdGVtcyA9IGN0eC5nZXRTdGF0ZSgpW2NvbGxhcHNlSXRlbXNOYW1lXSBhcyBUYWJsZURhdGE8YW55PjtcbiAgICBsZXQgZXhwYW5kZWRJdGVtcyA9IGN0eC5nZXRTdGF0ZSgpW2V4cGFuZGVkSXRlbXNOYW1lXTtcblxuICAgIGlmIChjb2xsYXBzZUl0ZW1zICE9PSBudWxsKSB7XG4gICAgICBjb2xsYXBzZUl0ZW1zLmRhdGFTZXQgPSBbLi4uY29sbGFwc2VJdGVtcy5kYXRhU2V0LnNsaWNlKDAsIGNvbGxhcHNlSXRlbXMucmVzdWx0TGltaXQgLSAxKV07XG4gICAgICBjb2xsYXBzZUl0ZW1zLmRhdGFTZXQudW5zaGlmdChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoZXhwYW5kZWRJdGVtcyAhPT0gbnVsbCkge1xuICAgICAgZXhwYW5kZWRJdGVtcyA9IFsuLi5leHBhbmRlZEl0ZW1zXS5zbGljZSgwLCBFWFBBTkRFRF9SRVNVTFRfTElNSVQgLSAxKTtcbiAgICAgIGV4cGFuZGVkSXRlbXMudW5zaGlmdChpdGVtKTtcbiAgICB9XG5cbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBbY29sbGFwc2VJdGVtc05hbWVdOiBjbG9uZURlZXAoY29sbGFwc2VJdGVtcyksXG4gICAgICBbZXhwYW5kZWRJdGVtc05hbWVdOiBleHBhbmRlZEl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlbGVjdGVkUm93KVxuICBvbkNsZWFyU2VsZWN0ZWRSb3coY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkUm93OiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZURldmljZUV2ZW50KGRldmljZUV2ZW50RGF0YTogYW55KSB7XG4gICAgY29uc3QgZGV2aWNlRXZlbnREdG8gPSBEZXZpY2VFdmVudER0by5mcm9tSlMoZGV2aWNlRXZlbnREYXRhKTtcblxuICAgIC8vIGJhY2t3YXJkcyAtIGZyb20gOS4zLjIgdGhlIG1hcHBpbmcgZnJvbSBEZXZpY2VFdmVudENvcmUgdG8gRGV2aWNlRXZlbnREdG8gd2lsbCBiZSBpbiB0aGUgY2xpZW50XG4gICAgaWYgKGRldmljZUV2ZW50RGF0YS5wYXJrZXJUaWNrZXRUeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRldmljZUV2ZW50RHRvLnBhcmtlclRpY2tldFR5cGUgPSB0aGlzLmdldERldmljZUV2ZW50UGFya2VyVGlja2V0VHlwZShkZXZpY2VFdmVudERhdGEpO1xuICAgICAgZGV2aWNlRXZlbnREdG8udGlja2V0TnVtID0gdGhpcy5HZXRUaWNrZXROdW0oZGV2aWNlRXZlbnREdG8ucGFya2VyVGlja2V0VHlwZSwgZGV2aWNlRXZlbnREdG8udmFsdWUxKTtcbiAgICB9XG4gICAgaWYgKGRldmljZUV2ZW50RHRvLmV2ZW50VHlwZT8ubW9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZXZpY2VFdmVudER0by5ldmVudFR5cGUubW9kZSA9IGRldmljZUV2ZW50RGF0YS5ldmVudFR5cGUuZXZlbnRUeXBlO1xuICAgICAgZGV2aWNlRXZlbnREdG8uZXZlbnRUeXBlLnZhbHVlMV9EZXNjcmlwdGlvbiA9IGRldmljZUV2ZW50RGF0YS5ldmVudFR5cGUudmFsdWUxX0RpcztcbiAgICAgIGRldmljZUV2ZW50RHRvLmV2ZW50VHlwZS52YWx1ZTJfRGVzY3JpcHRpb24gPSBkZXZpY2VFdmVudERhdGEuZXZlbnRUeXBlLnZhbHVlMl9EaXM7XG4gICAgICBkZXZpY2VFdmVudER0by5ldmVudFR5cGUudmFsdWUzX0Rlc2NyaXB0aW9uID0gZGV2aWNlRXZlbnREYXRhLmV2ZW50VHlwZS52YWx1ZTNfRGlzO1xuICAgICAgZGV2aWNlRXZlbnREdG8uZXZlbnRUeXBlLnZhbHVlNF9EZXNjcmlwdGlvbiA9IGRldmljZUV2ZW50RGF0YS5ldmVudFR5cGUudmFsdWU0X0RpcztcbiAgICB9XG5cbiAgICByZXR1cm4gZGV2aWNlRXZlbnREdG87XG4gIH1cblxuICBwcml2YXRlIGdldERldmljZUV2ZW50UGFya2VyVGlja2V0VHlwZShkZXZpY2VFdmVudERhdGE6IGFueSk6IFBhcmtlclRpY2tldFR5cGUge1xuICAgIGxldCBwYXJrZXJUaWNrZXRUeXBlOiBQYXJrZXJUaWNrZXRUeXBlO1xuICAgIHN3aXRjaCAoZGV2aWNlRXZlbnREYXRhLmV2ZW50SUQpIHtcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5DYW5jZWxsZWRUaWNrZXRQYXltZW50UHJvY2VzczpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5OZXdFbnRyeVRpY2tldDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5UaWNrZXRQYXltZW50Q2FsY3VsYXRpb246XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuVGlja2V0V2l0aE5vUGF5bWVudDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5DaGFyZ2VTZW50RnJvbVNlcnZlcjpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5DYXNoYmFja1dhc1ByaW50ZWQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuTFBSTWlzbWF0Y2g6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuQWNjZXB0RW50cnlUaWNrZXQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuRGVueUVudHJ5VGlja2V0OlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkRlbnlFbnRyeVRpY2tldEVycm9yOlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNhckxlZnRMb29wVGlja2V0UmVqZWN0ZWQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuVGlja2V0RGV0YWlsc0NoYW5nZTpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuVHJhbnNpZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5DcmVkaXRUcmFuc2FjdGlvbkFjY2VwdGVkOlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNyZWRpdFRyYW5zYWN0aW9uUmVqZWN0ZWQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuQ3JlZGl0UHJvY2Vzc1RpbWVvdXQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuU3RpY2tlcnM6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLlBheW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuVW5rbm93bjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmtlclRpY2tldFR5cGU7XG4gIH1cblxuICBwcml2YXRlIEdldFRpY2tldE51bSA9IChwYXJrZXJUaWNrZXRUeXBlOiBQYXJrZXJUaWNrZXRUeXBlLCB2YWx1ZTogbnVtYmVyKTogbnVtYmVyID0+IHBhcmtlclRpY2tldFR5cGUgIT0gUGFya2VyVGlja2V0VHlwZS5Vbmtub3duID8gdmFsdWUgOiBudWxsO1xuXG4gIHByaXZhdGUgcG9wdWxhdGVFdmVudEFjdGl2aXR5KGV2ZW50QWN0aXZpdHlEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBldmVudEFjdGl2dHlEdG8gPSBFdmVudEFjdGl2aXR5RHRvLmZyb21KUyhldmVudEFjdGl2aXR5RGF0YSk7XG4gICAgLy8gYmFja3dhcmRzIC0gZnJvbSA5LjMuMiB0aGUgbWFwcGluZyBmcm9tIEV2ZW50QWN0aXZpdHlDb3JlIHRvIEV2ZW50QWN0aXZpdHlEdG8gd2lsbCBiZSBpbiB0aGUgY2xpZW50XG4gICAgaWYgKGV2ZW50QWN0aXZpdHlEYXRhLnBhcmtlclRpY2tldFR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXZlbnRBY3RpdnR5RHRvLmRlc2NyaXB0aW9uID0gZXZlbnRBY3Rpdml0eURhdGEuZGlzO1xuICAgICAgZXZlbnRBY3RpdnR5RHRvLmRhdGUgPSBldmVudEFjdGl2aXR5RGF0YS5uRGF0ZTtcbiAgICAgIGV2ZW50QWN0aXZ0eUR0by50aW1lID0gZXZlbnRBY3Rpdml0eURhdGEublRpbWU7XG4gICAgICBldmVudEFjdGl2dHlEdG8uZGF0ZVRpbWUgPSBldmVudEFjdGl2aXR5RGF0YS5uRGF0ZVRpbWU7XG4gICAgICBldmVudEFjdGl2dHlEdG8ucGFya2VyVGlja2V0VHlwZSA9IHRoaXMuZ2V0RXZlbnRBY3Rpdml0eVBhcmtlclRpY2tldFR5cGUoZXZlbnRBY3Rpdml0eURhdGEpO1xuICAgICAgZXZlbnRBY3RpdnR5RHRvLnRpY2tldElkID0gdGhpcy5HZXRUaWNrZXROdW0oZXZlbnRBY3RpdnR5RHRvLnBhcmtlclRpY2tldFR5cGUsIGV2ZW50QWN0aXZpdHlEYXRhLnJvd0l0ZW1EYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRBY3RpdnR5RHRvO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudEFjdGl2aXR5UGFya2VyVGlja2V0VHlwZShldmVudEFjdGl2aXR5RGF0YTogYW55KTogUGFya2VyVGlja2V0VHlwZSB7XG4gICAgbGV0IHBhcmtlclRpY2tldFR5cGU6IFBhcmtlclRpY2tldFR5cGU7XG4gICAgc3dpdGNoIChldmVudEFjdGl2aXR5RGF0YS5pbWdDZWxsVGFnKSB7XG4gICAgICBjYXNlIFR5cGVDYXN0RXZlbnRBY3Rpdml0eS5DcmVkaXRDYXJkTm90RW5hYmxlZDpcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5LkNyZWRpdENhcmRFcnJvcjpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuQ3JlZGl0Q2FyZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFR5cGVDYXN0RXZlbnRBY3Rpdml0eS5UcmFuc2llbnRPcGVuVGlja2V0OlxuICAgICAgY2FzZSBUeXBlQ2FzdEV2ZW50QWN0aXZpdHkuVHJhbnNpZW50Q2xvc2VUaWNrZXQ6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLlRyYW5zaWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFR5cGVDYXN0RXZlbnRBY3Rpdml0eS5Nb250aGx5OlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5Nb250aGx5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5LlBheW1lbnQ6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLlBheW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlQ2FzdEV2ZW50QWN0aXZpdHkuR3Vlc3Q6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLkd1ZXN0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5LkVWb3VjaGVyOlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5FVm91Y2hlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5Vbmtub3duO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcGFya2VyVGlja2V0VHlwZTtcbiAgfVxufVxuIl19
|
|
@@ -138,6 +138,11 @@ export class CompanyService {
|
|
|
138
138
|
includeSubCompanies: includeSubCompanies,
|
|
139
139
|
});
|
|
140
140
|
const accountsFetchMethod = this.getAccountsFetchMethod(permissionType);
|
|
141
|
+
if (!accountsFetchMethod) {
|
|
142
|
+
return of(null).pipe(tap(_ => {
|
|
143
|
+
this.loadingCompanySubject$.next(false);
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
141
146
|
const getCompanies$ = accountsFetchMethod(guid, parkId, searchParamsDto.maxResults, searchParamsDto.searchTerm, searchParamsDto.orderBy.column, searchParamsDto.orderBy.orderDirection, companiesFilterDto);
|
|
142
147
|
return getCompanies$.pipe(tap(_ => {
|
|
143
148
|
this.loadingCompanySubject$.next(false);
|
|
@@ -157,6 +162,11 @@ export class CompanyService {
|
|
|
157
162
|
subCompanyIds: subCompanyIds,
|
|
158
163
|
});
|
|
159
164
|
const subAccountsFetchMethod = this.getSubAccountsFetchMethod(permissionType);
|
|
165
|
+
if (!subAccountsFetchMethod) {
|
|
166
|
+
return of(null).pipe(tap(_ => {
|
|
167
|
+
this.loadingSubCompanySubject$.next(false);
|
|
168
|
+
}));
|
|
169
|
+
}
|
|
160
170
|
getSubCompanies$ = subAccountsFetchMethod(guid, parkId, null, null, null, OrderDirection.None, subCompaniesWithPermissions);
|
|
161
171
|
return getSubCompanies$.pipe(tap(_ => {
|
|
162
172
|
this.loadingSubCompanySubject$.next(false);
|
|
@@ -171,6 +181,11 @@ export class CompanyService {
|
|
|
171
181
|
this.loadingSubCompanySubject$.next(true);
|
|
172
182
|
let getSubCompanies$;
|
|
173
183
|
const subAccountsFetchMethod = this.getSubAccountsFetchMethod(permissionType);
|
|
184
|
+
if (!subAccountsFetchMethod) {
|
|
185
|
+
return of(null).pipe(tap(_ => {
|
|
186
|
+
this.loadingSubCompanySubject$.next(false);
|
|
187
|
+
}));
|
|
188
|
+
}
|
|
174
189
|
const subCompaniesFilterDto = new SubCompaniesFilterDto({
|
|
175
190
|
parkId,
|
|
176
191
|
companyIds,
|
|
@@ -232,11 +247,16 @@ export class CompanyService {
|
|
|
232
247
|
this.messageBarService.clearMessagebar('credentialWarningMessage');
|
|
233
248
|
}
|
|
234
249
|
}
|
|
250
|
+
// Both mappings below are partial lookups over PermissionType, so a miss is a
|
|
251
|
+
// reachable state rather than a programming error: the Reports Center binds its
|
|
252
|
+
// company dropdowns to the selected category's permission type, and the "All
|
|
253
|
+
// reports" category legitimately has none. Return undefined on a miss and let
|
|
254
|
+
// the callers degrade — see SPRK3-15029.
|
|
235
255
|
getAccountsFetchMethod(permissionType) {
|
|
236
|
-
return
|
|
256
|
+
return this.accountsFetchMethodsMapping[permissionType]?.bind(this.accountRpcServiceProxy);
|
|
237
257
|
}
|
|
238
258
|
getSubAccountsFetchMethod(permissionType) {
|
|
239
|
-
return
|
|
259
|
+
return this.subAccountsFetchMethodsMapping[permissionType]?.bind(this.accountRpcServiceProxy);
|
|
240
260
|
}
|
|
241
261
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyService, deps: [{ token: i1.Store }, { token: i2.MessageBarService }, { token: i3.TranslateService }, { token: i4.SmartparkService }, { token: i5.AccountRpcServiceProxy }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
242
262
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyService }); }
|
|
@@ -244,4 +264,4 @@ export class CompanyService {
|
|
|
244
264
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyService, decorators: [{
|
|
245
265
|
type: Injectable
|
|
246
266
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.MessageBarService }, { type: i3.TranslateService }, { type: i4.SmartparkService }, { type: i5.AccountRpcServiceProxy }] });
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9jb21wYW55LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUV6RixPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBRUwsa0JBQWtCLEVBQWMsY0FBYyxFQUFFLGNBQWMsRUFDd0IscUJBQXFCLEVBQzVHLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7QUFLOUMsTUFBTSxPQUFPLGNBQWM7SUFPekIsWUFBb0IsS0FBWSxFQUN0QixpQkFBb0MsRUFDcEMsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxzQkFBOEM7UUFKcEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBVHhELDJCQUFzQixHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ2xFLDhCQUF5QixHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ3JFLG1CQUFjLEdBQXdCLElB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LENBQUM7SUFDSCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsY0FBOEI7UUFDM0QsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRU8seUJBQXlCLENBQUMsY0FBOEI7UUFDOUQsT0FBTyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNqRyxDQUFDOytHQXpLVSxjQUFjO21IQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJQb3NpdGlvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXItcG9zaXRpb24uZW51bSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBNQVhfQ0FSX1BMQVRFUywgTUFYX0NBUkRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSAnLi4vZW51bXMvbG9jYWxpemF0aW9uLmVudW0nO1xuaW1wb3J0IHtcbiAgQ29tcGFueUR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSBhcyBBY2NvdW50RHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhLCBBY2NvdW50UnBjU2VydmljZVByb3h5LFxuICBDb21wYW5pZXNGaWx0ZXJEdG8sIENvbXBhbnlEdG8sIE9yZGVyRGlyZWN0aW9uLCBQZXJtaXNzaW9uVHlwZSwgU2VhcmNoUGFyYW1zRHRvLFxuICBTdWJDb21wYW55RHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhIGFzIFN1YkFjY291bnREdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGEsIFN1YkNvbXBhbmllc0ZpbHRlckR0bywgU3ViQ29tcGFueUR0b1xufSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L3JwYy1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgTnVtYmVyTWFwIH0gZnJvbSAnLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IFNtYXJ0cGFya1NlcnZpY2UgfSBmcm9tICcuL3NtYXJ0cGFyay5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBhbnlTZXJ2aWNlIHtcblxuICBsb2FkaW5nQ29tcGFueVN1YmplY3QkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgbG9hZGluZ1N1YkNvbXBhbnlTdWJqZWN0JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIGNvbXBhbnlDaGFuZ2UkOiBTdWJqZWN0PENvbXBhbnlEdG8+ID0gbmV3IFN1YmplY3Q8Q29tcGFueUR0bz4oKTtcbiAgc3ViQ29tcGFueUNoYW5nZSQ6IFN1YmplY3Q8U3ViQ29tcGFueUR0bz4gPSBuZXcgU3ViamVjdDxTdWJDb21wYW55RHRvPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgbWVzc2FnZUJhclNlcnZpY2U6IE1lc3NhZ2VCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHNtYXJ0cGFya1NlcnZpY2U6IFNtYXJ0cGFya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2NvdW50UnBjU2VydmljZVByb3h5OiBBY2NvdW50UnBjU2VydmljZVByb3h5KSB7XG4gIH1cblxuICBpc0xvYWRpbmdDb21wYW55JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmxvYWRpbmdDb21wYW55U3ViamVjdCQsXG4gICAgICB0aGlzLnNtYXJ0cGFya1NlcnZpY2UubG9hZGluZyRcbiAgICBdKS5waXBlKG1hcCgoW2NvbXBhbnlMb2FkaW5nLCBzbWFydHBhcmtMb2FkaW5nXSkgPT4gY29tcGFueUxvYWRpbmcgfHwgc21hcnRwYXJrTG9hZGluZykpO1xuICB9XG5cbiAgaXNMb2FkaW5nU3ViQ29tcGFueSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5sb2FkaW5nU3ViQ29tcGFueVN1YmplY3QkLFxuICAgICAgdGhpcy5zbWFydHBhcmtTZXJ2aWNlLmxvYWRpbmckXG4gICAgXSkucGlwZShtYXAoKFtzdWJDb21wYW55TG9hZGluZywgc21hcnRwYXJrTG9hZGluZ10pID0+IHN1YkNvbXBhbnlMb2FkaW5nIHx8IHNtYXJ0cGFya0xvYWRpbmcpKTtcbiAgfVxuXG4gIGdldENvbXBhbmllc09wdGlvbnMocGFya0lkOiBudW1iZXIsIGd1aWQ6IHN0cmluZywgc2VhcmNoUGFyYW1zRHRvOiBTZWFyY2hQYXJhbXNEdG8sIGluY2x1ZGVBY2Nlc3NQcm9maWxlOiBib29sZWFuLCBpbmNsdWRlU3ViQ29tcGFuaWVzOiBib29sZWFuLFxuICAgIHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZSwgY29tcGFueUlkcz86IG51bWJlcltdKTogT2JzZXJ2YWJsZTxBY2NvdW50RHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgaWYgKCFndWlkKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCkucGlwZSh0YXAoXyA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ0NvbXBhbnlTdWJqZWN0JC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRpbmdDb21wYW55U3ViamVjdCQubmV4dCh0cnVlKTtcblxuICAgIGNvbnN0IGNvbXBhbmllc0ZpbHRlckR0bzogQ29tcGFuaWVzRmlsdGVyRHRvID0gbmV3IENvbXBhbmllc0ZpbHRlckR0byh7XG4gICAgICBwYXJrSWQ6IHBhcmtJZCxcbiAgICAgIGNvbXBhbnlJZHM6IGNvbXBhbnlJZHMsXG4gICAgICBzdWJDb21wYW55SWRzOiBudWxsLFxuICAgICAgaW5jbHVkZUFjY2Vzc1Byb2ZpbGU6IGluY2x1ZGVBY2Nlc3NQcm9maWxlLFxuICAgICAgaW5jbHVkZVN1YkNvbXBhbmllczogaW5jbHVkZVN1YkNvbXBhbmllcyxcbiAgICB9KTtcbiAgICBjb25zdCBhY2NvdW50c0ZldGNoTWV0aG9kOiBBY2NvdW50c0ZldGNoTWV0aG9kU2lnbmF0dXJlID0gdGhpcy5nZXRBY2NvdW50c0ZldGNoTWV0aG9kKHBlcm1pc3Npb25UeXBlKTtcbiAgICBjb25zdCBnZXRDb21wYW5pZXMkID0gYWNjb3VudHNGZXRjaE1ldGhvZChndWlkLCBwYXJrSWQsIHNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLCBzZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSxcbiAgICAgIHNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24sIGNvbXBhbmllc0ZpbHRlckR0byk7XG5cbiAgICByZXR1cm4gZ2V0Q29tcGFuaWVzJC5waXBlKHRhcChfID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ0NvbXBhbnlTdWJqZWN0JC5uZXh0KGZhbHNlKTtcbiAgICB9KSk7XG4gIH1cblxuICBnZXRTdWJDb21wYW5pZXNCeUlkcyhwYXJrSWQ6IG51bWJlciwgZ3VpZDogc3RyaW5nLCBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUsIGNvbXBhbnlJZHM6IG51bWJlcltdLCBzdWJDb21wYW55SWRzOiBudW1iZXJbXSk6IE9ic2VydmFibGU8U3ViQWNjb3VudER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGlmICghZ3VpZCB8fCAhY29tcGFueUlkcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCkucGlwZSh0YXAoXyA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YkNvbXBhbnlTdWJqZWN0JC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRpbmdTdWJDb21wYW55U3ViamVjdCQubmV4dCh0cnVlKTtcblxuICAgIGxldCBnZXRTdWJDb21wYW5pZXMkOiBPYnNlcnZhYmxlPFN1YkFjY291bnREdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+O1xuICAgIGNvbnN0IHN1YkNvbXBhbmllc1dpdGhQZXJtaXNzaW9uczogU3ViQ29tcGFuaWVzRmlsdGVyRHRvID0gbmV3IFN1YkNvbXBhbmllc0ZpbHRlckR0byh7XG4gICAgICBwYXJrSWQsXG4gICAgICBjb21wYW55SWRzOiBjb21wYW55SWRzLFxuICAgICAgc3ViQ29tcGFueUlkczogc3ViQ29tcGFueUlkcyxcbiAgICB9KTtcbiAgICBjb25zdCBzdWJBY2NvdW50c0ZldGNoTWV0aG9kOiBTdWJBY2NvdW50c0ZldGNoTWV0aG9kU2lnbmF0dXJlID0gdGhpcy5nZXRTdWJBY2NvdW50c0ZldGNoTWV0aG9kKHBlcm1pc3Npb25UeXBlKTtcbiAgICBnZXRTdWJDb21wYW5pZXMkID0gc3ViQWNjb3VudHNGZXRjaE1ldGhvZChndWlkLCBwYXJrSWQsIG51bGwsIG51bGwsIG51bGwsIE9yZGVyRGlyZWN0aW9uLk5vbmUsIHN1YkNvbXBhbmllc1dpdGhQZXJtaXNzaW9ucyk7XG5cbiAgICByZXR1cm4gZ2V0U3ViQ29tcGFuaWVzJC5waXBlKHRhcChfID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ1N1YkNvbXBhbnlTdWJqZWN0JC5uZXh0KGZhbHNlKTtcbiAgICB9KSk7XG4gIH1cblxuICBnZXRTdWJDb21wYW5pZXNPcHRpb25zKHBhcmtJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIHNlYXJjaFBhcmFtc0R0bzogU2VhcmNoUGFyYW1zRHRvLCBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUsXG4gICAgY29tcGFueUlkczogbnVtYmVyW10pOiBPYnNlcnZhYmxlPFN1YkFjY291bnREdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+IHtcbiAgICBpZiAoIWd1aWQgfHwgIWNvbXBhbnlJZHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpLnBpcGUodGFwKF8gPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJDb21wYW55U3ViamVjdCQubmV4dChmYWxzZSk7XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkaW5nU3ViQ29tcGFueVN1YmplY3QkLm5leHQodHJ1ZSk7XG5cbiAgICBsZXQgZ2V0U3ViQ29tcGFuaWVzJDogT2JzZXJ2YWJsZTxTdWJBY2NvdW50RHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPjtcblxuICAgIGNvbnN0IHN1YkFjY291bnRzRmV0Y2hNZXRob2Q6IFN1YkFjY291bnRzRmV0Y2hNZXRob2RTaWduYXR1cmUgPSB0aGlzLmdldFN1YkFjY291bnRzRmV0Y2hNZXRob2QocGVybWlzc2lvblR5cGUpO1xuICAgIGNvbnN0IHN1YkNvbXBhbmllc0ZpbHRlckR0bzogU3ViQ29tcGFuaWVzRmlsdGVyRHRvID0gbmV3IFN1YkNvbXBhbmllc0ZpbHRlckR0byh7XG4gICAgICBwYXJrSWQsXG4gICAgICBjb21wYW55SWRzLFxuICAgICAgc3ViQ29tcGFueUlkczogbnVsbCxcbiAgICB9KTtcbiAgICBnZXRTdWJDb21wYW5pZXMkID0gc3ViQWNjb3VudHNGZXRjaE1ldGhvZChndWlkLCBwYXJrSWQsIHNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLCBzZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSxcbiAgICAgIHNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24sIHN1YkNvbXBhbmllc0ZpbHRlckR0byk7XG5cbiAgICByZXR1cm4gZ2V0U3ViQ29tcGFuaWVzJC5waXBlKHRhcChfID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ1N1YkNvbXBhbnlTdWJqZWN0JC5uZXh0KGZhbHNlKTtcbiAgICB9KSk7XG4gIH1cblxuICBnZXRDcmVkZW50aWFsTGltaXRzKGNvbXBhbnk6IENvbXBhbnlEdG8sIHN1YkNvbXBhbnk/OiBTdWJDb21wYW55RHRvKSB7XG4gICAgLy8gV2UgaGF2ZSAzIG9wdGlvbnNcbiAgICAvLyAxKSBTdWJDb21wYW55ICsgQ29tcGFueSAgICAgICA9PiBXZSB0YWtlIHRoZSBTdWJDb21wYW55IGxpbWl0c1xuICAgIC8vIDIpIE5vIFN1YkNvbXBhbnkgKyBDb21wYW55ICAgID0+IFdlIHRha2Ugd2UgQ29tcGFueSBsaW1pdHNcbiAgICAvLyAzKSBObyBDb21wYW55ICsgTm8gU3ViQ29tcGFueSA9PiBXZSB0YWtlIHRoZSBkZWZhdWx0IGNvbXBhbnkgbGltaXRzXG4gICAgY29uc3QgYWxsb3dQaG9uZSA9IHN1YkNvbXBhbnk/LmFsbG93UGhvbmUgPz8gY29tcGFueT8uYWxsb3dQaG9uZSA/PyB0cnVlO1xuICAgIGNvbnN0IGFsbG93UVIgPSBzdWJDb21wYW55Py5hbGxvd1FSID8/IGNvbXBhbnk/LmFsbG93UVIgPz8gdHJ1ZTtcbiAgICBjb25zdCBtYXhDYXJkcyA9IHN1YkNvbXBhbnk/Lm1heENhcmRzID8/IGNvbXBhbnk/Lm1heENhcmRzID8/IE1BWF9DQVJEUztcbiAgICBjb25zdCBtYXhDYXJQbGF0ZXMgPSBzdWJDb21wYW55Py5tYXhDYXJQbGF0ZXMgPz8gY29tcGFueT8ubWF4Q2FyUGxhdGVzID8/IE1BWF9DQVJfUExBVEVTO1xuXG4gICAgcmV0dXJuIHsgYWxsb3dQaG9uZSwgYWxsb3dRUiwgbWF4Q2FyZHMsIG1heENhclBsYXRlcyB9O1xuICB9XG5cbiAgaGFuZGxlQ3JlZGVudGlhbHNXYXJuaW5nTWVzc2FnZXNCYXIoY3JlZGVudGlhbExpbWl0czogeyBhbGxvd1Bob25lOiBib29sZWFuOyBhbGxvd1FSOiBib29sZWFuOyBtYXhDYXJkczogbnVtYmVyOyBtYXhDYXJQbGF0ZXM6IG51bWJlcjsgfSwgZm9ybTogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGxldCB3YXJuaW5nTWVzc2FnZUFsZXJ0czogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIENhcmRzXG4gICAgY29uc3QgYmFkZ2VzID0gKGZvcm0uY29udHJvbHMuYmFkZ2U/LnZhbHVlIHx8IFtdKS5maWx0ZXIoYmFkZ2UgPT4ge1xuICAgICAgcmV0dXJuIGJhZGdlPy52YWx1ZS5sZW5ndGggPiAwO1xuICAgIH0pO1xuXG4gICAgaWYgKGJhZGdlcy5sZW5ndGggPiBjcmVkZW50aWFsTGltaXRzLm1heENhcmRzKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmFjY291bnRfbGltaXRfY3JlZGVudGlhbF9jYXJkLCB7XG4gICAgICAgIG1heFF1YW50aXR5OiBjcmVkZW50aWFsTGltaXRzLm1heENhcmRzXG4gICAgICB9KTtcbiAgICAgIHdhcm5pbmdNZXNzYWdlQWxlcnRzLnB1c2gobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgLy8gQ2FyIFBsYXRlc1xuICAgIGNvbnN0IGNhclBsYXRlcyA9IChmb3JtLmNvbnRyb2xzLmNhclBsYXRlPy52YWx1ZSB8fCBbXSkuZmlsdGVyKGNhclBsYXRlID0+IHtcbiAgICAgIHJldHVybiBjYXJQbGF0ZT8udmFsdWUubGVuZ3RoID4gMDtcbiAgICB9KTtcblxuICAgIGlmIChjYXJQbGF0ZXMubGVuZ3RoID4gY3JlZGVudGlhbExpbWl0cy5tYXhDYXJQbGF0ZXMpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjb3VudF9saW1pdF9jcmVkZW50aWFsX2Nhcl9wbGF0ZSwge1xuICAgICAgICBtYXhRdWFudGl0eTogY3JlZGVudGlhbExpbWl0cy5tYXhDYXJQbGF0ZXNcbiAgICAgIH0pO1xuICAgICAgd2FybmluZ01lc3NhZ2VBbGVydHMucHVzaChtZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvLyBBbGxvd1Bob25lIC0gTW9iaWxlXG4gICAgaWYgKGZvcm0uY29udHJvbHMubW9iaWxlLnZhbHVlPy5sZW5ndGggJiYgIWNyZWRlbnRpYWxMaW1pdHMuYWxsb3dQaG9uZSkge1xuICAgICAgY29uc3QgbWVzc2FnZUFsbG93UGhvbmUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjb3VudF9saW1pdF9jcmVkZW50aWFsX3Bob25lKTtcbiAgICAgIHdhcm5pbmdNZXNzYWdlQWxlcnRzLnB1c2gobWVzc2FnZUFsbG93UGhvbmUpO1xuICAgIH1cblxuICAgIC8vIEFsbG93UVIgLSBFbWFpbFxuICAgIGlmIChmb3JtLmNvbnRyb2xzLmVtYWlsLnZhbHVlPy5sZW5ndGggJiYgIWNyZWRlbnRpYWxMaW1pdHMuYWxsb3dRUikge1xuICAgICAgY29uc3QgbWVzc2FnZUFsbG93UVIgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjb3VudF9saW1pdF9jcmVkZW50aWFsX3FyKTtcbiAgICAgIHdhcm5pbmdNZXNzYWdlQWxlcnRzLnB1c2gobWVzc2FnZUFsbG93UVIpO1xuICAgIH1cblxuICAgIGlmICh3YXJuaW5nTWVzc2FnZUFsZXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB3YXJuaW5nTWVzc2FnZSA9IGAtICR7d2FybmluZ01lc3NhZ2VBbGVydHMuam9pbignPGJyPi0gJyl9YDtcbiAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uud2Fybih3YXJuaW5nTWVzc2FnZSwgeyBpZDogJ2NyZWRlbnRpYWxXYXJuaW5nTWVzc2FnZScsIHBvc2l0aW9uOiBNZXNzYWdlQmFyUG9zaXRpb24uU3RhdGljIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmNsZWFyTWVzc2FnZWJhcignY3JlZGVudGlhbFdhcm5pbmdNZXNzYWdlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY2NvdW50c0ZldGNoTWV0aG9kKHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZSk6IEFjY291bnRzRmV0Y2hNZXRob2RTaWduYXR1cmUge1xuICAgIHJldHVybiAodGhpcy5hY2NvdW50c0ZldGNoTWV0aG9kc01hcHBpbmdbcGVybWlzc2lvblR5cGVdKS5iaW5kKHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN1YkFjY291bnRzRmV0Y2hNZXRob2QocGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlKTogU3ViQWNjb3VudHNGZXRjaE1ldGhvZFNpZ25hdHVyZSB7XG4gICAgcmV0dXJuICh0aGlzLnN1YkFjY291bnRzRmV0Y2hNZXRob2RzTWFwcGluZ1twZXJtaXNzaW9uVHlwZV0pLmJpbmQodGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5KTtcbiAgfVxuXG4gIGFjY291bnRzRmV0Y2hNZXRob2RzTWFwcGluZzogQWNjb3VudHNGZXRjaE1ldGhvZHNNYXAgPSB7XG4gICAgW1Blcm1pc3Npb25UeXBlLkNjTWFpbl06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c0NjVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuVXBkYXRlRG9jdW1lbnRdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNDY1VwZGF0ZURvY3VtZW50LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5HdWVzdFZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNHdWVzdFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLkd1ZXN0Q3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzR3Vlc3RDcmVhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLkd1ZXN0VXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzR3Vlc3RVcGRhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLkd1ZXN0R3JvdXBDcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNHdWVzdEdyb3VwQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5HdWVzdEVWb3VjaGVyVmlld106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c0VWb3VjaGVyVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuR3Vlc3RIb3RlbEd1ZXN0Vmlld106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c0hvdGVsR3Vlc3RWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5HdWVzdEhvdGVsR3Vlc3RDcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNIb3RlbEd1ZXN0Q3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5HdWVzdEhvdGVsR3Vlc3RVcGRhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNIb3RlbEd1ZXN0VXBkYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5Ib3RlbEd1ZXN0SU9DcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNIb3RlbEd1ZXN0SU9DcmVhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLkhvdGVsR3Vlc3RJT1ZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNIb3RlbEd1ZXN0SU9IaXN0b3J5VmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuTW9udGhsaWVzVmlld106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c01vbnRobHlWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5Nb250aGxpZXNDcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNNb250aGx5Q3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5Nb250aGxpZXNVcGRhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNNb250aGx5VXBkYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5Nb250aGxpZXNVcGRhdGVBZHZhbmNlZF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c01vbnRobHlVcGRhdGVBZHZhbmNlZCxcbiAgICBbUGVybWlzc2lvblR5cGUuTW9udGhsaWVzRGVsZXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzTW9udGhseURlbGV0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuTW9udGhsaWVzU2VuZEFuZFByaW50XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzTW9udGhseVNlbmRBbmRQcmludCxcbiAgICBbUGVybWlzc2lvblR5cGUuTW9udGhseVNlcmllc0NyZWF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c01vbnRobHlTZXJpZXNDcmVhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25FVmFsaWRhdGlvblZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNFVmFsaWRhdGlvblZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25FVmFsaWRhdGlvbkNyZWF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c0VWYWxpZGF0aW9uQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uRVZhbGlkYXRpb25VcGRhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNFVmFsaWRhdGlvblVwZGF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvblNlbGZWYWxpZGF0aW9uVmlld106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1NlbGZWYWxpZGF0aW9uVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvblNlbGZWYWxpZGF0aW9uQ3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzU2VsZlZhbGlkYXRpb25DcmVhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25TZWxmVmFsaWRhdGlvblVwZGF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1NlbGZWYWxpZGF0aW9uVXBkYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uQ291cG9uVmlld106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c0NvdXBvblZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25Db3Vwb25DcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNDb3Vwb25DcmVhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25Db3Vwb25VcGRhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNDb3Vwb25VcGRhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25TdGlja2VyVmlld106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1N0aWNrZXJWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlckNyZWF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1N0aWNrZXJDcmVhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25TdGlja2VyVXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzU3RpY2tlclVwZGF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuTG90Q29uZmlndXJhdGlvblJhdGVzXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzTG90Q29uZmlndXJhdGlvblJhdGVzLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5NYW5hZ2VtZW50QWRtaW5dOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNNYW5hZ2VtZW50VmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5Q29tcGFuaWVzXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5Q29tcGFuaWVzVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5R3Vlc3RdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlHdWVzdFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeUhvdGVsXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5SG90ZWxWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlMUFJUcmFuc2FjdGlvbl06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1JlcG9ydHNDYXRlZ29yeUxQUlRyYW5zYWN0aW9uVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5TW9udGhsaWVzXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5TW9udGhsaWVzVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5T2NjdXBhbmN5QW5kVHJhZmZpY106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1JlcG9ydHNDYXRlZ29yeU9jY3VwYW5jeUFuZFRyYWZmaWNWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlSZXZlbnVlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5UmV2ZW51ZVZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeVNwZWNpYWxdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlTcGVjaWFsVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5U3RhZmZSZWxhdGVkXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5U3RhZmZSZWxhdGVkVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5U3lzdGVtRXZlbnRdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlTeXN0ZW1FdmVudFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeVRpY2tldHNdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlUaWNrZXRzVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5VmFsZXRdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlWYWxldFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeVZhbGlkYXRpb25dOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlWYWxpZGF0aW9uVmlldyxcbiAgfTtcbiAgc3ViQWNjb3VudHNGZXRjaE1ldGhvZHNNYXBwaW5nOiBTdWJBY2NvdW50c0ZldGNoTWV0aG9kc01hcCA9IHtcbiAgICBbUGVybWlzc2lvblR5cGUuQ2NNYWluXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzQ2NWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5VcGRhdGVEb2N1bWVudF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c0NjVXBkYXRlRG9jdW1lbnQsXG4gICAgW1Blcm1pc3Npb25UeXBlLkd1ZXN0Vmlld106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c0d1ZXN0VmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuR3Vlc3RDcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNHdWVzdENyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuR3Vlc3RVcGRhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNHdWVzdFVwZGF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuR3Vlc3RHcm91cENyZWF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c0d1ZXN0R3JvdXBDcmVhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobGllc1ZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNNb250aGx5VmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuTW9udGhsaWVzQ3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzTW9udGhseUNyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuTW9udGhsaWVzVXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzTW9udGhseVVwZGF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuTW9udGhsaWVzVXBkYXRlQWR2YW5jZWRdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNNb250aGx5VXBkYXRlQWR2YW5jZWQsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobGllc0RlbGV0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c01vbnRobHlEZWxldGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobGllc1NlbmRBbmRQcmludF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c01vbnRobHlTZW5kQW5kUHJpbnQsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobHlTZXJpZXNDcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNNb250aGx5U2VyaWVzQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uRVZhbGlkYXRpb25WaWV3XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzRVZhbGlkYXRpb25WaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uRVZhbGlkYXRpb25DcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNFVmFsaWRhdGlvbkNyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkVWYWxpZGF0aW9uVXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzRVZhbGlkYXRpb25VcGRhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25TZWxmVmFsaWRhdGlvblZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNTZWxmVmFsaWRhdGlvblZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25TZWxmVmFsaWRhdGlvbkNyZWF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1NlbGZWYWxpZGF0aW9uQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU2VsZlZhbGlkYXRpb25VcGRhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNTZWxmVmFsaWRhdGlvblVwZGF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkNvdXBvblZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNDb3Vwb25WaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uQ291cG9uQ3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzQ291cG9uQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uQ291cG9uVXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzQ291cG9uVXBkYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlclZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNTdGlja2VyVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvblN0aWNrZXJDcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNTdGlja2VyQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlclVwZGF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1N0aWNrZXJVcGRhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeUNvbXBhbmllc106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeUNvbXBhbmllc1ZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeUd1ZXN0XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzUmVwb3J0c0NhdGVnb3J5R3Vlc3RWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlIb3RlbF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeUhvdGVsVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5TFBSVHJhbnNhY3Rpb25dOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlMUFJUcmFuc2FjdGlvblZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeU1vbnRobGllc106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeU1vbnRobGllc1ZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeU9jY3VwYW5jeUFuZFRyYWZmaWNdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlPY2N1cGFuY3lBbmRUcmFmZmljVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5UmV2ZW51ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeVJldmVudWVWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlTcGVjaWFsXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzUmVwb3J0c0NhdGVnb3J5U3BlY2lhbFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeVN0YWZmUmVsYXRlZF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeVN0YWZmUmVsYXRlZFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeVN5c3RlbUV2ZW50XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzUmVwb3J0c0NhdGVnb3J5U3lzdGVtRXZlbnRWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlUaWNrZXRzXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzUmVwb3J0c0NhdGVnb3J5VGlja2V0c1ZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeVZhbGV0XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzUmVwb3J0c0NhdGVnb3J5VmFsZXRWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlWYWxpZGF0aW9uXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzUmVwb3J0c0NhdGVnb3J5VmFsaWRhdGlvblZpZXcsXG4gIH07XG59XG5cbnR5cGUgQWNjb3VudHNGZXRjaE1ldGhvZFNpZ25hdHVyZSA9IChndWlkOiBzdHJpbmcsIGZhY2lsaXR5SWQ6IG51bWJlciwgbWF4UmVzdWx0czogbnVtYmVyIHwgdW5kZWZpbmVkLCBzZWFyY2hUZXJtOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9yZGVyQnlfQ29sdW1uOiBzdHJpbmcgfCB1bmRlZmluZWQsIG9yZGVyQnlfT3JkZXJEaXJlY3Rpb246IE9yZGVyRGlyZWN0aW9uIHwgdW5kZWZpbmVkLCBib2R5OiBDb21wYW5pZXNGaWx0ZXJEdG8gfCB1bmRlZmluZWQpID0+XG4gIE9ic2VydmFibGU8QWNjb3VudER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT47XG50eXBlIFN1YkFjY291bnRzRmV0Y2hNZXRob2RTaWduYXR1cmUgPSAoZ3VpZDogc3RyaW5nLCBmYWNpbGl0eUlkOiBudW1iZXIsIG1heFJlc3VsdHM6IG51bWJlciB8IHVuZGVmaW5lZCwgc2VhcmNoVGVybTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcmRlckJ5X0NvbHVtbjogc3RyaW5nIHwgdW5kZWZpbmVkLCBvcmRlckJ5X09yZGVyRGlyZWN0aW9uOiBPcmRlckRpcmVjdGlvbiB8IHVuZGVmaW5lZCwgYm9keTogU3ViQ29tcGFuaWVzRmlsdGVyRHRvIHwgdW5kZWZpbmVkKSA9PlxuICBPYnNlcnZhYmxlPFN1YkFjY291bnREdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+O1xudHlwZSBBY2NvdW50c0ZldGNoTWV0aG9kc01hcCA9IE51bWJlck1hcDxBY2NvdW50c0ZldGNoTWV0aG9kU2lnbmF0dXJlPjtcbnR5cGUgU3ViQWNjb3VudHNGZXRjaE1ldGhvZHNNYXAgPSBOdW1iZXJNYXA8U3ViQWNjb3VudHNGZXRjaE1ldGhvZFNpZ25hdHVyZT47XG4iXX0=
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9jb21wYW55LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUV6RixPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBRUwsa0JBQWtCLEVBQWMsY0FBYyxFQUFFLGNBQWMsRUFDd0IscUJBQXFCLEVBQzVHLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7QUFLOUMsTUFBTSxPQUFPLGNBQWM7SUFPekIsWUFBb0IsS0FBWSxFQUN0QixpQkFBb0MsRUFDcEMsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxzQkFBOEM7UUFKcEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBVHhELDJCQUFzQixHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ2xFLDhCQUF5QixHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ3JFLG1CQUFjLEdBQXdCLElB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QWhNVSxjQUFjO21IQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJQb3NpdGlvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXItcG9zaXRpb24uZW51bSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBNQVhfQ0FSX1BMQVRFUywgTUFYX0NBUkRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSAnLi4vZW51bXMvbG9jYWxpemF0aW9uLmVudW0nO1xuaW1wb3J0IHtcbiAgQ29tcGFueUR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSBhcyBBY2NvdW50RHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhLCBBY2NvdW50UnBjU2VydmljZVByb3h5LFxuICBDb21wYW5pZXNGaWx0ZXJEdG8sIENvbXBhbnlEdG8sIE9yZGVyRGlyZWN0aW9uLCBQZXJtaXNzaW9uVHlwZSwgU2VhcmNoUGFyYW1zRHRvLFxuICBTdWJDb21wYW55RHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhIGFzIFN1YkFjY291bnREdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGEsIFN1YkNvbXBhbmllc0ZpbHRlckR0bywgU3ViQ29tcGFueUR0b1xufSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L3JwYy1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgTnVtYmVyTWFwIH0gZnJvbSAnLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IFNtYXJ0cGFya1NlcnZpY2UgfSBmcm9tICcuL3NtYXJ0cGFyay5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBhbnlTZXJ2aWNlIHtcblxuICBsb2FkaW5nQ29tcGFueVN1YmplY3QkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgbG9hZGluZ1N1YkNvbXBhbnlTdWJqZWN0JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIGNvbXBhbnlDaGFuZ2UkOiBTdWJqZWN0PENvbXBhbnlEdG8+ID0gbmV3IFN1YmplY3Q8Q29tcGFueUR0bz4oKTtcbiAgc3ViQ29tcGFueUNoYW5nZSQ6IFN1YmplY3Q8U3ViQ29tcGFueUR0bz4gPSBuZXcgU3ViamVjdDxTdWJDb21wYW55RHRvPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgbWVzc2FnZUJhclNlcnZpY2U6IE1lc3NhZ2VCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHNtYXJ0cGFya1NlcnZpY2U6IFNtYXJ0cGFya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2NvdW50UnBjU2VydmljZVByb3h5OiBBY2NvdW50UnBjU2VydmljZVByb3h5KSB7XG4gIH1cblxuICBpc0xvYWRpbmdDb21wYW55JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmxvYWRpbmdDb21wYW55U3ViamVjdCQsXG4gICAgICB0aGlzLnNtYXJ0cGFya1NlcnZpY2UubG9hZGluZyRcbiAgICBdKS5waXBlKG1hcCgoW2NvbXBhbnlMb2FkaW5nLCBzbWFydHBhcmtMb2FkaW5nXSkgPT4gY29tcGFueUxvYWRpbmcgfHwgc21hcnRwYXJrTG9hZGluZykpO1xuICB9XG5cbiAgaXNMb2FkaW5nU3ViQ29tcGFueSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5sb2FkaW5nU3ViQ29tcGFueVN1YmplY3QkLFxuICAgICAgdGhpcy5zbWFydHBhcmtTZXJ2aWNlLmxvYWRpbmckXG4gICAgXSkucGlwZShtYXAoKFtzdWJDb21wYW55TG9hZGluZywgc21hcnRwYXJrTG9hZGluZ10pID0+IHN1YkNvbXBhbnlMb2FkaW5nIHx8IHNtYXJ0cGFya0xvYWRpbmcpKTtcbiAgfVxuXG4gIGdldENvbXBhbmllc09wdGlvbnMocGFya0lkOiBudW1iZXIsIGd1aWQ6IHN0cmluZywgc2VhcmNoUGFyYW1zRHRvOiBTZWFyY2hQYXJhbXNEdG8sIGluY2x1ZGVBY2Nlc3NQcm9maWxlOiBib29sZWFuLCBpbmNsdWRlU3ViQ29tcGFuaWVzOiBib29sZWFuLFxuICAgIHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZSwgY29tcGFueUlkcz86IG51bWJlcltdKTogT2JzZXJ2YWJsZTxBY2NvdW50RHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgaWYgKCFndWlkKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCkucGlwZSh0YXAoXyA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ0NvbXBhbnlTdWJqZWN0JC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRpbmdDb21wYW55U3ViamVjdCQubmV4dCh0cnVlKTtcblxuICAgIGNvbnN0IGNvbXBhbmllc0ZpbHRlckR0bzogQ29tcGFuaWVzRmlsdGVyRHRvID0gbmV3IENvbXBhbmllc0ZpbHRlckR0byh7XG4gICAgICBwYXJrSWQ6IHBhcmtJZCxcbiAgICAgIGNvbXBhbnlJZHM6IGNvbXBhbnlJZHMsXG4gICAgICBzdWJDb21wYW55SWRzOiBudWxsLFxuICAgICAgaW5jbHVkZUFjY2Vzc1Byb2ZpbGU6IGluY2x1ZGVBY2Nlc3NQcm9maWxlLFxuICAgICAgaW5jbHVkZVN1YkNvbXBhbmllczogaW5jbHVkZVN1YkNvbXBhbmllcyxcbiAgICB9KTtcbiAgICBjb25zdCBhY2NvdW50c0ZldGNoTWV0aG9kOiBBY2NvdW50c0ZldGNoTWV0aG9kU2lnbmF0dXJlID0gdGhpcy5nZXRBY2NvdW50c0ZldGNoTWV0aG9kKHBlcm1pc3Npb25UeXBlKTtcbiAgICBpZiAoIWFjY291bnRzRmV0Y2hNZXRob2QpIHtcbiAgICAgIHJldHVybiBvZihudWxsKS5waXBlKHRhcChfID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nQ29tcGFueVN1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNvbnN0IGdldENvbXBhbmllcyQgPSBhY2NvdW50c0ZldGNoTWV0aG9kKGd1aWQsIHBhcmtJZCwgc2VhcmNoUGFyYW1zRHRvLm1heFJlc3VsdHMsIHNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLFxuICAgICAgc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkuY29sdW1uLCBzZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbiwgY29tcGFuaWVzRmlsdGVyRHRvKTtcblxuICAgIHJldHVybiBnZXRDb21wYW5pZXMkLnBpcGUodGFwKF8gPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nQ29tcGFueVN1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgIH0pKTtcbiAgfVxuXG4gIGdldFN1YkNvbXBhbmllc0J5SWRzKHBhcmtJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZSwgY29tcGFueUlkczogbnVtYmVyW10sIHN1YkNvbXBhbnlJZHM6IG51bWJlcltdKTogT2JzZXJ2YWJsZTxTdWJBY2NvdW50RHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgaWYgKCFndWlkIHx8ICFjb21wYW55SWRzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBvZihudWxsKS5waXBlKHRhcChfID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViQ29tcGFueVN1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGluZ1N1YkNvbXBhbnlTdWJqZWN0JC5uZXh0KHRydWUpO1xuXG4gICAgbGV0IGdldFN1YkNvbXBhbmllcyQ6IE9ic2VydmFibGU8U3ViQWNjb3VudER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT47XG4gICAgY29uc3Qgc3ViQ29tcGFuaWVzV2l0aFBlcm1pc3Npb25zOiBTdWJDb21wYW5pZXNGaWx0ZXJEdG8gPSBuZXcgU3ViQ29tcGFuaWVzRmlsdGVyRHRvKHtcbiAgICAgIHBhcmtJZCxcbiAgICAgIGNvbXBhbnlJZHM6IGNvbXBhbnlJZHMsXG4gICAgICBzdWJDb21wYW55SWRzOiBzdWJDb21wYW55SWRzLFxuICAgIH0pO1xuICAgIGNvbnN0IHN1YkFjY291bnRzRmV0Y2hNZXRob2Q6IFN1YkFjY291bnRzRmV0Y2hNZXRob2RTaWduYXR1cmUgPSB0aGlzLmdldFN1YkFjY291bnRzRmV0Y2hNZXRob2QocGVybWlzc2lvblR5cGUpO1xuICAgIGlmICghc3ViQWNjb3VudHNGZXRjaE1ldGhvZCkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpLnBpcGUodGFwKF8gPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJDb21wYW55U3ViamVjdCQubmV4dChmYWxzZSk7XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgZ2V0U3ViQ29tcGFuaWVzJCA9IHN1YkFjY291bnRzRmV0Y2hNZXRob2QoZ3VpZCwgcGFya0lkLCBudWxsLCBudWxsLCBudWxsLCBPcmRlckRpcmVjdGlvbi5Ob25lLCBzdWJDb21wYW5pZXNXaXRoUGVybWlzc2lvbnMpO1xuXG4gICAgcmV0dXJuIGdldFN1YkNvbXBhbmllcyQucGlwZSh0YXAoXyA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmdTdWJDb21wYW55U3ViamVjdCQubmV4dChmYWxzZSk7XG4gICAgfSkpO1xuICB9XG5cbiAgZ2V0U3ViQ29tcGFuaWVzT3B0aW9ucyhwYXJrSWQ6IG51bWJlciwgZ3VpZDogc3RyaW5nLCBzZWFyY2hQYXJhbXNEdG86IFNlYXJjaFBhcmFtc0R0bywgcGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlLFxuICAgIGNvbXBhbnlJZHM6IG51bWJlcltdKTogT2JzZXJ2YWJsZTxTdWJBY2NvdW50RHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgaWYgKCFndWlkIHx8ICFjb21wYW55SWRzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBvZihudWxsKS5waXBlKHRhcChfID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViQ29tcGFueVN1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGluZ1N1YkNvbXBhbnlTdWJqZWN0JC5uZXh0KHRydWUpO1xuXG4gICAgbGV0IGdldFN1YkNvbXBhbmllcyQ6IE9ic2VydmFibGU8U3ViQWNjb3VudER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT47XG5cbiAgICBjb25zdCBzdWJBY2NvdW50c0ZldGNoTWV0aG9kOiBTdWJBY2NvdW50c0ZldGNoTWV0aG9kU2lnbmF0dXJlID0gdGhpcy5nZXRTdWJBY2NvdW50c0ZldGNoTWV0aG9kKHBlcm1pc3Npb25UeXBlKTtcbiAgICBpZiAoIXN1YkFjY291bnRzRmV0Y2hNZXRob2QpIHtcbiAgICAgIHJldHVybiBvZihudWxsKS5waXBlKHRhcChfID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViQ29tcGFueVN1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YkNvbXBhbmllc0ZpbHRlckR0bzogU3ViQ29tcGFuaWVzRmlsdGVyRHRvID0gbmV3IFN1YkNvbXBhbmllc0ZpbHRlckR0byh7XG4gICAgICBwYXJrSWQsXG4gICAgICBjb21wYW55SWRzLFxuICAgICAgc3ViQ29tcGFueUlkczogbnVsbCxcbiAgICB9KTtcbiAgICBnZXRTdWJDb21wYW5pZXMkID0gc3ViQWNjb3VudHNGZXRjaE1ldGhvZChndWlkLCBwYXJrSWQsIHNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLCBzZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSxcbiAgICAgIHNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24sIHN1YkNvbXBhbmllc0ZpbHRlckR0byk7XG5cbiAgICByZXR1cm4gZ2V0U3ViQ29tcGFuaWVzJC5waXBlKHRhcChfID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ1N1YkNvbXBhbnlTdWJqZWN0JC5uZXh0KGZhbHNlKTtcbiAgICB9KSk7XG4gIH1cblxuICBnZXRDcmVkZW50aWFsTGltaXRzKGNvbXBhbnk6IENvbXBhbnlEdG8sIHN1YkNvbXBhbnk/OiBTdWJDb21wYW55RHRvKSB7XG4gICAgLy8gV2UgaGF2ZSAzIG9wdGlvbnNcbiAgICAvLyAxKSBTdWJDb21wYW55ICsgQ29tcGFueSAgICAgICA9PiBXZSB0YWtlIHRoZSBTdWJDb21wYW55IGxpbWl0c1xuICAgIC8vIDIpIE5vIFN1YkNvbXBhbnkgKyBDb21wYW55ICAgID0+IFdlIHRha2Ugd2UgQ29tcGFueSBsaW1pdHNcbiAgICAvLyAzKSBObyBDb21wYW55ICsgTm8gU3ViQ29tcGFueSA9PiBXZSB0YWtlIHRoZSBkZWZhdWx0IGNvbXBhbnkgbGltaXRzXG4gICAgY29uc3QgYWxsb3dQaG9uZSA9IHN1YkNvbXBhbnk/LmFsbG93UGhvbmUgPz8gY29tcGFueT8uYWxsb3dQaG9uZSA/PyB0cnVlO1xuICAgIGNvbnN0IGFsbG93UVIgPSBzdWJDb21wYW55Py5hbGxvd1FSID8/IGNvbXBhbnk/LmFsbG93UVIgPz8gdHJ1ZTtcbiAgICBjb25zdCBtYXhDYXJkcyA9IHN1YkNvbXBhbnk/Lm1heENhcmRzID8/IGNvbXBhbnk/Lm1heENhcmRzID8/IE1BWF9DQVJEUztcbiAgICBjb25zdCBtYXhDYXJQbGF0ZXMgPSBzdWJDb21wYW55Py5tYXhDYXJQbGF0ZXMgPz8gY29tcGFueT8ubWF4Q2FyUGxhdGVzID8/IE1BWF9DQVJfUExBVEVTO1xuXG4gICAgcmV0dXJuIHsgYWxsb3dQaG9uZSwgYWxsb3dRUiwgbWF4Q2FyZHMsIG1heENhclBsYXRlcyB9O1xuICB9XG5cbiAgaGFuZGxlQ3JlZGVudGlhbHNXYXJuaW5nTWVzc2FnZXNCYXIoY3JlZGVudGlhbExpbWl0czogeyBhbGxvd1Bob25lOiBib29sZWFuOyBhbGxvd1FSOiBib29sZWFuOyBtYXhDYXJkczogbnVtYmVyOyBtYXhDYXJQbGF0ZXM6IG51bWJlcjsgfSwgZm9ybTogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGxldCB3YXJuaW5nTWVzc2FnZUFsZXJ0czogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIENhcmRzXG4gICAgY29uc3QgYmFkZ2VzID0gKGZvcm0uY29udHJvbHMuYmFkZ2U/LnZhbHVlIHx8IFtdKS5maWx0ZXIoYmFkZ2UgPT4ge1xuICAgICAgcmV0dXJuIGJhZGdlPy52YWx1ZS5sZW5ndGggPiAwO1xuICAgIH0pO1xuXG4gICAgaWYgKGJhZGdlcy5sZW5ndGggPiBjcmVkZW50aWFsTGltaXRzLm1heENhcmRzKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmFjY291bnRfbGltaXRfY3JlZGVudGlhbF9jYXJkLCB7XG4gICAgICAgIG1heFF1YW50aXR5OiBjcmVkZW50aWFsTGltaXRzLm1heENhcmRzXG4gICAgICB9KTtcbiAgICAgIHdhcm5pbmdNZXNzYWdlQWxlcnRzLnB1c2gobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgLy8gQ2FyIFBsYXRlc1xuICAgIGNvbnN0IGNhclBsYXRlcyA9IChmb3JtLmNvbnRyb2xzLmNhclBsYXRlPy52YWx1ZSB8fCBbXSkuZmlsdGVyKGNhclBsYXRlID0+IHtcbiAgICAgIHJldHVybiBjYXJQbGF0ZT8udmFsdWUubGVuZ3RoID4gMDtcbiAgICB9KTtcblxuICAgIGlmIChjYXJQbGF0ZXMubGVuZ3RoID4gY3JlZGVudGlhbExpbWl0cy5tYXhDYXJQbGF0ZXMpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjb3VudF9saW1pdF9jcmVkZW50aWFsX2Nhcl9wbGF0ZSwge1xuICAgICAgICBtYXhRdWFudGl0eTogY3JlZGVudGlhbExpbWl0cy5tYXhDYXJQbGF0ZXNcbiAgICAgIH0pO1xuICAgICAgd2FybmluZ01lc3NhZ2VBbGVydHMucHVzaChtZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvLyBBbGxvd1Bob25lIC0gTW9iaWxlXG4gICAgaWYgKGZvcm0uY29udHJvbHMubW9iaWxlLnZhbHVlPy5sZW5ndGggJiYgIWNyZWRlbnRpYWxMaW1pdHMuYWxsb3dQaG9uZSkge1xuICAgICAgY29uc3QgbWVzc2FnZUFsbG93UGhvbmUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjb3VudF9saW1pdF9jcmVkZW50aWFsX3Bob25lKTtcbiAgICAgIHdhcm5pbmdNZXNzYWdlQWxlcnRzLnB1c2gobWVzc2FnZUFsbG93UGhvbmUpO1xuICAgIH1cblxuICAgIC8vIEFsbG93UVIgLSBFbWFpbFxuICAgIGlmIChmb3JtLmNvbnRyb2xzLmVtYWlsLnZhbHVlPy5sZW5ndGggJiYgIWNyZWRlbnRpYWxMaW1pdHMuYWxsb3dRUikge1xuICAgICAgY29uc3QgbWVzc2FnZUFsbG93UVIgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjb3VudF9saW1pdF9jcmVkZW50aWFsX3FyKTtcbiAgICAgIHdhcm5pbmdNZXNzYWdlQWxlcnRzLnB1c2gobWVzc2FnZUFsbG93UVIpO1xuICAgIH1cblxuICAgIGlmICh3YXJuaW5nTWVzc2FnZUFsZXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB3YXJuaW5nTWVzc2FnZSA9IGAtICR7d2FybmluZ01lc3NhZ2VBbGVydHMuam9pbignPGJyPi0gJyl9YDtcbiAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uud2Fybih3YXJuaW5nTWVzc2FnZSwgeyBpZDogJ2NyZWRlbnRpYWxXYXJuaW5nTWVzc2FnZScsIHBvc2l0aW9uOiBNZXNzYWdlQmFyUG9zaXRpb24uU3RhdGljIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmNsZWFyTWVzc2FnZWJhcignY3JlZGVudGlhbFdhcm5pbmdNZXNzYWdlJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gQm90aCBtYXBwaW5ncyBiZWxvdyBhcmUgcGFydGlhbCBsb29rdXBzIG92ZXIgUGVybWlzc2lvblR5cGUsIHNvIGEgbWlzcyBpcyBhXG4gIC8vIHJlYWNoYWJsZSBzdGF0ZSByYXRoZXIgdGhhbiBhIHByb2dyYW1taW5nIGVycm9yOiB0aGUgUmVwb3J0cyBDZW50ZXIgYmluZHMgaXRzXG4gIC8vIGNvbXBhbnkgZHJvcGRvd25zIHRvIHRoZSBzZWxlY3RlZCBjYXRlZ29yeSdzIHBlcm1pc3Npb24gdHlwZSwgYW5kIHRoZSBcIkFsbFxuICAvLyByZXBvcnRzXCIgY2F0ZWdvcnkgbGVnaXRpbWF0ZWx5IGhhcyBub25lLiBSZXR1cm4gdW5kZWZpbmVkIG9uIGEgbWlzcyBhbmQgbGV0XG4gIC8vIHRoZSBjYWxsZXJzIGRlZ3JhZGUg4oCUIHNlZSBTUFJLMy0xNTAyOS5cbiAgcHJpdmF0ZSBnZXRBY2NvdW50c0ZldGNoTWV0aG9kKHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZSk6IEFjY291bnRzRmV0Y2hNZXRob2RTaWduYXR1cmUge1xuICAgIHJldHVybiB0aGlzLmFjY291bnRzRmV0Y2hNZXRob2RzTWFwcGluZ1twZXJtaXNzaW9uVHlwZV0/LmJpbmQodGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3ViQWNjb3VudHNGZXRjaE1ldGhvZChwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUpOiBTdWJBY2NvdW50c0ZldGNoTWV0aG9kU2lnbmF0dXJlIHtcbiAgICByZXR1cm4gdGhpcy5zdWJBY2NvdW50c0ZldGNoTWV0aG9kc01hcHBpbmdbcGVybWlzc2lvblR5cGVdPy5iaW5kKHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eSk7XG4gIH1cblxuICBhY2NvdW50c0ZldGNoTWV0aG9kc01hcHBpbmc6IEFjY291bnRzRmV0Y2hNZXRob2RzTWFwID0ge1xuICAgIFtQZXJtaXNzaW9uVHlwZS5DY01haW5dOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNDY1ZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlVwZGF0ZURvY3VtZW50XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzQ2NVcGRhdGVEb2N1bWVudCxcbiAgICBbUGVybWlzc2lvblR5cGUuR3Vlc3RWaWV3XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzR3Vlc3RWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5HdWVzdENyZWF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c0d1ZXN0Q3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5HdWVzdFVwZGF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c0d1ZXN0VXBkYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5HdWVzdEdyb3VwQ3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzR3Vlc3RHcm91cENyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuR3Vlc3RFVm91Y2hlclZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNFVm91Y2hlclZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLkd1ZXN0SG90ZWxHdWVzdFZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNIb3RlbEd1ZXN0VmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuR3Vlc3RIb3RlbEd1ZXN0Q3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzSG90ZWxHdWVzdENyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuR3Vlc3RIb3RlbEd1ZXN0VXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzSG90ZWxHdWVzdFVwZGF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuSG90ZWxHdWVzdElPQ3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzSG90ZWxHdWVzdElPQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5Ib3RlbEd1ZXN0SU9WaWV3XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzSG90ZWxHdWVzdElPSGlzdG9yeVZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobGllc1ZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNNb250aGx5VmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuTW9udGhsaWVzQ3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzTW9udGhseUNyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuTW9udGhsaWVzVXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzTW9udGhseVVwZGF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuTW9udGhsaWVzVXBkYXRlQWR2YW5jZWRdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNNb250aGx5VXBkYXRlQWR2YW5jZWQsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobGllc0RlbGV0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c01vbnRobHlEZWxldGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobGllc1NlbmRBbmRQcmludF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c01vbnRobHlTZW5kQW5kUHJpbnQsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobHlTZXJpZXNDcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNNb250aGx5U2VyaWVzQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uRVZhbGlkYXRpb25WaWV3XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzRVZhbGlkYXRpb25WaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uRVZhbGlkYXRpb25DcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNFVmFsaWRhdGlvbkNyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkVWYWxpZGF0aW9uVXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzRVZhbGlkYXRpb25VcGRhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25TZWxmVmFsaWRhdGlvblZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNTZWxmVmFsaWRhdGlvblZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25TZWxmVmFsaWRhdGlvbkNyZWF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1NlbGZWYWxpZGF0aW9uQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU2VsZlZhbGlkYXRpb25VcGRhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNTZWxmVmFsaWRhdGlvblVwZGF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkNvdXBvblZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNDb3Vwb25WaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uQ291cG9uQ3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzQ291cG9uQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uQ291cG9uVXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzQ291cG9uVXBkYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlclZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNTdGlja2VyVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvblN0aWNrZXJDcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNTdGlja2VyQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU3RpY2tlclVwZGF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1N0aWNrZXJVcGRhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLkxvdENvbmZpZ3VyYXRpb25SYXRlc106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c0xvdENvbmZpZ3VyYXRpb25SYXRlcyxcbiAgICBbUGVybWlzc2lvblR5cGUuTWFuYWdlbWVudEFkbWluXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzTWFuYWdlbWVudFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeUNvbXBhbmllc106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1JlcG9ydHNDYXRlZ29yeUNvbXBhbmllc1ZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeUd1ZXN0XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5R3Vlc3RWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlIb3RlbF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1JlcG9ydHNDYXRlZ29yeUhvdGVsVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5TFBSVHJhbnNhY3Rpb25dOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlMUFJUcmFuc2FjdGlvblZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeU1vbnRobGllc106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1JlcG9ydHNDYXRlZ29yeU1vbnRobGllc1ZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeU9jY3VwYW5jeUFuZFRyYWZmaWNdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0QWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlPY2N1cGFuY3lBbmRUcmFmZmljVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5UmV2ZW51ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1JlcG9ydHNDYXRlZ29yeVJldmVudWVWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlTcGVjaWFsXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5U3BlY2lhbFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeVN0YWZmUmVsYXRlZF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRBY2NvdW50c1JlcG9ydHNDYXRlZ29yeVN0YWZmUmVsYXRlZFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeVN5c3RlbUV2ZW50XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5U3lzdGVtRXZlbnRWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlUaWNrZXRzXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5VGlja2V0c1ZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeVZhbGV0XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5VmFsZXRWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlWYWxpZGF0aW9uXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldEFjY291bnRzUmVwb3J0c0NhdGVnb3J5VmFsaWRhdGlvblZpZXcsXG4gIH07XG4gIHN1YkFjY291bnRzRmV0Y2hNZXRob2RzTWFwcGluZzogU3ViQWNjb3VudHNGZXRjaE1ldGhvZHNNYXAgPSB7XG4gICAgW1Blcm1pc3Npb25UeXBlLkNjTWFpbl06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c0NjVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuVXBkYXRlRG9jdW1lbnRdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNDY1VwZGF0ZURvY3VtZW50LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5HdWVzdFZpZXddOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNHdWVzdFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLkd1ZXN0Q3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzR3Vlc3RDcmVhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLkd1ZXN0VXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzR3Vlc3RVcGRhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLkd1ZXN0R3JvdXBDcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNHdWVzdEdyb3VwQ3JlYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5Nb250aGxpZXNWaWV3XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzTW9udGhseVZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobGllc0NyZWF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c01vbnRobHlDcmVhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobGllc1VwZGF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c01vbnRobHlVcGRhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLk1vbnRobGllc1VwZGF0ZUFkdmFuY2VkXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzTW9udGhseVVwZGF0ZUFkdmFuY2VkLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5Nb250aGxpZXNEZWxldGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNNb250aGx5RGVsZXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5Nb250aGxpZXNTZW5kQW5kUHJpbnRdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNNb250aGx5U2VuZEFuZFByaW50LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5Nb250aGx5U2VyaWVzQ3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzTW9udGhseVNlcmllc0NyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkVWYWxpZGF0aW9uVmlld106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c0VWYWxpZGF0aW9uVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkVWYWxpZGF0aW9uQ3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzRVZhbGlkYXRpb25DcmVhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25FVmFsaWRhdGlvblVwZGF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c0VWYWxpZGF0aW9uVXBkYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU2VsZlZhbGlkYXRpb25WaWV3XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzU2VsZlZhbGlkYXRpb25WaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5WYWxpZGF0aW9uU2VsZlZhbGlkYXRpb25DcmVhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNTZWxmVmFsaWRhdGlvbkNyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvblNlbGZWYWxpZGF0aW9uVXBkYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzU2VsZlZhbGlkYXRpb25VcGRhdGUsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25Db3Vwb25WaWV3XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzQ291cG9uVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkNvdXBvbkNyZWF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c0NvdXBvbkNyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvbkNvdXBvblVwZGF0ZV06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c0NvdXBvblVwZGF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvblN0aWNrZXJWaWV3XTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzU3RpY2tlclZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlZhbGlkYXRpb25TdGlja2VyQ3JlYXRlXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzU3RpY2tlckNyZWF0ZSxcbiAgICBbUGVybWlzc2lvblR5cGUuVmFsaWRhdGlvblN0aWNrZXJVcGRhdGVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNTdGlja2VyVXBkYXRlLFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlDb21wYW5pZXNdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlDb21wYW5pZXNWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlHdWVzdF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeUd1ZXN0VmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5SG90ZWxdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlIb3RlbFZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeUxQUlRyYW5zYWN0aW9uXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzUmVwb3J0c0NhdGVnb3J5TFBSVHJhbnNhY3Rpb25WaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlNb250aGxpZXNdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlNb250aGxpZXNWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlPY2N1cGFuY3lBbmRUcmFmZmljXTogdGhpcy5hY2NvdW50UnBjU2VydmljZVByb3h5LmdldFN1YkFjY291bnRzUmVwb3J0c0NhdGVnb3J5T2NjdXBhbmN5QW5kVHJhZmZpY1ZpZXcsXG4gICAgW1Blcm1pc3Npb25UeXBlLlJlcG9ydHNDYXRlZ29yeVJldmVudWVdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlSZXZlbnVlVmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5U3BlY2lhbF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeVNwZWNpYWxWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlTdGFmZlJlbGF0ZWRdOiB0aGlzLmFjY291bnRScGNTZXJ2aWNlUHJveHkuZ2V0U3ViQWNjb3VudHNSZXBvcnRzQ2F0ZWdvcnlTdGFmZlJlbGF0ZWRWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlTeXN0ZW1FdmVudF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeVN5c3RlbUV2ZW50VmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5VGlja2V0c106IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeVRpY2tldHNWaWV3LFxuICAgIFtQZXJtaXNzaW9uVHlwZS5SZXBvcnRzQ2F0ZWdvcnlWYWxldF06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeVZhbGV0VmlldyxcbiAgICBbUGVybWlzc2lvblR5cGUuUmVwb3J0c0NhdGVnb3J5VmFsaWRhdGlvbl06IHRoaXMuYWNjb3VudFJwY1NlcnZpY2VQcm94eS5nZXRTdWJBY2NvdW50c1JlcG9ydHNDYXRlZ29yeVZhbGlkYXRpb25WaWV3LFxuICB9O1xufVxuXG50eXBlIEFjY291bnRzRmV0Y2hNZXRob2RTaWduYXR1cmUgPSAoZ3VpZDogc3RyaW5nLCBmYWNpbGl0eUlkOiBudW1iZXIsIG1heFJlc3VsdHM6IG51bWJlciB8IHVuZGVmaW5lZCwgc2VhcmNoVGVybTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcmRlckJ5X0NvbHVtbjogc3RyaW5nIHwgdW5kZWZpbmVkLCBvcmRlckJ5X09yZGVyRGlyZWN0aW9uOiBPcmRlckRpcmVjdGlvbiB8IHVuZGVmaW5lZCwgYm9keTogQ29tcGFuaWVzRmlsdGVyRHRvIHwgdW5kZWZpbmVkKSA9PlxuICBPYnNlcnZhYmxlPEFjY291bnREdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+O1xudHlwZSBTdWJBY2NvdW50c0ZldGNoTWV0aG9kU2lnbmF0dXJlID0gKGd1aWQ6IHN0cmluZywgZmFjaWxpdHlJZDogbnVtYmVyLCBtYXhSZXN1bHRzOiBudW1iZXIgfCB1bmRlZmluZWQsIHNlYXJjaFRlcm06IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3JkZXJCeV9Db2x1bW46IHN0cmluZyB8IHVuZGVmaW5lZCwgb3JkZXJCeV9PcmRlckRpcmVjdGlvbjogT3JkZXJEaXJlY3Rpb24gfCB1bmRlZmluZWQsIGJvZHk6IFN1YkNvbXBhbmllc0ZpbHRlckR0byB8IHVuZGVmaW5lZCkgPT5cbiAgT2JzZXJ2YWJsZTxTdWJBY2NvdW50RHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPjtcbnR5cGUgQWNjb3VudHNGZXRjaE1ldGhvZHNNYXAgPSBOdW1iZXJNYXA8QWNjb3VudHNGZXRjaE1ldGhvZFNpZ25hdHVyZT47XG50eXBlIFN1YkFjY291bnRzRmV0Y2hNZXRob2RzTWFwID0gTnVtYmVyTWFwPFN1YkFjY291bnRzRmV0Y2hNZXRob2RTaWduYXR1cmU+O1xuIl19
|