@tiba-spark/client-shared-lib 25.2.1-534 → 25.2.1-536
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/resolvers/mobile-command-center-module.resolver.mjs +18 -11
- package/esm2022/libraries/services/base-device.service.mjs +3 -2
- package/fesm2022/tiba-spark-client-shared-lib.mjs +14 -9
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/resolvers/mobile-command-center-module.resolver.d.ts +4 -2
- package/libraries/resolvers/mobile-command-center-module.resolver.d.ts.map +1 -1
- package/libraries/services/base-device.service.d.ts +1 -1
- package/libraries/services/base-device.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
1
2
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
+
import { Dispatch } from '@ngxs-labs/dispatch-decorator';
|
|
4
|
+
import { filter, first, tap } from 'rxjs/operators';
|
|
3
5
|
import { SetBasicMenuAction } from '../modules/facility/facility.actions';
|
|
4
6
|
import { MenuLoadAction } from '../modules/sidenav/sidenav.actions';
|
|
5
|
-
import { LoadMobileSmartparksBasicAction } from '../modules/smartparks/smartpark.actions';
|
|
7
|
+
import { ClearSmartparksBasicAction, LoadMobileSmartparksBasicAction } from '../modules/smartparks/smartpark.actions';
|
|
8
|
+
import { SmartparkState } from '../modules/smartparks/smartpark.state';
|
|
6
9
|
import { AppModule, NotificationEventType } from '../service-proxy/edge-service-proxies';
|
|
7
10
|
import * as i0 from "@angular/core";
|
|
8
11
|
import * as i1 from "../services/signalr.service";
|
|
@@ -15,16 +18,17 @@ export class MobileCommandCenterModuleResolver {
|
|
|
15
18
|
this.realtimeEventService = realtimeEventService;
|
|
16
19
|
this.notificationEventService = notificationEventService;
|
|
17
20
|
this.store = store;
|
|
21
|
+
this.clearSmartparks = () => new ClearSmartparksBasicAction();
|
|
18
22
|
}
|
|
19
23
|
resolve(route, state) {
|
|
24
|
+
this.clearSmartparks();
|
|
20
25
|
this.store.dispatch(new MenuLoadAction([], AppModule.Cc));
|
|
21
|
-
this.store.dispatch(new LoadMobileSmartparksBasicAction(AppModule.Cc, null))
|
|
22
|
-
|
|
23
|
-
this.store.dispatch(new SetBasicMenuAction(smartparkBasic.
|
|
24
|
-
this.subscribeToRealTimeEvents(smartparkBasic
|
|
25
|
-
this.subscribeToHandleAlertNotificationEvents(smartparkBasic
|
|
26
|
-
});
|
|
27
|
-
return null;
|
|
26
|
+
this.store.dispatch(new LoadMobileSmartparksBasicAction(AppModule.Cc, null));
|
|
27
|
+
return this.store.select(SmartparkState.smartParkWrapper).pipe(filter(smartparkBasic => !!smartparkBasic), first(), tap((smartparkBasic) => {
|
|
28
|
+
this.store.dispatch(new SetBasicMenuAction(smartparkBasic.smartParks, AppModule.Cc));
|
|
29
|
+
this.subscribeToRealTimeEvents(smartparkBasic);
|
|
30
|
+
this.subscribeToHandleAlertNotificationEvents(smartparkBasic);
|
|
31
|
+
}));
|
|
28
32
|
}
|
|
29
33
|
subscribeToRealTimeEvents(smartparkBasic) {
|
|
30
34
|
const parksSubscription = this.realtimeEventService.getCrossParkSubscriptions(smartparkBasic);
|
|
@@ -45,7 +49,10 @@ export class MobileCommandCenterModuleResolver {
|
|
|
45
49
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MobileCommandCenterModuleResolver, deps: [{ token: i1.SignalR }, { token: i2.RealtimeEventService }, { token: i3.NotificationEventService }, { token: i4.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
46
50
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MobileCommandCenterModuleResolver }); }
|
|
47
51
|
}
|
|
52
|
+
__decorate([
|
|
53
|
+
Dispatch()
|
|
54
|
+
], MobileCommandCenterModuleResolver.prototype, "clearSmartparks", void 0);
|
|
48
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MobileCommandCenterModuleResolver, decorators: [{
|
|
49
56
|
type: Injectable
|
|
50
|
-
}], ctorParameters: function () { return [{ type: i1.SignalR }, { type: i2.RealtimeEventService }, { type: i3.NotificationEventService }, { type: i4.Store }]; } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
}], ctorParameters: function () { return [{ type: i1.SignalR }, { type: i2.RealtimeEventService }, { type: i3.NotificationEventService }, { type: i4.Store }]; }, propDecorators: { clearSmartparks: [] } });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWNvbW1hbmQtY2VudGVyLW1vZHVsZS5yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvcmVzb2x2ZXJzL21vYmlsZS1jb21tYW5kLWNlbnRlci1tb2R1bGUucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7O0FBSzlHLE1BQU0sT0FBTyxpQ0FBaUM7SUFFNUMsWUFDVSxPQUFnQixFQUNoQixvQkFBMEMsRUFDMUMsd0JBQWtELEVBQ2xELEtBQVk7UUFIWixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBc0NWLG9CQUFlLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO0lBckNyRSxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDL0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksY0FBYyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLCtCQUErQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU3RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDNUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUMxQyxLQUFLLEVBQUUsRUFDUCxHQUFHLENBQUMsQ0FBQyxjQUFtQyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsd0NBQXdDLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxjQUFtQztRQUNuRSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDckQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsK0JBQStCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyx3Q0FBd0MsQ0FBQyxjQUFtQztRQUNsRixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3pELE1BQU0saUNBQWlDLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BKLGlDQUFpQyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBRTFFLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RKLGtDQUFrQyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1NBQzVFO0lBQ0gsQ0FBQzsrR0ExQ1UsaUNBQWlDO21IQUFqQyxpQ0FBaUM7O0FBNENoQztJQUFYLFFBQVEsRUFBRTswRUFBMEQ7NEZBNUMxRCxpQ0FBaUM7a0JBRDdDLFVBQVU7NExBNkNHLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERpc3BhdGNoIH0gZnJvbSAnQG5neHMtbGFicy9kaXNwYXRjaC1kZWNvcmF0b3InO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25FdmVudFNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24tZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTZXRCYXNpY01lbnVBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LmFjdGlvbnMnO1xuaW1wb3J0IHsgTWVudUxvYWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL3NpZGVuYXYvc2lkZW5hdi5hY3Rpb25zJztcbmltcG9ydCB7IENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCBMb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9zbWFydHBhcmtzL3NtYXJ0cGFyay5hY3Rpb25zJztcbmltcG9ydCB7IFNtYXJ0cGFya1N0YXRlIH0gZnJvbSAnLi4vbW9kdWxlcy9zbWFydHBhcmtzL3NtYXJ0cGFyay5zdGF0ZSc7XG5pbXBvcnQgeyBBcHBNb2R1bGUsIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgU21hcnRQYXJrV3JhcHBlckR0byB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgUmVhbHRpbWVFdmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWFsdGltZS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZ25hbFIgfSBmcm9tICcuLi9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTW9iaWxlQ29tbWFuZENlbnRlck1vZHVsZVJlc29sdmVyIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNpZ25hbFI6IFNpZ25hbFIsXG4gICAgcHJpdmF0ZSByZWFsdGltZUV2ZW50U2VydmljZTogUmVhbHRpbWVFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25FdmVudFNlcnZpY2U6IE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSkge1xuICB9XG5cbiAgcmVzb2x2ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPFNtYXJ0UGFya1dyYXBwZXJEdG8+IHtcbiAgICB0aGlzLmNsZWFyU21hcnRwYXJrcygpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE1lbnVMb2FkQWN0aW9uKFtdLCBBcHBNb2R1bGUuQ2MpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBMb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uKEFwcE1vZHVsZS5DYywgbnVsbCkpO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KFNtYXJ0cGFya1N0YXRlLnNtYXJ0UGFya1dyYXBwZXIpLnBpcGUoXG4gICAgICBmaWx0ZXIoc21hcnRwYXJrQmFzaWMgPT4gISFzbWFydHBhcmtCYXNpYyksXG4gICAgICBmaXJzdCgpLFxuICAgICAgdGFwKChzbWFydHBhcmtCYXNpYzogU21hcnRQYXJrV3JhcHBlckR0bykgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRCYXNpY01lbnVBY3Rpb24oc21hcnRwYXJrQmFzaWMuc21hcnRQYXJrcywgQXBwTW9kdWxlLkNjKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9SZWFsVGltZUV2ZW50cyhzbWFydHBhcmtCYXNpYyk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9IYW5kbGVBbGVydE5vdGlmaWNhdGlvbkV2ZW50cyhzbWFydHBhcmtCYXNpYyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvUmVhbFRpbWVFdmVudHMoc21hcnRwYXJrQmFzaWM6IFNtYXJ0UGFya1dyYXBwZXJEdG8pIHtcbiAgICBjb25zdCBwYXJrc1N1YnNjcmlwdGlvbiA9IHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UuZ2V0Q3Jvc3NQYXJrU3Vic2NyaXB0aW9ucyhzbWFydHBhcmtCYXNpYyk7XG4gICAgdGhpcy5zaWduYWxSLnN1YnNjcmliZUZvclJlYWx0aW1lKHBhcmtzU3Vic2NyaXB0aW9uKTtcbiAgICBjb25zdCBwYXJlbnRQYXJrc1N1YnNjcmlwdGlvbiA9IHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UuZ2V0Q3Jvc3NQYXJlbnRQYXJrU3Vic2NyaXB0aW9ucyhzbWFydHBhcmtCYXNpYyk7XG4gICAgdGhpcy5zaWduYWxSLnN1YnNjcmliZUZvclJlYWx0aW1lKHBhcmVudFBhcmtzU3Vic2NyaXB0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9IYW5kbGVBbGVydE5vdGlmaWNhdGlvbkV2ZW50cyhzbWFydHBhcmtCYXNpYzogU21hcnRQYXJrV3JhcHBlckR0bykge1xuICAgIGZvciAoY29uc3QgZ3VpZCBvZiBPYmplY3Qua2V5cyhzbWFydHBhcmtCYXNpYy5zbWFydFBhcmtzKSkge1xuICAgICAgY29uc3QgaGFuZGxlTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvID0gdGhpcy5ub3RpZmljYXRpb25FdmVudFNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uKE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5IYW5kbGVOb3RpZmljYXRpb24sIGd1aWQpO1xuICAgICAgaGFuZGxlTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLnVuc3Vic2NyaWJlID0gZmFsc2U7XG4gICAgICB0aGlzLnNpZ25hbFIuc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhoYW5kbGVOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8pO1xuXG4gICAgICBjb25zdCBoYW5kbGVkTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvID0gdGhpcy5ub3RpZmljYXRpb25FdmVudFNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uKE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5IYW5kbGVkTm90aWZpY2F0aW9uLCBndWlkKTtcbiAgICAgIGhhbmRsZWROb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8udW5zdWJzY3JpYmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2lnbmFsUi5zdWJzY3JpYmVGb3JOb3RpZmljYXRpb25zKGhhbmRsZWROb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8pO1xuICAgIH1cbiAgfVxuXG4gIEBEaXNwYXRjaCgpIGNsZWFyU21hcnRwYXJrcyA9ICgpID0+IG5ldyBDbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbigpO1xufVxuIl19
|
|
@@ -408,7 +408,8 @@ export class BaseDeviceService {
|
|
|
408
408
|
let comAggregatedStatus;
|
|
409
409
|
if (deviceStatusData?.commID === 0) {
|
|
410
410
|
const guid = this.store.selectSnapshot(FacilityState.guid);
|
|
411
|
-
const
|
|
411
|
+
const byId = this.store.selectSnapshot(ParkManagerState.byId);
|
|
412
|
+
const parkId = byId[deviceStatusData.deviceID].parkID;
|
|
412
413
|
const facility = this.store.selectSnapshot(FacilityState.facilityDictionary)[guid][parkId];
|
|
413
414
|
comAggregatedStatus = facility?.isMainControllerConnected ? ComAggregatedStatus.Ok : ComAggregatedStatus.ComError;
|
|
414
415
|
}
|
|
@@ -516,4 +517,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
516
517
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.TranslateService }, { type: i3.RemoteCommandService }, { type: i4.AppSettingsService }, { type: i5.CommandNotificationService }]; }, propDecorators: { loadingCommand$: [{
|
|
517
518
|
type: Output
|
|
518
519
|
}] } });
|
|
519
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kZXZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvc2VydmljZXMvYmFzZS1kZXZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakUsT0FBTyxFQUF3QyxFQUFFLEVBQW9CLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSw0QkFBNEIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xKLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUsxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFjLFlBQVksRUFBRSx1Q0FBdUMsRUFBRSxzQ0FBc0MsRUFBRSwwQkFBMEIsRUFBRSxtQ0FBbUMsRUFBRSxrQ0FBa0MsRUFBZ0MsZ0JBQWdCLEVBQUUsbUNBQW1DLEVBQThCLFVBQVUsRUFBRSxrQ0FBa0MsRUFBZSwwQkFBMEIsRUFB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QVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ25JLE1BQU07WUFDUjtnQkFDRSxVQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLElBQUksQ0FBQztnQkFDdkQsTUFBTTtTQUNUO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVNLDRDQUE0QyxDQUFDLGdCQUFrQztRQUNwRixJQUFJLG1CQUF3QyxDQUFDO1FBRTdDLFFBQVEsZ0JBQWdCLEVBQUU7WUFDeEIsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLO2dCQUN6QixtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7Z0JBQ2hELE1BQU07WUFDUixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQzNCLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztnQkFDbEQsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ3pCO2dCQUNFLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztnQkFDN0MsTUFBTTtTQUNUO1FBRUQsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRU0sY0FBYyxDQUFDLFdBQStCO1FBQ25ELFFBQVEsV0FBVyxFQUFFO1lBQ25CLEtBQUssa0JBQWtCLENBQUMsUUFBUSxDQUFDO1lBQ2pDLEtBQUssa0JBQWtCLENBQUMsYUFBYTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7WUFDZDtnQkFDRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNILENBQUM7K0dBMWpCbUIsaUJBQWlCO21IQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRHRDLFVBQVU7d09BR0MsZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgT2JzZXJ2YWJsZSwgb2YsIE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnLCBDb21tYW5kTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkNsYXNzIH0gZnJvbSAnLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBkZXZpY2VJbmRpY2F0aW9uU3RhdHVzTG9jYWxpemF0aW9uLCByZW1vdGVDb21tYW5kTG9jYWxpemF0aW9uTWFwLCBTVVBQT1JURURfU1RBVFVTX0RFVklDRV9UWVBFUyB9IGZyb20gJy4uL2NvbnN0YW50cy9kZXZpY2UtdHlwZXMubW9kYWwnO1xuaW1wb3J0IHsgQ29tQWdncmVnYXRlZFN0YXR1cyB9IGZyb20gJy4uL2VudW1zL2FnZ3JlZ2F0ZWQtc3RhdHVzLmVudW0nO1xuaW1wb3J0IHsgRGV2aWNlQWN0aXZpdHlMYWJlbCwgRGV2aWNlQWN0aXZpdHlTdGF0dXMgfSBmcm9tICcuLi9lbnVtcy9kZXZpY2UtYWN0aXZpdHktc3RhdHVzLmVudW0nO1xuaW1wb3J0IHsgRGV2aWNlSW5kaWNhdGlvblN0YXR1cyB9IGZyb20gJy4uL2VudW1zL2RldmljZS1pbmRpY2F0aW9uLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IExvY2FsaXphdGlvbiB9IGZyb20gJy4uL2VudW1zL2xvY2FsaXphdGlvbi5lbnVtJztcbmltcG9ydCB7IFRyYWNlUGF5bG9hZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYW5hbHl0aWNzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbWREYXRhRHRvIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jbWQtZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29uZmlnRGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IExvc3RUaWNrZXREaWFsb2dEYXRhLCBMcHJNaXNtYXRjaERpYWxvZ0RhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RpY2tldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmFjaWxpdHlTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHkuc3RhdGUnO1xuaW1wb3J0IHsgUGFya01hbmFnZXJTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvcGFyay1tYW5hZ2VyL3BhcmstbWFuYWdlci5zdGF0ZSc7XG5pbXBvcnQgeyBBZ2dyZWdhdGVkU3RhdHVzLCBCYXJyaWVyRHRvLCBCYXJyaWVyU3RhdGUsIENoYW5nZURldmljZUFjY2Vzc01vZGVSZW1vdGVDb21tYW5kRGF0YSwgQ2xvc2VHYXRlQ29udGludW91c2x5UmVtb3RlQ29tbWFuZERhdGEsIENsb3NlR2F0ZVJlbW90ZUNvbW1hbmREYXRhLCBDbG9zZVBheW1lbnRTY3JlZW5SZW1vdGVDb21tYW5kRGF0YSwgQ2xvc2VUaWNrZXRGb3JJU0ZSZW1vdGVDb21tYW5kRGF0YSwgQ29tbWFuZFJlcGx5SHR0cFJlc3BvbnNlRGF0YSwgQ29tbVByb3RvY29sVHlwZSwgRGVsaXZlckJ1bmRsZUJpbGxzUmVtb3RlQ29tbWFuZERhdGEsIERldmljZUR0bywgRGV2aWNlU3RhdHVzRHRvLCBEZXZpY2VUeXBlLCBFamVjdEphbW1lZFRpY2tldFJlbW90ZUNvbW1hbmREYXRhLCBGYWNpbGl0eUR0bywgSG9sZFJlbGF5UmVtb3RlQ29tbWFuZERhdGEsIEluc2VydFZpcnR1YWxUaWNrZXRSZW1vdGVDb21tYW5kRGF0YSwgTG9ja0Nhc2hSZWdpc3RlclJlbW90ZUNvbW1hbmREYXRhLCBMUFJNYXRjaENhc2VEdG8sIE9wZW5HYXRlQ29udGludW91c2x5UmVtb3RlQ29tbWFuZERhdGEsIE9wZW5SZWxheVJlbW90ZUNvbW1hbmREYXRhLCBQcmludFRpY2tldFJlbW90ZUNvbW1hbmREYXRhLCBSZW1vdGVDb21tYW5kQmFzZSwgUmVtb3RlQ29tbWFuZERldmljZVBheWxvYWQsIFJlbW90ZUNvbW1hbmRUeXBlcywgUmVzZXRCaWxsRGlzcGVuc2VyUmVtb3RlQ29tbWFuZERhdGEsIFJlc2V0RGV2aWNlQWNjZXNzTW9kZVJlbW90ZUNvbW1hbmREYXRhLCBSZXN0YXJ0RGV2aWNlUmVtb3RlQ29tbWFuZERhdGEsIFNldFByaWNlUmVtb3RlQ29tbWFuZERhdGEsIFNldFJhdGVSZW1vdGVDb21tYW5kRGF0YSwgU3dhbGxvd0phbW1lZFRpY2tldFJlbW90ZUNvbW1hbmREYXRhLCBTd2FsbG93VW5pdFN0YXR1cywgU3dhbGxvd1VuaXRUeXBlLCBUcmlnZ2VyTHByUmVtb3RlQ29tbWFuZERhdGEsIFR5cGVDYXN0LCBVbmxvY2tEb29yUmVtb3RlQ29tbWFuZERhdGEsIFZhbGlkYXRlUmVtb3RlQ29tbWFuZERhdGEsIFZlbmRHYXRlUmVtb3RlQ29tbWFuZERhdGEgfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L2VkZ2Utc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IGlzRGV2aWNlQWN0aXZlIH0gZnJvbSAnLi4vdXRpbHMvYWN0aXZlLWRldmljZS1zdGF0dXMudXRpbCc7XG5pbXBvcnQgeyBBcHBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL2FwcC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlbW90ZUNvbW1hbmRTZXJ2aWNlIH0gZnJvbSAnLi9yZW1vdGUtY29tbWFuZC5zZXJ2aWNlJztcbmltcG9ydCB7IEhhbmRsaW5nQnlVc2VyRHRvLCBQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3IgfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRGV2aWNlU2VydmljZSB7XG5cbiAgQE91dHB1dCgpIGxvYWRpbmdDb21tYW5kJDogRXZlbnRFbWl0dGVyPHsgY29tbWFuZFR5cGU6IG51bWJlciwgaXNMb2FkaW5nOiBib29sZWFuIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbW1hbmRUeXBlOiBudW1iZXIsIGlzTG9hZGluZzogYm9vbGVhbiB9PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdG9yZTogU3RvcmUsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwdWJsaWMgcmVtb3RlQ29tbWFuZFNlcnZpY2U6IFJlbW90ZUNvbW1hbmRTZXJ2aWNlLFxuICAgIHB1YmxpYyBhcHBTZXR0aW5nc1NlcnZpY2U6IEFwcFNldHRpbmdzU2VydmljZSxcbiAgICBwdWJsaWMgY29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2U6IENvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlKSB7XG4gIH1cblxuICBwdWJsaWMgc2VuZENvbW1hbmQoY29tbWFuZFR5cGU6IFJlbW90ZUNvbW1hbmRUeXBlcywgZGV2aWNlSWQ6IG51bWJlciwgb3B0aW9uczogYW55ID0ge30sIGFuYWx5dGljc1BheWxvYWQ6IFRyYWNlUGF5bG9hZCA9IHt9KTogT2JzZXJ2YWJsZTx7IHBheWxvYWREYXRhOiBSZW1vdGVDb21tYW5kQmFzZSwgcmVzcG9uc2U6IENvbW1hbmRSZXBseUh0dHBSZXNwb25zZURhdGEgfT4ge1xuICAgIGNvbnN0IGd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgY29uc3QgZGV2aWNlOiBEZXZpY2VEdG8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFBhcmtNYW5hZ2VyU3RhdGUuYnlJZClbZGV2aWNlSWRdO1xuICAgIG9wdGlvbnMuZGV2aWNlU3RhdHVzID0gZGV2aWNlLmRldmljZVN0YXR1cztcbiAgICBjb25zdCBjbWREYXRhRHRvJCA9IHRoaXMuZ2V0RGV2aWNlUmVtb3RlQ29tbWFuZERhdGEoY29tbWFuZFR5cGUsIG9wdGlvbnMpXG4gICAgICAucGlwZSh0aGlzLnByb2NjZXNEZXZpY2VQYXlsb2FkRGF0YShkZXZpY2VJZCkpO1xuXG4gICAgY29uc3QgZGV2aWNlUGF5TG9hZCA9IG5ldyBSZW1vdGVDb21tYW5kRGV2aWNlUGF5bG9hZCgpO1xuICAgIGRldmljZVBheUxvYWQubmFtZSA9IGRldmljZT8ubmFtZTtcbiAgICBkZXZpY2VQYXlMb2FkLmlkID0gZGV2aWNlSWQ7XG5cbiAgICByZXR1cm4gdGhpcy5yZW1vdGVDb21tYW5kU2VydmljZS5zZW5kKGNtZERhdGFEdG8kLCBndWlkLCBkZXZpY2VQYXlMb2FkLCBhbmFseXRpY3NQYXlsb2FkKS5waXBlKHRoaXMuc3RvcExvYWRpbmdDb21tYW5kKGNvbW1hbmRUeXBlKSk7XG4gIH1cblxuICBwdWJsaWMgc2VuZENvbW1hbmRXaXRoU25hY2tEYXRhKGNvbW1hbmRUeXBlOiBSZW1vdGVDb21tYW5kVHlwZXMsIGRldmljZUlkOiBudW1iZXIsIG9wdGlvbnM6IGFueSA9IHt9LCBhbmFseXRpY3NQYXlsb2FkOiBUcmFjZVBheWxvYWQgPSB7fSk6XG4gICAgT2JzZXJ2YWJsZTx7IHBheWxvYWREYXRhOiBSZW1vdGVDb21tYW5kQmFzZSwgcmVzcG9uc2U6IENvbW1hbmRSZXBseUh0dHBSZXNwb25zZURhdGEgfT4ge1xuICAgIGlmIChSZW1vdGVDb21tYW5kVHlwZXNbY29tbWFuZFR5cGVdKSB7XG4gICAgICBjb25zdCBndWlkOiBzdHJpbmcgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgICBjb25zdCBkZXZpY2U6IERldmljZUR0byA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoUGFya01hbmFnZXJTdGF0ZS5ieUlkKVtkZXZpY2VJZF07XG4gICAgICBjb25zdCBwYXJrOiBGYWNpbGl0eUR0byA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mYWNpbGl0eURpY3Rpb25hcnkpW2d1aWRdW2RldmljZS5wYXJrSURdO1xuICAgICAgY29uc3QgdGlja2V0SWRlbnRpZmllciA9IG9wdGlvbnM/LnRpY2tldElkZW50aWZpZXI7XG4gICAgICBjb25zdCBlbnRpdHlEaXNwbGF5TmFtZSA9IHRpY2tldElkZW50aWZpZXI/LmVudGl0eURpc3BsYXlOYW1lO1xuICAgICAgY29uc3QgZW50aXR5VHlwZVRyYW5zbGF0ZSA9IHRpY2tldElkZW50aWZpZXI/LmVudGl0eVR5cGVUcmFuc2xhdGU7XG5cbiAgICAgIGNvbnN0IGNvbmZpZzogQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgbWVzc2FnZXM6IFt7XG4gICAgICAgICAgdmFsdWU6IGAke2VudGl0eVR5cGVUcmFuc2xhdGV9ICR7ZW50aXR5RGlzcGxheU5hbWV9YCxcbiAgICAgICAgICBjbGFzczogZW50aXR5RGlzcGxheU5hbWUgPyBOb3RpZmljYXRpb25DbGFzcy5zdWJUaXRsZSA6IE5vdGlmaWNhdGlvbkNsYXNzLm5vbmUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB2YWx1ZTogYCR7ZGV2aWNlPy5uYW1lfSB8ICMke2RldmljZT8uY29tbUlEfWAsXG4gICAgICAgICAgY2xhc3M6IGRldmljZT8ubmFtZSAmJiBkZXZpY2U/LmNvbW1JRCA/IE5vdGlmaWNhdGlvbkNsYXNzLnN1YlRpdGxlIDogTm90aWZpY2F0aW9uQ2xhc3Mubm9uZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBgJHtwYXJrPy5uYW1lfWAsXG4gICAgICAgICAgY2xhc3M6IHBhcmsgPyBOb3RpZmljYXRpb25DbGFzcy5ib2R5IDogTm90aWZpY2F0aW9uQ2xhc3Mubm9uZSxcbiAgICAgICAgfV0sXG4gICAgICAgIGNvbW1hbmQ6IHRoaXMucmVtb3RlQ29tbWFuZFNlcnZpY2UuZ2V0UmVtb3RlQ29tbWFuZFRleHQoY29tbWFuZFR5cGUsIG9wdGlvbnMpLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHRoaXMuc2VuZENvbW1hbmQoY29tbWFuZFR5cGUsIGRldmljZUlkLCBvcHRpb25zLCBhbmFseXRpY3NQYXlsb2FkKVxuICAgICAgICAucGlwZSh0aGlzLmNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLmRpc3BsYXkoY29uZmlnKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTG9zdFRpY2tldChndWlkOiBzdHJpbmcsIHBhcmtJZDogbnVtYmVyLCBwYXJrTmFtZTogc3RyaW5nLCByZWFkZXJJZDogbnVtYmVyLCBkZXZpY2VOYW1lOiBzdHJpbmcsIGRldmljZUlkOiBudW1iZXIsIGhhbmRsaW5nQnlVc2VyOiBIYW5kbGluZ0J5VXNlckR0bywgZXZlbnREZXNjcmlwdGlvbjogUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLCBhbmFseXRpY3NQYXlsb2FkOiBUcmFjZVBheWxvYWQgPSB7fSkge1xuICAgIGNvbnN0IGNvbmZpZzogQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZyA9IHtcbiAgICAgIG1lc3NhZ2VzOiBbe1xuICAgICAgICB2YWx1ZTogYCR7ZGV2aWNlTmFtZX0gfCAjJHtyZWFkZXJJZH1gLFxuICAgICAgICBjbGFzczogTm90aWZpY2F0aW9uQ2xhc3Muc3ViVGl0bGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB2YWx1ZTogYCR7cGFya05hbWV9YCxcbiAgICAgICAgY2xhc3M6IE5vdGlmaWNhdGlvbkNsYXNzLmJvZHksXG4gICAgICB9XSxcbiAgICAgIGNvbW1hbmQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmxvc3RfdGlja2V0KVxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5nZXRMb3N0VGlja2V0TW9kYWxDb21tYW5kKGd1aWQsIHBhcmtJZCwgcGFya05hbWUsIHJlYWRlcklkLCBkZXZpY2VOYW1lLCBkZXZpY2VJZCwgaGFuZGxpbmdCeVVzZXIsIGV2ZW50RGVzY3JpcHRpb24pLnBpcGUoc3dpdGNoTWFwKG1vZGFsRGF0YSA9PiB7XG4gICAgICBpZiAoIW1vZGFsRGF0YSkge1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNtZERhdGFEdG86IENtZERhdGFEdG8gPSB7XG4gICAgICAgIGNtZFR5cGU6IG1vZGFsRGF0YS5jb21tYW5kVHlwZU92ZXJyaWRlLFxuICAgICAgICBjbWREdG86IG5ldyBSZW1vdGVDb21tYW5kQmFzZSgpXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzdWJPcGVyYXRpb24gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuaGFuZGxlQ29tbWFuZFR5cGVPdmVycmlkZU5hbWUobW9kYWxEYXRhLmNvbW1hbmRUeXBlT3ZlcnJpZGUpKTtcbiAgICAgIGNvbmZpZy5jb21tYW5kID0gYCR7c3ViT3BlcmF0aW9ufSAoJHtjb25maWcuY29tbWFuZH0pYDtcblxuICAgICAgY29uc3QgZGV2aWNlUGF5TG9hZCA9IG5ldyBSZW1vdGVDb21tYW5kRGV2aWNlUGF5bG9hZCgpO1xuICAgICAgZGV2aWNlUGF5TG9hZC5uYW1lID0gZGV2aWNlTmFtZTtcbiAgICAgIGRldmljZVBheUxvYWQuaWQgPSBkZXZpY2VJZDtcblxuICAgICAgcmV0dXJuIHRoaXMucmVtb3RlQ29tbWFuZFNlcnZpY2VcbiAgICAgICAgLnNlbmQob2YodGhpcy5oYW5kbGVUaWNrZXRDb21tYW5kKGNtZERhdGFEdG8sIG1vZGFsRGF0YSkpLnBpcGUodGhpcy5wcm9jY2VzRGV2aWNlUGF5bG9hZERhdGEoZGV2aWNlSWQsIHBhcmtJZCkpLCBndWlkLCBkZXZpY2VQYXlMb2FkLCBhbmFseXRpY3NQYXlsb2FkKVxuICAgICAgICAucGlwZSh0aGlzLmNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLmRpc3BsYXkoY29uZmlnKSkucGlwZSh0aGlzLnN0b3BMb2FkaW5nQ29tbWFuZChjbWREYXRhRHRvLmNtZFR5cGUpKTtcbiAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgb25McHJNaXNtYXRjaChndWlkOiBzdHJpbmcsIHBhcmtJZDogbnVtYmVyLCBwYXJrTmFtZTogc3RyaW5nLCByZWFkZXJJZDogbnVtYmVyLCBkZXZpY2VOYW1lOiBzdHJpbmcsIGRldmljZUlkOiBudW1iZXIsIGxwck1hdGNoQ2FzZTogTFBSTWF0Y2hDYXNlRHRvLCBoYW5kbGluZ0J5VXNlcjogSGFuZGxpbmdCeVVzZXJEdG8sIGV2ZW50RGVzY3JpcHRpb246IFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvciwgYW5hbHl0aWNzUGF5bG9hZDogVHJhY2VQYXlsb2FkID0ge30pIHtcbiAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBtZXNzYWdlczogW3tcbiAgICAgICAgdmFsdWU6IGAke2RldmljZU5hbWV9IHwgIyR7cmVhZGVySWR9YCxcbiAgICAgICAgY2xhc3M6IE5vdGlmaWNhdGlvbkNsYXNzLnN1YlRpdGxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IGAke3BhcmtOYW1lfWAsXG4gICAgICAgIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5ib2R5LFxuICAgICAgfV0sXG4gICAgICBjb21tYW5kOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5scHJfbWlzbWF0Y2gpXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmdldExwck1pc21hdGNoTW9kYWxDb21tYW5kKGd1aWQsIHBhcmtJZCwgcGFya05hbWUsIHJlYWRlcklkLCBkZXZpY2VOYW1lLCBscHJNYXRjaENhc2UsIGhhbmRsaW5nQnlVc2VyLCBldmVudERlc2NyaXB0aW9uLCBkZXZpY2VJZCkucGlwZShzd2l0Y2hNYXAobW9kYWxEYXRhID0+IHtcbiAgICAgIGlmICghbW9kYWxEYXRhKSB7XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNtZERhdGFEdG86IENtZERhdGFEdG8gPSB7XG4gICAgICAgIGNtZFR5cGU6IG1vZGFsRGF0YS5jb21tYW5kVHlwZU92ZXJyaWRlLFxuICAgICAgICBjbWREdG86IG5ldyBSZW1vdGVDb21tYW5kQmFzZSgpLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc3ViT3BlcmF0aW9uID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmhhbmRsZUNvbW1hbmRUeXBlT3ZlcnJpZGVOYW1lKG1vZGFsRGF0YS5jb21tYW5kVHlwZU92ZXJyaWRlKSk7XG4gICAgICBjb25maWcuY29tbWFuZCA9IGAke3N1Yk9wZXJhdGlvbn0gKCR7Y29uZmlnLmNvbW1hbmR9KWA7XG5cbiAgICAgIGNvbnN0IGRldmljZVBheUxvYWQgPSBuZXcgUmVtb3RlQ29tbWFuZERldmljZVBheWxvYWQoKTtcbiAgICAgIGRldmljZVBheUxvYWQubmFtZSA9IGRldmljZU5hbWU7XG4gICAgICBkZXZpY2VQYXlMb2FkLmlkID0gZGV2aWNlSWQ7XG5cbiAgICAgIHJldHVybiB0aGlzLnJlbW90ZUNvbW1hbmRTZXJ2aWNlXG4gICAgICAgIC5zZW5kKG9mKHRoaXMuaGFuZGxlVGlja2V0Q29tbWFuZChjbWREYXRhRHRvLCBtb2RhbERhdGEpKS5waXBlKHRoaXMucHJvY2Nlc0RldmljZVBheWxvYWREYXRhKGRldmljZUlkLCBwYXJrSWQpKSwgZ3VpZCwgZGV2aWNlUGF5TG9hZCwgYW5hbHl0aWNzUGF5bG9hZClcbiAgICAgICAgLnBpcGUodGhpcy5jb21tYW5kTm90aWZpY2F0aW9uU2VydmljZS5kaXNwbGF5KGNvbmZpZykpLnBpcGUodGhpcy5zdG9wTG9hZGluZ0NvbW1hbmQoY21kRGF0YUR0by5jbWRUeXBlKSk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHN0b3BMb2FkaW5nQ29tbWFuZDxUPihjb21tYW5kVHlwZTogUmVtb3RlQ29tbWFuZFR5cGVzKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+IHtcbiAgICByZXR1cm4gJGlucHV0ID0+ICRpbnB1dC5waXBlKFxuICAgICAgdGFwKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZ0NvbW1hbmQkLm5leHQoeyBjb21tYW5kVHlwZSwgaXNMb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb21tYW5kJC5uZXh0KHsgY29tbWFuZFR5cGUsIGlzTG9hZGluZzogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRNb2RhbENvbW1hbmQoY29tbWFuZFR5cGU6IFJlbW90ZUNvbW1hbmRUeXBlcywgZGF0YTogQ29uZmlnRGF0YSk6IE9ic2VydmFibGU8YW55PjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldExvc3RUaWNrZXRNb2RhbENvbW1hbmQoZ3VpZDogc3RyaW5nLCBwYXJrSWQ6IG51bWJlciwgcGFya05hbWU6IHN0cmluZywgcmVhZGVySWQ6IG51bWJlciwgZGV2aWNlTmFtZTogc3RyaW5nLCBkZXZpY2VJZDogbnVtYmVyLCBoYW5kbGluZ0J5VXNlcjogSGFuZGxpbmdCeVVzZXJEdG8sIGV2ZW50RGVzY3JpcHRpb246IFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvcik6IE9ic2VydmFibGU8TG9zdFRpY2tldERpYWxvZ0RhdGE+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0THByTWlzbWF0Y2hNb2RhbENvbW1hbmQoZ3VpZDogc3RyaW5nLCBwYXJrSWQ6IG51bWJlciwgcGFya05hbWU6IHN0cmluZywgcmVhZGVySWQ6IG51bWJlciwgZGV2aWNlTmFtZTogc3RyaW5nLCBscHJNYXRjaENhc2U6IExQUk1hdGNoQ2FzZUR0bywgaGFuZGxpbmdCeVVzZXI6IEhhbmRsaW5nQnlVc2VyRHRvLCBldmVudERlc2NyaXB0aW9uOiBQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3IsIGRldmljZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPExwck1pc21hdGNoRGlhbG9nRGF0YT47XG5cbiAgcHJvdGVjdGVkIGdldERldmljZVJlbW90ZUNvbW1hbmREYXRhKGNvbW1hbmRUeXBlOiBSZW1vdGVDb21tYW5kVHlwZXMsIG9wdGlvbnM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxDbWREYXRhRHRvPiB7XG4gICAgY29uc3QgY21kRGF0YUR0bzogQ21kRGF0YUR0byA9IHtcbiAgICAgIGNtZFR5cGU6IGNvbW1hbmRUeXBlLFxuICAgICAgY21kRHRvOiBuZXcgUmVtb3RlQ29tbWFuZEJhc2UoKSxcbiAgICB9O1xuICAgIGNvbnN0IGRhdGE6IENvbmZpZ0RhdGEgPSB7IGNvbW1hbmRUeXBlLCB0aWNrZXRJZGVudGlmaWVyOiBvcHRpb25zPy50aWNrZXRJZGVudGlmaWVyLCBvcHRpb25zIH07XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmdldE1vZGFsQ29tbWFuZChjb21tYW5kVHlwZSwgZGF0YSk7XG4gICAgc3dpdGNoIChjb21tYW5kVHlwZSkge1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuVmVuZEdhdGU6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKFxuICAgICAgICAgIG1hcChtb2RhbERhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKCFtb2RhbERhdGEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHZlbmRHYXRlQ29tbWFuZCA9IG5ldyBWZW5kR2F0ZVJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgICB2ZW5kR2F0ZUNvbW1hbmQudGlja2V0SWQgPSBvcHRpb25zLnRpY2tldElkZW50aWZpZXI/LnRpY2tldElkO1xuICAgICAgICAgICAgdmVuZEdhdGVDb21tYW5kLnRyYW5zcG9ydFJlYXNvbiA9IG1vZGFsRGF0YS5yZWFzb247XG4gICAgICAgICAgICB2ZW5kR2F0ZUNvbW1hbmQuZGVzY3JpcHRpb24gPSBtb2RhbERhdGEuZGVzY3JpcHRpb247XG4gICAgICAgICAgICB2ZW5kR2F0ZUNvbW1hbmQudHlwZU9mUGFya2VyID0gbW9kYWxEYXRhLnR5cGUgfHwgb3B0aW9ucy50eXBlIHx8IFR5cGVDYXN0Lklnbm9yZWQ7XG4gICAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHZlbmRHYXRlQ29tbWFuZDtcblxuICAgICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuQ2xvc2VHYXRlOlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNsb3NlR2F0ZUNvbW1hbmQgPSBuZXcgQ2xvc2VHYXRlUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IGNsb3NlR2F0ZUNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuU2V0UHJpY2U6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcChtb2RhbERhdGEgPT4ge1xuICAgICAgICAgIGlmICghbW9kYWxEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzZXRQcmljZUNvbW1hbmQgPSBuZXcgU2V0UHJpY2VSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIHNldFByaWNlQ29tbWFuZC50aWNrZXRJZCA9IG9wdGlvbnMudGlja2V0SWRlbnRpZmllcj8udGlja2V0SWQ7XG4gICAgICAgICAgc2V0UHJpY2VDb21tYW5kLnByaWNlID0gbW9kYWxEYXRhLnByaWNlO1xuICAgICAgICAgIHNldFByaWNlQ29tbWFuZC50cmFuc3BvcnRSZWFzb24gPSBtb2RhbERhdGEucmVhc29uO1xuICAgICAgICAgIHNldFByaWNlQ29tbWFuZC5kZXNjcmlwdGlvbiA9IG1vZGFsRGF0YS5kZXNjcmlwdGlvbjtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHNldFByaWNlQ29tbWFuZDtcblxuICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5TZXRSYXRlOlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAobW9kYWxEYXRhID0+IHtcbiAgICAgICAgICBpZiAoIW1vZGFsRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2V0UmF0ZUNvbW1hbmQgPSBuZXcgU2V0UmF0ZVJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgc2V0UmF0ZUNvbW1hbmQudGlja2V0SWQgPSBvcHRpb25zLnRpY2tldElkZW50aWZpZXI/LnRpY2tldElkO1xuICAgICAgICAgIHNldFJhdGVDb21tYW5kLnJhdGVJZCA9IG1vZGFsRGF0YS5yYXRlSWQ7XG4gICAgICAgICAgc2V0UmF0ZUNvbW1hbmQudHJhbnNwb3J0UmVhc29uID0gbW9kYWxEYXRhLnJlYXNvbjtcbiAgICAgICAgICBzZXRSYXRlQ29tbWFuZC5kZXNjcmlwdGlvbiA9IG1vZGFsRGF0YS5kZXNjcmlwdGlvbjtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHNldFJhdGVDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLlZhbGlkYXRlOlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAobW9kYWxEYXRhID0+IHtcbiAgICAgICAgICBpZiAoIW1vZGFsRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdmFsaWRhdGVDb21tYW5kID0gbmV3IFZhbGlkYXRlUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICB2YWxpZGF0ZUNvbW1hbmQudGlja2V0SWQgPSBvcHRpb25zLnRpY2tldElkZW50aWZpZXI/LnRpY2tldElkO1xuICAgICAgICAgIHZhbGlkYXRlQ29tbWFuZC5wcmljZSA9IG1vZGFsRGF0YS5wcmljZTtcbiAgICAgICAgICB2YWxpZGF0ZUNvbW1hbmQucHJpbnROb3RlID0gbW9kYWxEYXRhLnByaW50Tm90ZTtcbiAgICAgICAgICB2YWxpZGF0ZUNvbW1hbmQudHJhbnNwb3J0UmVhc29uID0gbW9kYWxEYXRhLnJlYXNvbjtcbiAgICAgICAgICB2YWxpZGF0ZUNvbW1hbmQuZGVzY3JpcHRpb24gPSBtb2RhbERhdGEuZGVzY3JpcHRpb247XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSB2YWxpZGF0ZUNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuUmVzdG9yZVRpY2tldDpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKG1vZGFsRGF0YSA9PiB7XG4gICAgICAgICAgaWYgKCFtb2RhbERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVRpY2tldENvbW1hbmQoY21kRGF0YUR0bywgbW9kYWxEYXRhKTtcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuQ2hhbmdlRGV2aWNlQWNjZXNzTW9kZTpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGFuZ2VEZXZpY2VBY2Nlc3NNb2RlQ29tbWFuZCA9IG5ldyBDaGFuZ2VEZXZpY2VBY2Nlc3NNb2RlUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjaGFuZ2VEZXZpY2VBY2Nlc3NNb2RlQ29tbWFuZC5kZXZpY2VBY2Nlc3NNb2RlID0gb3B0aW9ucy5yZW1vdGVDbWROYW1lO1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gY2hhbmdlRGV2aWNlQWNjZXNzTW9kZUNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuSG9sZFJlbGF5OlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGhvbGRSZWxheUNvbW1hbmQgPSBuZXcgSG9sZFJlbGF5UmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBob2xkUmVsYXlDb21tYW5kLnJlbGF5SW5kZXggPSBvcHRpb25zLnJlbGF5SW5kZXg7XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBob2xkUmVsYXlDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLk9wZW5SZWxheTpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBvcGVuUmVsYXlDb21tYW5kID0gbmV3IE9wZW5SZWxheVJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgb3BlblJlbGF5Q29tbWFuZC5yZWxheUluZGV4ID0gb3B0aW9ucy5yZWxheUluZGV4O1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gb3BlblJlbGF5Q29tbWFuZDtcblxuICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5SZXNldERldmljZUFjY2Vzc01vZGU6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzZXREZXZpY2VBY2Nlc3NNb2RlQ29tbWFuZCA9IG5ldyBSZXNldERldmljZUFjY2Vzc01vZGVSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gcmVzZXREZXZpY2VBY2Nlc3NNb2RlQ29tbWFuZDtcblxuICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5SZXNldEJpbGxEaXNwZW5zZXI6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzZXRCaWxsRGlzcGVuc2VyQ29tbWFuZCA9IG5ldyBSZXNldEJpbGxEaXNwZW5zZXJSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gcmVzZXRCaWxsRGlzcGVuc2VyQ29tbWFuZDtcblxuICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5UcmlnZ2VyTFBSTW9kdWxlOlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRyaWdnZXJMcHJDb21tYW5kID0gbmV3IFRyaWdnZXJMcHJSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gdHJpZ2dlckxwckNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuRWplY3RKYW1tZWRUaWNrZXQ6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWplY3RKYW1tZWRUaWNrZXRDb21tYW5kID0gbmV3IEVqZWN0SmFtbWVkVGlja2V0UmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IGVqZWN0SmFtbWVkVGlja2V0Q29tbWFuZDtcblxuICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5Td2FsbG93SmFtbWVkVGlja2V0OlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN3YWxsb3dKYW1tZWRUaWNrZXRDb21tYW5kID0gbmV3IFN3YWxsb3dKYW1tZWRUaWNrZXRSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gc3dhbGxvd0phbW1lZFRpY2tldENvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuRGVsaXZlckJ1bmRsZUJpbGxzOlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlbGl2ZXJCdW5kbGVCaWxsc0NvbW1hbmQgPSBuZXcgRGVsaXZlckJ1bmRsZUJpbGxzUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IGRlbGl2ZXJCdW5kbGVCaWxsc0NvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuTG9ja0Nhc2hSZWdpc3RlcjpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBsb2NrQ2FzaFJlZ2lzdGVyQ29tbWFuZCA9IG5ldyBMb2NrQ2FzaFJlZ2lzdGVyUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IGxvY2tDYXNoUmVnaXN0ZXJDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLk9wZW5HYXRlQ29udGludW91c2x5OlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9wZW5HYXRlQ29udGludW91c2x5Q29tbWFuZCA9IG5ldyBPcGVuR2F0ZUNvbnRpbnVvdXNseVJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBvcGVuR2F0ZUNvbnRpbnVvdXNseUNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuQ2xvc2VHYXRlQ29udGludW91c2x5OlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNsb3NlR2F0ZUNvbnRpbnVvdXNseUNvbW1hbmQgPSBuZXcgQ2xvc2VHYXRlQ29udGludW91c2x5UmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IGNsb3NlR2F0ZUNvbnRpbnVvdXNseUNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuUmVzdGFydERldmljZTpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKG1vZGFsRGF0YSA9PiB7XG4gICAgICAgICAgaWYgKCFtb2RhbERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHJlc3RhcnREZXZpY2VDb21tYW5kID0gbmV3IFJlc3RhcnREZXZpY2VSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gcmVzdGFydERldmljZUNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuVW5sb2NrRG9vcjpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKG1vZGFsRGF0YSA9PiB7XG4gICAgICAgICAgaWYgKCFtb2RhbERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHVubG9ja0Rvb3JDb21tYW5kID0gbmV3IFVubG9ja0Rvb3JSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIHVubG9ja0Rvb3JDb21tYW5kLnBhc3N3b3JkID0gbW9kYWxEYXRhLnBhc3N3b3JkO1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gdW5sb2NrRG9vckNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuQ2xvc2VUaWNrZXRGb3JJU0Y6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcChtb2RhbERhdGEgPT4ge1xuICAgICAgICAgIGlmICghbW9kYWxEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjbG9zZVRpY2tldEZvcklTRkNvbW1hbmQgPSBuZXcgQ2xvc2VUaWNrZXRGb3JJU0ZSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIGNsb3NlVGlja2V0Rm9ySVNGQ29tbWFuZC5kcml2ZXJMaWNlbnNlID0gbW9kYWxEYXRhLmRyaXZlckxpY2Vuc2U7XG4gICAgICAgICAgY2xvc2VUaWNrZXRGb3JJU0ZDb21tYW5kLmZpcnN0TmFtZSA9IG1vZGFsRGF0YS5maXJzdE5hbWU7XG4gICAgICAgICAgY2xvc2VUaWNrZXRGb3JJU0ZDb21tYW5kLmxhc3ROYW1lID0gbW9kYWxEYXRhLmxhc3ROYW1lO1xuICAgICAgICAgIGNsb3NlVGlja2V0Rm9ySVNGQ29tbWFuZC5hZGRyZXNzID0gbW9kYWxEYXRhLmFkZHJlc3M7XG4gICAgICAgICAgY2xvc2VUaWNrZXRGb3JJU0ZDb21tYW5kLmVtYWlsID0gbW9kYWxEYXRhLmVtYWlsO1xuICAgICAgICAgIGNsb3NlVGlja2V0Rm9ySVNGQ29tbWFuZC5waG9uZSA9IG1vZGFsRGF0YS5waG9uZTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IGNsb3NlVGlja2V0Rm9ySVNGQ29tbWFuZDtcblxuICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICB9KSk7XG5cbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkNsb3NlUGF5bWVudFNjcmVlbjpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjbG9zZVBheW1lbnRTY3JlZW5Db21tYW5kID0gbmV3IENsb3NlUGF5bWVudFNjcmVlblJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBjbG9zZVBheW1lbnRTY3JlZW5Db21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jY2VzRGV2aWNlUGF5bG9hZERhdGEoZGV2aWNlSWQ6IG51bWJlciwgcGFya0lkPzogbnVtYmVyKTogT3BlcmF0b3JGdW5jdGlvbjxDbWREYXRhRHRvLCBDbWREYXRhRHRvPiB7XG4gICAgcmV0dXJuICRpbnB1dCA9PiAkaW5wdXQucGlwZShcbiAgICAgIG1hcCgoY21kRGF0YUR0bzogQ21kRGF0YUR0bykgPT4ge1xuICAgICAgICBpZiAoY21kRGF0YUR0bykge1xuICAgICAgICAgIHRoaXMubG9hZGluZ0NvbW1hbmQkLm5leHQoeyBjb21tYW5kVHlwZTogY21kRGF0YUR0by5jbWRUeXBlLCBpc0xvYWRpbmc6IHRydWUgfSk7XG5cbiAgICAgICAgICAvLyBIYW5kbGUgUGFya0lkXG4gICAgICAgICAgaWYgKHBhcmtJZCkge1xuICAgICAgICAgICAgY21kRGF0YUR0by5jbWREdG8ucGFya0lkID0gcGFya0lkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBndWlkOiBzdHJpbmcgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgICAgICAgICBjb25zdCBkZXZpY2U6IERldmljZUR0byA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoUGFya01hbmFnZXJTdGF0ZS5ieUlkKVtkZXZpY2VJZF07XG4gICAgICAgICAgICBjb25zdCBwYXJrOiBGYWNpbGl0eUR0byA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mYWNpbGl0eURpY3Rpb25hcnkpW2d1aWRdW2RldmljZS5wYXJrSURdO1xuICAgICAgICAgICAgY21kRGF0YUR0by5jbWREdG8ucGFya0lkID0gcGFyay5pZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBIYW5kbGUgUmVhZGVySWRcbiAgICAgICAgICBpZiAoIWNtZERhdGFEdG8uY21kRHRvLnJlYWRlcklkKSB7XG4gICAgICAgICAgICBjb25zdCBkZXZpY2U6IERldmljZUR0byA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoUGFya01hbmFnZXJTdGF0ZS5ieUlkKVtkZXZpY2VJZF07XG4gICAgICAgICAgICBjbWREYXRhRHRvLmNtZER0by5yZWFkZXJJZCA9IGRldmljZT8uY29tbUlEO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgIH1cbiAgICAgICkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVRpY2tldENvbW1hbmQoY21kRGF0YUR0bzogQ21kRGF0YUR0bywgbW9kYWxEYXRhOiBhbnkpOiBDbWREYXRhRHRvIHtcbiAgICBjbWREYXRhRHRvLmNtZFR5cGUgPSBtb2RhbERhdGEuY29tbWFuZFR5cGVPdmVycmlkZSB8fCBjbWREYXRhRHRvLmNtZFR5cGU7XG4gICAgc3dpdGNoIChjbWREYXRhRHRvLmNtZFR5cGUpIHtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLlNldFByaWNlOlxuICAgICAgICBjb25zdCBzZXRQcmljZUNvbW1hbmQgPSBuZXcgU2V0UHJpY2VSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICBzZXRQcmljZUNvbW1hbmQucHJpY2UgPSBtb2RhbERhdGEucHJpY2U7XG4gICAgICAgIHNldFByaWNlQ29tbWFuZC50cmFuc3BvcnRSZWFzb24gPSBtb2RhbERhdGEucmVhc29uO1xuICAgICAgICBzZXRQcmljZUNvbW1hbmQuZGVzY3JpcHRpb24gPSBtb2RhbERhdGEuZGVzY3JpcHRpb247XG4gICAgICAgIHNldFByaWNlQ29tbWFuZC5yZWFkZXJJZCA9IG1vZGFsRGF0YS5yZWFkZXJJZE92ZXJyaWRlO1xuICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHNldFByaWNlQ29tbWFuZDtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLlByaW50VGlja2V0OlxuICAgICAgICBjb25zdCBwcmludFRpY2tldENvbW1hbmQgPSBuZXcgUHJpbnRUaWNrZXRSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICBwcmludFRpY2tldENvbW1hbmQudGlja2V0SWQgPSBtb2RhbERhdGEudGlja2V0SWQ7XG4gICAgICAgIHByaW50VGlja2V0Q29tbWFuZC50cmFuc3BvcnRSZWFzb24gPSBtb2RhbERhdGEucmVhc29uO1xuICAgICAgICBwcmludFRpY2tldENvbW1hbmQuZGVzY3JpcHRpb24gPSBtb2RhbERhdGEuZGVzY3JpcHRpb247XG4gICAgICAgIHByaW50VGlja2V0Q29tbWFuZC5yZWFkZXJJZCA9IG1vZGFsRGF0YS5yZWFkZXJJZE92ZXJyaWRlO1xuICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHByaW50VGlja2V0Q29tbWFuZDtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkluc2VydFZpcnR1YWxUaWNrZXQ6XG4gICAgICAgIGNvbnN0IGluc2VydFZpcnR1YWxUaWNrZXRDb21tYW5kID0gbmV3IEluc2VydFZpcnR1YWxUaWNrZXRSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICBpbnNlcnRWaXJ0dWFsVGlja2V0Q29tbWFuZC50aWNrZXRJZCA9IG1vZGFsRGF0YS50aWNrZXRJZDtcbiAgICAgICAgaW5zZXJ0VmlydHVhbFRpY2tldENvbW1hbmQudHJhbnNwb3J0UmVhc29uID0gbW9kYWxEYXRhLnJlYXNvbjtcbiAgICAgICAgaW5zZXJ0VmlydHVhbFRpY2tldENvbW1hbmQuZGVzY3JpcHRpb24gPSBtb2RhbERhdGEuZGVzY3JpcHRpb247XG4gICAgICAgIGluc2VydFZpcnR1YWxUaWNrZXRDb21tYW5kLnJlYWRlcklkID0gbW9kYWxEYXRhLnJlYWRlcklkT3ZlcnJpZGU7XG4gICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gaW5zZXJ0VmlydHVhbFRpY2tldENvbW1hbmQ7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29tbWFuZFR5cGVPdmVycmlkZU5hbWUoY29tbWFuZFR5cGU6IFJlbW90ZUNvbW1hbmRUeXBlcyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChyZW1vdGVDb21tYW5kTG9jYWxpemF0aW9uTWFwLmhhcyhjb21tYW5kVHlwZSkpID8gcmVtb3RlQ29tbWFuZExvY2FsaXphdGlvbk1hcC5nZXQoY29tbWFuZFR5cGUpIDogTG9jYWxpemF0aW9uLnVua25vd247XG4gIH1cblxuICBwdWJsaWMgZ2V0RGV2aWNlQ29tbXVuaWNhdGlvblBlcmNlbnRhZ2VUZXh0KGRldmljZTogRGV2aWNlRHRvKSB7XG4gICAgbGV0IHZhbHVlID0gJy0nO1xuICAgIGlmICghaXNEZXZpY2VBY3RpdmUoZGV2aWNlKSkge1xuICAgICAgdmFsdWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KERldmljZUFjdGl2aXR5TGFiZWwuZ2V0KERldmljZUFjdGl2aXR5U3RhdHVzLkluYWN0aXZlKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU3RhdHVzU3VwcG9ydGVkKGRldmljZS50eXBlKSkge1xuICAgICAgdmFsdWUgPSBgJHtkZXZpY2UuZGV2aWNlU3RhdHVzPy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZSB8fCAwfSVgXG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldERldmljZUNvbUFnZ3JlZ2F0ZWRTdGF0dXMoZGV2aWNlU3RhdHVzRGF0YTogRGV2aWNlU3RhdHVzRHRvLCBpc0NvbVN0YXR1cyA9IGZhbHNlKTogQ29tQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgLy8gSWYgdGhlIGRldmljZSBpcyBhbiBNQyAoY29tbWlkID09PSAwKSB3ZSBuZWVkIHRvIHRyYW5zbGF0ZSB0aGUgUGFyayBjb25uZWN0aW9uIGluc3RlYWQgb2YgdGhlIERldmljZVxuICAgIGxldCBjb21BZ2dyZWdhdGVkU3RhdHVzOiBDb21BZ2dyZWdhdGVkU3RhdHVzO1xuXG4gICAgaWYgKGRldmljZVN0YXR1c0RhdGE/LmNvbW1JRCA9PT0gMCkge1xuICAgICAgY29uc3QgZ3VpZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcbiAgICAgIGNvbnN0IHBhcmtJZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoUGFya01hbmFnZXJTdGF0ZS5ieUlkKVtkZXZpY2VTdGF0dXNEYXRhLmRldmljZUlEXS5wYXJrSUQ7XG4gICAgICBjb25zdCBmYWNpbGl0eSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mYWNpbGl0eURpY3Rpb25hcnkpW2d1aWRdW3BhcmtJZF07XG4gICAgICBjb21BZ2dyZWdhdGVkU3RhdHVzID0gZmFjaWxpdHk/LmlzTWFpbkNvbnRyb2xsZXJDb25uZWN0ZWQgPyBDb21BZ2dyZWdhdGVkU3RhdHVzLk9rIDogQ29tQWdncmVnYXRlZFN0YXR1cy5Db21FcnJvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyBjYWxjdWxhdGVzIHRoZSBjb21tdW5pY2F0aW9uIHN0YXR1cyBvZiB0aGUgZGV2aWNlXG4gICAgICBpZiAoIWRldmljZVN0YXR1c0RhdGE/LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGNvbUFnZ3JlZ2F0ZWRTdGF0dXMgPSBDb21BZ2dyZWdhdGVkU3RhdHVzLkNvbUVycm9yO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQmV0d2VlblJhbmdlKGRldmljZVN0YXR1c0RhdGE/LmNvbW11bmljYXRpb25QZXJjZW50YWdlLnRvU3RyaW5nKCksIDEsIDcwKSkge1xuICAgICAgICBjb21BZ2dyZWdhdGVkU3RhdHVzID0gQ29tQWdncmVnYXRlZFN0YXR1cy5XYXJuaW5nO1xuICAgICAgfSBlbHNlIGlmIChkZXZpY2VTdGF0dXNEYXRhPy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZSA+PSA3MSkge1xuICAgICAgICBjb21BZ2dyZWdhdGVkU3RhdHVzID0gQ29tQWdncmVnYXRlZFN0YXR1cy5PaztcbiAgICAgIH1cblxuICAgICAgLy8gVGhpcyBhbHNvIGNhbGN1bGF0ZXMgdGhlIGRldmljZXMgQWdncmVnYXRlZFN0YXR1cyBhbmQgY29tcGFyZXMgdG8gdGhlIGNvbW11bmljYXRpb24gQWdncmVnYXRlZFN0YXR1c1xuICAgICAgLy8gSGlnaExldmVsIGxlZnQgaW5kaWNhdG9yLCBsaXN0L2dhbGFyeSB2aWV3XG4gICAgICBjb25zdCBkZXZpY2VBZ2dyZWdhdGVkU3RhdHVzID0gdGhpcy5jb252ZXJ0QWdncmVnYXRlZFN0YXR1c1RvQ29tQWdncmVnYXRlZFN0YXR1cyhkZXZpY2VTdGF0dXNEYXRhPy5hZ2dyZWdhdGVkU3RhdHVzKTtcbiAgICAgIGlmICghaXNDb21TdGF0dXMgJiYgZGV2aWNlQWdncmVnYXRlZFN0YXR1cyA+IGNvbUFnZ3JlZ2F0ZWRTdGF0dXMpIHtcbiAgICAgICAgY29tQWdncmVnYXRlZFN0YXR1cyA9IGRldmljZUFnZ3JlZ2F0ZWRTdGF0dXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuQ29tW0NvbUFnZ3JlZ2F0ZWRTdGF0dXNbY29tQWdncmVnYXRlZFN0YXR1c11dO1xuICB9XG5cbiAgcHVibGljIGdldERldmljZUNvbUFnZ3JlZ2F0ZWRTdGF0dXNDbGFzcyhkZXZpY2U6IERldmljZUR0byk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdHVzQ2xhc3Nlczogc3RyaW5nW10gPSBbJ2hpZ2gtbGV2ZWwnXTtcblxuICAgIGlmICghaXNEZXZpY2VBY3RpdmUoZGV2aWNlKSkge1xuICAgICAgc3RhdHVzQ2xhc3Nlcy5wdXNoKCdpbmFjdGl2ZScpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1N0YXR1c1N1cHBvcnRlZChkZXZpY2U/LnR5cGUpKSB7XG4gICAgICBjb25zdCBkZXZpY2VBZ2dyZWdhdGVkU3RhdHVzID0gdGhpcy5nZXREZXZpY2VDb21BZ2dyZWdhdGVkU3RhdHVzKGRldmljZS5kZXZpY2VTdGF0dXMpO1xuICAgICAgc3RhdHVzQ2xhc3Nlcy5wdXNoKENvbUFnZ3JlZ2F0ZWRTdGF0dXNbZGV2aWNlQWdncmVnYXRlZFN0YXR1c10udG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXR1c0NsYXNzZXMuam9pbihcIiBcIik7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNCZXR3ZWVuUmFuZ2UoaW5wdXQ6IHN0cmluZywgbWluVmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGlucHV0VmFsID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICByZXR1cm4gaW5wdXRWYWwgPj0gbWluVmFsdWUgJiYgaW5wdXRWYWwgPD0gbWF4VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGV2aWNlSW5kaWNhdGlvblN0YXR1c2VzKGRldmljZVN0YXR1czogRGV2aWNlU3RhdHVzRHRvKSB7XG4gICAgY29uc3Qgc3RhdHVzZXMgPSBbXTtcblxuICAgIGlmICh0aGlzLmlzQ2FyT25Mb29wKGRldmljZVN0YXR1cykpIHtcbiAgICAgIHN0YXR1c2VzLnB1c2goRGV2aWNlSW5kaWNhdGlvblN0YXR1cy5jYXJPbkxvb3ApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzR2F0ZUJyb2tlbihkZXZpY2VTdGF0dXMpKSB7XG4gICAgICBzdGF0dXNlcy5wdXNoKERldmljZUluZGljYXRpb25TdGF0dXMuZ2F0ZUJyb2tlbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHYXRlVXAoZGV2aWNlU3RhdHVzKSkge1xuICAgICAgc3RhdHVzZXMucHVzaChEZXZpY2VJbmRpY2F0aW9uU3RhdHVzLmdhdGVVcCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNUaWNrZXRJbnNpZGUoZGV2aWNlU3RhdHVzKSkge1xuICAgICAgc3RhdHVzZXMucHVzaChEZXZpY2VJbmRpY2F0aW9uU3RhdHVzLnRpY2tldEluc2lkZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXR1c2VzO1xuICB9XG5cbiAgcHVibGljIGdldERldmljZUluZGljYXRpb25TdGF0dXNlc0xvY2FsaXphdGlvbihkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bykge1xuICAgIGNvbnN0IHN0YXR1c2VzID0gdGhpcy5nZXREZXZpY2VJbmRpY2F0aW9uU3RhdHVzZXMoZGV2aWNlU3RhdHVzKTtcbiAgICByZXR1cm4gc3RhdHVzZXMubWFwKHN0YXR1cyA9PiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGRldmljZUluZGljYXRpb25TdGF0dXNMb2NhbGl6YXRpb24uZ2V0KHN0YXR1cykpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZXZpY2VUeXBlKGRldmljZTogRGV2aWNlRHRvKSB7XG4gICAgbGV0IGRldmljZVR5cGUgPSBEZXZpY2VUeXBlLlVua25vd247XG4gICAgc3dpdGNoIChkZXZpY2UuZGV2aWNlU3RhdHVzPy50eXBlKSB7XG4gICAgICBjYXNlIChEZXZpY2VUeXBlLkNyZWRpdCk6XG4gICAgICAgIGRldmljZVR5cGUgPSBkZXZpY2UuZGV2aWNlU3RhdHVzLmlzQ2FzaFN1cHBvcnRlZCA/IERldmljZVR5cGUuUG9mIDogRGV2aWNlVHlwZS5DcmVkaXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAoRGV2aWNlVHlwZS5DYXNoKTpcbiAgICAgICAgLy8gRGV2aWNlVHlwZS5NYXN0ZXIgPSBNQyBYNjBcbiAgICAgICAgZGV2aWNlVHlwZSA9IGRldmljZS5jb21tSUQgPT09IDAgJiYgZGV2aWNlLmNvbW1Qcm90b2NvbFR5cGUgPT09IENvbW1Qcm90b2NvbFR5cGUuVGNwSXBTZXJ2ZXIgPyBEZXZpY2VUeXBlLk1hc3RlciA6IERldmljZVR5cGUuQ2FzaDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBkZXZpY2VUeXBlID0gZGV2aWNlLmRldmljZVN0YXR1cz8udHlwZSB8fCBkZXZpY2U/LnR5cGU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gZGV2aWNlVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBjb252ZXJ0QWdncmVnYXRlZFN0YXR1c1RvQ29tQWdncmVnYXRlZFN0YXR1cyhhZ2dyZWdhdGVkU3RhdHVzOiBBZ2dyZWdhdGVkU3RhdHVzKTogQ29tQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgbGV0IGNvbUFnZ3JlZ2F0ZWRTdGF0dXM6IENvbUFnZ3JlZ2F0ZWRTdGF0dXM7XG5cbiAgICBzd2l0Y2ggKGFnZ3JlZ2F0ZWRTdGF0dXMpIHtcbiAgICAgIGNhc2UgQWdncmVnYXRlZFN0YXR1cy5FUlJPUjpcbiAgICAgICAgY29tQWdncmVnYXRlZFN0YXR1cyA9IENvbUFnZ3JlZ2F0ZWRTdGF0dXMuRXJyb3I7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBZ2dyZWdhdGVkU3RhdHVzLldBUk5JTkc6XG4gICAgICAgIGNvbUFnZ3JlZ2F0ZWRTdGF0dXMgPSBDb21BZ2dyZWdhdGVkU3RhdHVzLldhcm5pbmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBZ2dyZWdhdGVkU3RhdHVzLk9LOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29tQWdncmVnYXRlZFN0YXR1cyA9IENvbUFnZ3JlZ2F0ZWRTdGF0dXMuT2s7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBjb21BZ2dyZWdhdGVkU3RhdHVzO1xuICB9XG5cbiAgcHVibGljIGlzTW9kYWxDb21tYW5kKGNvbW1hbmRUeXBlOiBSZW1vdGVDb21tYW5kVHlwZXMpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKGNvbW1hbmRUeXBlKSB7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5WZW5kR2F0ZTpcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLlJlc3RhcnREZXZpY2U6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0Nhck9uTG9vcCA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0byk6IGJvb2xlYW4gPT4gZGV2aWNlU3RhdHVzPy5sb29wcz8ubGVuZ3RoID4gMCAmJiBkZXZpY2VTdGF0dXM/Lmxvb3BzWzBdLmlzQ2FyT247XG4gIHB1YmxpYyBpc0dhdGVVcCA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0byk6IGJvb2xlYW4gPT4gdGhpcy5nZXRCYXJyaWVyKGRldmljZVN0YXR1cyk/LnN0YXRlID09PSBCYXJyaWVyU3RhdGUuT3BlbjtcbiAgcHVibGljIGlzR2F0ZUJyb2tlbiA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0byk6IGJvb2xlYW4gPT4gdGhpcy5nZXRCYXJyaWVyKGRldmljZVN0YXR1cyk/LnN0YXRlID09PSBCYXJyaWVyU3RhdGUuQnJva2VuO1xuICBwdWJsaWMgaXNTdGF0dXNTdXBwb3J0ZWQgPSAoZGV2aWNlVHlwZTogRGV2aWNlVHlwZSkgPT4gU1VQUE9SVEVEX1NUQVRVU19ERVZJQ0VfVFlQRVMuaW5jbHVkZXMoZGV2aWNlVHlwZSk7XG4gIHB1YmxpYyBpc1RpY2tldEluc2lkZSA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0byk6IGJvb2xlYW4gPT5cbiAgICAoZGV2aWNlU3RhdHVzPy5zd2FsbG93VW5pdCB8fCBkZXZpY2VTdGF0dXM/LnN3YWxsb3dVbml0cz8uZmluZChzID0+IHMudHlwZSA9PT0gU3dhbGxvd1VuaXRUeXBlLlRpY2tldCkpPy5zdGF0dXMgPT09IFN3YWxsb3dVbml0U3RhdHVzLlRpY2tldEluc2lkZTtcblxuICBwcm90ZWN0ZWQgZ2V0QmFycmllciA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0byk6IEJhcnJpZXJEdG8gPT4gZGV2aWNlU3RhdHVzPy5iYXJyaWVyIHx8IChkZXZpY2VTdGF0dXM/LmJhcnJpZXJzPy5sZW5ndGggPiAwICYmIGRldmljZVN0YXR1cz8uYmFycmllcnNbMF0pO1xufVxuIl19
|
|
520
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kZXZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvc2VydmljZXMvYmFzZS1kZXZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakUsT0FBTyxFQUF3QyxFQUFFLEVBQW9CLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSw0QkFBNEIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xKLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUsxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFjLFlBQVksRUFBRSx1Q0FBdUMsRUFBRSxzQ0FBc0MsRUFBRSwwQkFBMEIsRUFBRSxtQ0FBbUMsRUFBRSxrQ0FBa0MsRUFBZ0MsZ0JBQWdCLEVBQUUsbUNBQW1DLEVBQThCLFVBQVUsRUFBRSxrQ0FBa0MsRUFBZSwwQkFBMEIsRUFB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QUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNuSSxNQUFNO1lBQ1I7Z0JBQ0UsVUFBVSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxJQUFJLENBQUM7Z0JBQ3ZELE1BQU07U0FDVDtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTSw0Q0FBNEMsQ0FBQyxnQkFBa0M7UUFDcEYsSUFBSSxtQkFBd0MsQ0FBQztRQUU3QyxRQUFRLGdCQUFnQixFQUFFO1lBQ3hCLEtBQUssZ0JBQWdCLENBQUMsS0FBSztnQkFDekIsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDO2dCQUNoRCxNQUFNO1lBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUMzQixtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7Z0JBQ2xELE1BQU07WUFDUixLQUFLLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUN6QjtnQkFDRSxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLE1BQU07U0FDVDtRQUVELE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVNLGNBQWMsQ0FBQyxXQUErQjtRQUNuRCxRQUFRLFdBQVcsRUFBRTtZQUNuQixLQUFLLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztZQUNqQyxLQUFLLGtCQUFrQixDQUFDLGFBQWE7Z0JBQ25DLE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDSCxDQUFDOytHQTNqQm1CLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUR0QyxVQUFVO3dPQUdDLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIE9ic2VydmFibGUsIG9mLCBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZywgQ29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25DbGFzcyB9IGZyb20gJy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgZGV2aWNlSW5kaWNhdGlvblN0YXR1c0xvY2FsaXphdGlvbiwgcmVtb3RlQ29tbWFuZExvY2FsaXphdGlvbk1hcCwgU1VQUE9SVEVEX1NUQVRVU19ERVZJQ0VfVFlQRVMgfSBmcm9tICcuLi9jb25zdGFudHMvZGV2aWNlLXR5cGVzLm1vZGFsJztcbmltcG9ydCB7IENvbUFnZ3JlZ2F0ZWRTdGF0dXMgfSBmcm9tICcuLi9lbnVtcy9hZ2dyZWdhdGVkLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IERldmljZUFjdGl2aXR5TGFiZWwsIERldmljZUFjdGl2aXR5U3RhdHVzIH0gZnJvbSAnLi4vZW51bXMvZGV2aWNlLWFjdGl2aXR5LXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IERldmljZUluZGljYXRpb25TdGF0dXMgfSBmcm9tICcuLi9lbnVtcy9kZXZpY2UtaW5kaWNhdGlvbi1zdGF0dXMuZW51bSc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBUcmFjZVBheWxvYWQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2FuYWx5dGljcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ21kRGF0YUR0byB9IGZyb20gJy4uL2ludGVyZmFjZXMvY21kLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbmZpZ0RhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMb3N0VGlja2V0RGlhbG9nRGF0YSwgTHByTWlzbWF0Y2hEaWFsb2dEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aWNrZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IFBhcmtNYW5hZ2VyU3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGUnO1xuaW1wb3J0IHsgSGFuZGxpbmdCeVVzZXJEdG8sIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvciB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFnZ3JlZ2F0ZWRTdGF0dXMsIEJhcnJpZXJEdG8sIEJhcnJpZXJTdGF0ZSwgQ2hhbmdlRGV2aWNlQWNjZXNzTW9kZVJlbW90ZUNvbW1hbmREYXRhLCBDbG9zZUdhdGVDb250aW51b3VzbHlSZW1vdGVDb21tYW5kRGF0YSwgQ2xvc2VHYXRlUmVtb3RlQ29tbWFuZERhdGEsIENsb3NlUGF5bWVudFNjcmVlblJlbW90ZUNvbW1hbmREYXRhLCBDbG9zZVRpY2tldEZvcklTRlJlbW90ZUNvbW1hbmREYXRhLCBDb21tYW5kUmVwbHlIdHRwUmVzcG9uc2VEYXRhLCBDb21tUHJvdG9jb2xUeXBlLCBEZWxpdmVyQnVuZGxlQmlsbHNSZW1vdGVDb21tYW5kRGF0YSwgRGV2aWNlRHRvLCBEZXZpY2VTdGF0dXNEdG8sIERldmljZVR5cGUsIEVqZWN0SmFtbWVkVGlja2V0UmVtb3RlQ29tbWFuZERhdGEsIEZhY2lsaXR5RHRvLCBIb2xkUmVsYXlSZW1vdGVDb21tYW5kRGF0YSwgSW5zZXJ0VmlydHVhbFRpY2tldFJlbW90ZUNvbW1hbmREYXRhLCBMb2NrQ2FzaFJlZ2lzdGVyUmVtb3RlQ29tbWFuZERhdGEsIExQUk1hdGNoQ2FzZUR0bywgT3BlbkdhdGVDb250aW51b3VzbHlSZW1vdGVDb21tYW5kRGF0YSwgT3BlblJlbGF5UmVtb3RlQ29tbWFuZERhdGEsIFByaW50VGlja2V0UmVtb3RlQ29tbWFuZERhdGEsIFJlbW90ZUNvbW1hbmRCYXNlLCBSZW1vdGVDb21tYW5kRGV2aWNlUGF5bG9hZCwgUmVtb3RlQ29tbWFuZFR5cGVzLCBSZXNldEJpbGxEaXNwZW5zZXJSZW1vdGVDb21tYW5kRGF0YSwgUmVzZXREZXZpY2VBY2Nlc3NNb2RlUmVtb3RlQ29tbWFuZERhdGEsIFJlc3RhcnREZXZpY2VSZW1vdGVDb21tYW5kRGF0YSwgU2V0UHJpY2VSZW1vdGVDb21tYW5kRGF0YSwgU2V0UmF0ZVJlbW90ZUNvbW1hbmREYXRhLCBTd2FsbG93SmFtbWVkVGlja2V0UmVtb3RlQ29tbWFuZERhdGEsIFN3YWxsb3dVbml0U3RhdHVzLCBTd2FsbG93VW5pdFR5cGUsIFRyaWdnZXJMcHJSZW1vdGVDb21tYW5kRGF0YSwgVHlwZUNhc3QsIFVubG9ja0Rvb3JSZW1vdGVDb21tYW5kRGF0YSwgVmFsaWRhdGVSZW1vdGVDb21tYW5kRGF0YSwgVmVuZEdhdGVSZW1vdGVDb21tYW5kRGF0YSB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgaXNEZXZpY2VBY3RpdmUgfSBmcm9tICcuLi91dGlscy9hY3RpdmUtZGV2aWNlLXN0YXR1cy51dGlsJztcbmltcG9ydCB7IEFwcFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vYXBwLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVtb3RlQ29tbWFuZFNlcnZpY2UgfSBmcm9tICcuL3JlbW90ZS1jb21tYW5kLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZURldmljZVNlcnZpY2Uge1xuXG4gIEBPdXRwdXQoKSBsb2FkaW5nQ29tbWFuZCQ6IEV2ZW50RW1pdHRlcjx7IGNvbW1hbmRUeXBlOiBudW1iZXIsIGlzTG9hZGluZzogYm9vbGVhbiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBjb21tYW5kVHlwZTogbnVtYmVyLCBpc0xvYWRpbmc6IGJvb2xlYW4gfT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3RvcmU6IFN0b3JlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIHJlbW90ZUNvbW1hbmRTZXJ2aWNlOiBSZW1vdGVDb21tYW5kU2VydmljZSxcbiAgICBwdWJsaWMgYXBwU2V0dGluZ3NTZXJ2aWNlOiBBcHBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHVibGljIGNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlOiBDb21tYW5kTm90aWZpY2F0aW9uU2VydmljZSkge1xuICB9XG5cbiAgcHVibGljIHNlbmRDb21tYW5kKGNvbW1hbmRUeXBlOiBSZW1vdGVDb21tYW5kVHlwZXMsIGRldmljZUlkOiBudW1iZXIsIG9wdGlvbnM6IGFueSA9IHt9LCBhbmFseXRpY3NQYXlsb2FkOiBUcmFjZVBheWxvYWQgPSB7fSk6IE9ic2VydmFibGU8eyBwYXlsb2FkRGF0YTogUmVtb3RlQ29tbWFuZEJhc2UsIHJlc3BvbnNlOiBDb21tYW5kUmVwbHlIdHRwUmVzcG9uc2VEYXRhIH0+IHtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIGNvbnN0IGRldmljZTogRGV2aWNlRHRvID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChQYXJrTWFuYWdlclN0YXRlLmJ5SWQpW2RldmljZUlkXTtcbiAgICBvcHRpb25zLmRldmljZVN0YXR1cyA9IGRldmljZS5kZXZpY2VTdGF0dXM7XG4gICAgY29uc3QgY21kRGF0YUR0byQgPSB0aGlzLmdldERldmljZVJlbW90ZUNvbW1hbmREYXRhKGNvbW1hbmRUeXBlLCBvcHRpb25zKVxuICAgICAgLnBpcGUodGhpcy5wcm9jY2VzRGV2aWNlUGF5bG9hZERhdGEoZGV2aWNlSWQpKTtcblxuICAgIGNvbnN0IGRldmljZVBheUxvYWQgPSBuZXcgUmVtb3RlQ29tbWFuZERldmljZVBheWxvYWQoKTtcbiAgICBkZXZpY2VQYXlMb2FkLm5hbWUgPSBkZXZpY2U/Lm5hbWU7XG4gICAgZGV2aWNlUGF5TG9hZC5pZCA9IGRldmljZUlkO1xuXG4gICAgcmV0dXJuIHRoaXMucmVtb3RlQ29tbWFuZFNlcnZpY2Uuc2VuZChjbWREYXRhRHRvJCwgZ3VpZCwgZGV2aWNlUGF5TG9hZCwgYW5hbHl0aWNzUGF5bG9hZCkucGlwZSh0aGlzLnN0b3BMb2FkaW5nQ29tbWFuZChjb21tYW5kVHlwZSkpO1xuICB9XG5cbiAgcHVibGljIHNlbmRDb21tYW5kV2l0aFNuYWNrRGF0YShjb21tYW5kVHlwZTogUmVtb3RlQ29tbWFuZFR5cGVzLCBkZXZpY2VJZDogbnVtYmVyLCBvcHRpb25zOiBhbnkgPSB7fSwgYW5hbHl0aWNzUGF5bG9hZDogVHJhY2VQYXlsb2FkID0ge30pOlxuICAgIE9ic2VydmFibGU8eyBwYXlsb2FkRGF0YTogUmVtb3RlQ29tbWFuZEJhc2UsIHJlc3BvbnNlOiBDb21tYW5kUmVwbHlIdHRwUmVzcG9uc2VEYXRhIH0+IHtcbiAgICBpZiAoUmVtb3RlQ29tbWFuZFR5cGVzW2NvbW1hbmRUeXBlXSkge1xuICAgICAgY29uc3QgZ3VpZDogc3RyaW5nID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgICAgY29uc3QgZGV2aWNlOiBEZXZpY2VEdG8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFBhcmtNYW5hZ2VyU3RhdGUuYnlJZClbZGV2aWNlSWRdO1xuICAgICAgY29uc3QgcGFyazogRmFjaWxpdHlEdG8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZmFjaWxpdHlEaWN0aW9uYXJ5KVtndWlkXVtkZXZpY2UucGFya0lEXTtcbiAgICAgIGNvbnN0IHRpY2tldElkZW50aWZpZXIgPSBvcHRpb25zPy50aWNrZXRJZGVudGlmaWVyO1xuICAgICAgY29uc3QgZW50aXR5RGlzcGxheU5hbWUgPSB0aWNrZXRJZGVudGlmaWVyPy5lbnRpdHlEaXNwbGF5TmFtZTtcbiAgICAgIGNvbnN0IGVudGl0eVR5cGVUcmFuc2xhdGUgPSB0aWNrZXRJZGVudGlmaWVyPy5lbnRpdHlUeXBlVHJhbnNsYXRlO1xuXG4gICAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICAgIG1lc3NhZ2VzOiBbe1xuICAgICAgICAgIHZhbHVlOiBgJHtlbnRpdHlUeXBlVHJhbnNsYXRlfSAke2VudGl0eURpc3BsYXlOYW1lfWAsXG4gICAgICAgICAgY2xhc3M6IGVudGl0eURpc3BsYXlOYW1lID8gTm90aWZpY2F0aW9uQ2xhc3Muc3ViVGl0bGUgOiBOb3RpZmljYXRpb25DbGFzcy5ub25lLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IGAke2RldmljZT8ubmFtZX0gfCAjJHtkZXZpY2U/LmNvbW1JRH1gLFxuICAgICAgICAgIGNsYXNzOiBkZXZpY2U/Lm5hbWUgJiYgZGV2aWNlPy5jb21tSUQgPyBOb3RpZmljYXRpb25DbGFzcy5zdWJUaXRsZSA6IE5vdGlmaWNhdGlvbkNsYXNzLm5vbmUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB2YWx1ZTogYCR7cGFyaz8ubmFtZX1gLFxuICAgICAgICAgIGNsYXNzOiBwYXJrID8gTm90aWZpY2F0aW9uQ2xhc3MuYm9keSA6IE5vdGlmaWNhdGlvbkNsYXNzLm5vbmUsXG4gICAgICAgIH1dLFxuICAgICAgICBjb21tYW5kOiB0aGlzLnJlbW90ZUNvbW1hbmRTZXJ2aWNlLmdldFJlbW90ZUNvbW1hbmRUZXh0KGNvbW1hbmRUeXBlLCBvcHRpb25zKSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB0aGlzLnNlbmRDb21tYW5kKGNvbW1hbmRUeXBlLCBkZXZpY2VJZCwgb3B0aW9ucywgYW5hbHl0aWNzUGF5bG9hZClcbiAgICAgICAgLnBpcGUodGhpcy5jb21tYW5kTm90aWZpY2F0aW9uU2VydmljZS5kaXNwbGF5KGNvbmZpZykpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkxvc3RUaWNrZXQoZ3VpZDogc3RyaW5nLCBwYXJrSWQ6IG51bWJlciwgcGFya05hbWU6IHN0cmluZywgcmVhZGVySWQ6IG51bWJlciwgZGV2aWNlTmFtZTogc3RyaW5nLCBkZXZpY2VJZDogbnVtYmVyLCBoYW5kbGluZ0J5VXNlcjogSGFuZGxpbmdCeVVzZXJEdG8sIGV2ZW50RGVzY3JpcHRpb246IFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvciwgYW5hbHl0aWNzUGF5bG9hZDogVHJhY2VQYXlsb2FkID0ge30pIHtcbiAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBtZXNzYWdlczogW3tcbiAgICAgICAgdmFsdWU6IGAke2RldmljZU5hbWV9IHwgIyR7cmVhZGVySWR9YCxcbiAgICAgICAgY2xhc3M6IE5vdGlmaWNhdGlvbkNsYXNzLnN1YlRpdGxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IGAke3BhcmtOYW1lfWAsXG4gICAgICAgIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5ib2R5LFxuICAgICAgfV0sXG4gICAgICBjb21tYW5kOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5sb3N0X3RpY2tldClcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0TG9zdFRpY2tldE1vZGFsQ29tbWFuZChndWlkLCBwYXJrSWQsIHBhcmtOYW1lLCByZWFkZXJJZCwgZGV2aWNlTmFtZSwgZGV2aWNlSWQsIGhhbmRsaW5nQnlVc2VyLCBldmVudERlc2NyaXB0aW9uKS5waXBlKHN3aXRjaE1hcChtb2RhbERhdGEgPT4ge1xuICAgICAgaWYgKCFtb2RhbERhdGEpIHtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjbWREYXRhRHRvOiBDbWREYXRhRHRvID0ge1xuICAgICAgICBjbWRUeXBlOiBtb2RhbERhdGEuY29tbWFuZFR5cGVPdmVycmlkZSxcbiAgICAgICAgY21kRHRvOiBuZXcgUmVtb3RlQ29tbWFuZEJhc2UoKVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc3ViT3BlcmF0aW9uID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmhhbmRsZUNvbW1hbmRUeXBlT3ZlcnJpZGVOYW1lKG1vZGFsRGF0YS5jb21tYW5kVHlwZU92ZXJyaWRlKSk7XG4gICAgICBjb25maWcuY29tbWFuZCA9IGAke3N1Yk9wZXJhdGlvbn0gKCR7Y29uZmlnLmNvbW1hbmR9KWA7XG5cbiAgICAgIGNvbnN0IGRldmljZVBheUxvYWQgPSBuZXcgUmVtb3RlQ29tbWFuZERldmljZVBheWxvYWQoKTtcbiAgICAgIGRldmljZVBheUxvYWQubmFtZSA9IGRldmljZU5hbWU7XG4gICAgICBkZXZpY2VQYXlMb2FkLmlkID0gZGV2aWNlSWQ7XG5cbiAgICAgIHJldHVybiB0aGlzLnJlbW90ZUNvbW1hbmRTZXJ2aWNlXG4gICAgICAgIC5zZW5kKG9mKHRoaXMuaGFuZGxlVGlja2V0Q29tbWFuZChjbWREYXRhRHRvLCBtb2RhbERhdGEpKS5waXBlKHRoaXMucHJvY2Nlc0RldmljZVBheWxvYWREYXRhKGRldmljZUlkLCBwYXJrSWQpKSwgZ3VpZCwgZGV2aWNlUGF5TG9hZCwgYW5hbHl0aWNzUGF5bG9hZClcbiAgICAgICAgLnBpcGUodGhpcy5jb21tYW5kTm90aWZpY2F0aW9uU2VydmljZS5kaXNwbGF5KGNvbmZpZykpLnBpcGUodGhpcy5zdG9wTG9hZGluZ0NvbW1hbmQoY21kRGF0YUR0by5jbWRUeXBlKSk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIG9uTHByTWlzbWF0Y2goZ3VpZDogc3RyaW5nLCBwYXJrSWQ6IG51bWJlciwgcGFya05hbWU6IHN0cmluZywgcmVhZGVySWQ6IG51bWJlciwgZGV2aWNlTmFtZTogc3RyaW5nLCBkZXZpY2VJZDogbnVtYmVyLCBscHJNYXRjaENhc2U6IExQUk1hdGNoQ2FzZUR0bywgaGFuZGxpbmdCeVVzZXI6IEhhbmRsaW5nQnlVc2VyRHRvLCBldmVudERlc2NyaXB0aW9uOiBQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3IsIGFuYWx5dGljc1BheWxvYWQ6IFRyYWNlUGF5bG9hZCA9IHt9KSB7XG4gICAgY29uc3QgY29uZmlnOiBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnID0ge1xuICAgICAgbWVzc2FnZXM6IFt7XG4gICAgICAgIHZhbHVlOiBgJHtkZXZpY2VOYW1lfSB8ICMke3JlYWRlcklkfWAsXG4gICAgICAgIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5zdWJUaXRsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBgJHtwYXJrTmFtZX1gLFxuICAgICAgICBjbGFzczogTm90aWZpY2F0aW9uQ2xhc3MuYm9keSxcbiAgICAgIH1dLFxuICAgICAgY29tbWFuZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24ubHByX21pc21hdGNoKVxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5nZXRMcHJNaXNtYXRjaE1vZGFsQ29tbWFuZChndWlkLCBwYXJrSWQsIHBhcmtOYW1lLCByZWFkZXJJZCwgZGV2aWNlTmFtZSwgbHByTWF0Y2hDYXNlLCBoYW5kbGluZ0J5VXNlciwgZXZlbnREZXNjcmlwdGlvbiwgZGV2aWNlSWQpLnBpcGUoc3dpdGNoTWFwKG1vZGFsRGF0YSA9PiB7XG4gICAgICBpZiAoIW1vZGFsRGF0YSkge1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjbWREYXRhRHRvOiBDbWREYXRhRHRvID0ge1xuICAgICAgICBjbWRUeXBlOiBtb2RhbERhdGEuY29tbWFuZFR5cGVPdmVycmlkZSxcbiAgICAgICAgY21kRHRvOiBuZXcgUmVtb3RlQ29tbWFuZEJhc2UoKSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHN1Yk9wZXJhdGlvbiA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5oYW5kbGVDb21tYW5kVHlwZU92ZXJyaWRlTmFtZShtb2RhbERhdGEuY29tbWFuZFR5cGVPdmVycmlkZSkpO1xuICAgICAgY29uZmlnLmNvbW1hbmQgPSBgJHtzdWJPcGVyYXRpb259ICgke2NvbmZpZy5jb21tYW5kfSlgO1xuXG4gICAgICBjb25zdCBkZXZpY2VQYXlMb2FkID0gbmV3IFJlbW90ZUNvbW1hbmREZXZpY2VQYXlsb2FkKCk7XG4gICAgICBkZXZpY2VQYXlMb2FkLm5hbWUgPSBkZXZpY2VOYW1lO1xuICAgICAgZGV2aWNlUGF5TG9hZC5pZCA9IGRldmljZUlkO1xuXG4gICAgICByZXR1cm4gdGhpcy5yZW1vdGVDb21tYW5kU2VydmljZVxuICAgICAgICAuc2VuZChvZih0aGlzLmhhbmRsZVRpY2tldENvbW1hbmQoY21kRGF0YUR0bywgbW9kYWxEYXRhKSkucGlwZSh0aGlzLnByb2NjZXNEZXZpY2VQYXlsb2FkRGF0YShkZXZpY2VJZCwgcGFya0lkKSksIGd1aWQsIGRldmljZVBheUxvYWQsIGFuYWx5dGljc1BheWxvYWQpXG4gICAgICAgIC5waXBlKHRoaXMuY29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2UuZGlzcGxheShjb25maWcpKS5waXBlKHRoaXMuc3RvcExvYWRpbmdDb21tYW5kKGNtZERhdGFEdG8uY21kVHlwZSkpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBzdG9wTG9hZGluZ0NvbW1hbmQ8VD4oY29tbWFuZFR5cGU6IFJlbW90ZUNvbW1hbmRUeXBlcyk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gICAgcmV0dXJuICRpbnB1dCA9PiAkaW5wdXQucGlwZShcbiAgICAgIHRhcCh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb21tYW5kJC5uZXh0KHsgY29tbWFuZFR5cGUsIGlzTG9hZGluZzogZmFsc2UgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ29tbWFuZCQubmV4dCh7IGNvbW1hbmRUeXBlLCBpc0xvYWRpbmc6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0TW9kYWxDb21tYW5kKGNvbW1hbmRUeXBlOiBSZW1vdGVDb21tYW5kVHlwZXMsIGRhdGE6IENvbmZpZ0RhdGEpOiBPYnNlcnZhYmxlPGFueT47XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRMb3N0VGlja2V0TW9kYWxDb21tYW5kKGd1aWQ6IHN0cmluZywgcGFya0lkOiBudW1iZXIsIHBhcmtOYW1lOiBzdHJpbmcsIHJlYWRlcklkOiBudW1iZXIsIGRldmljZU5hbWU6IHN0cmluZywgZGV2aWNlSWQ6IG51bWJlciwgaGFuZGxpbmdCeVVzZXI6IEhhbmRsaW5nQnlVc2VyRHRvLCBldmVudERlc2NyaXB0aW9uOiBQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3IpOiBPYnNlcnZhYmxlPExvc3RUaWNrZXREaWFsb2dEYXRhPjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldExwck1pc21hdGNoTW9kYWxDb21tYW5kKGd1aWQ6IHN0cmluZywgcGFya0lkOiBudW1iZXIsIHBhcmtOYW1lOiBzdHJpbmcsIHJlYWRlcklkOiBudW1iZXIsIGRldmljZU5hbWU6IHN0cmluZywgbHByTWF0Y2hDYXNlOiBMUFJNYXRjaENhc2VEdG8sIGhhbmRsaW5nQnlVc2VyOiBIYW5kbGluZ0J5VXNlckR0bywgZXZlbnREZXNjcmlwdGlvbjogUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLCBkZXZpY2VJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxMcHJNaXNtYXRjaERpYWxvZ0RhdGE+O1xuXG4gIHByb3RlY3RlZCBnZXREZXZpY2VSZW1vdGVDb21tYW5kRGF0YShjb21tYW5kVHlwZTogUmVtb3RlQ29tbWFuZFR5cGVzLCBvcHRpb25zOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8Q21kRGF0YUR0bz4ge1xuICAgIGNvbnN0IGNtZERhdGFEdG86IENtZERhdGFEdG8gPSB7XG4gICAgICBjbWRUeXBlOiBjb21tYW5kVHlwZSxcbiAgICAgIGNtZER0bzogbmV3IFJlbW90ZUNvbW1hbmRCYXNlKCksXG4gICAgfTtcbiAgICBjb25zdCBkYXRhOiBDb25maWdEYXRhID0geyBjb21tYW5kVHlwZSwgdGlja2V0SWRlbnRpZmllcjogb3B0aW9ucz8udGlja2V0SWRlbnRpZmllciwgb3B0aW9ucyB9O1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5nZXRNb2RhbENvbW1hbmQoY29tbWFuZFR5cGUsIGRhdGEpO1xuICAgIHN3aXRjaCAoY29tbWFuZFR5cGUpIHtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLlZlbmRHYXRlOlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShcbiAgICAgICAgICBtYXAobW9kYWxEYXRhID0+IHtcbiAgICAgICAgICAgIGlmICghbW9kYWxEYXRhKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2ZW5kR2F0ZUNvbW1hbmQgPSBuZXcgVmVuZEdhdGVSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgICAgdmVuZEdhdGVDb21tYW5kLnRpY2tldElkID0gb3B0aW9ucy50aWNrZXRJZGVudGlmaWVyPy50aWNrZXRJZDtcbiAgICAgICAgICAgIHZlbmRHYXRlQ29tbWFuZC50cmFuc3BvcnRSZWFzb24gPSBtb2RhbERhdGEucmVhc29uO1xuICAgICAgICAgICAgdmVuZEdhdGVDb21tYW5kLmRlc2NyaXB0aW9uID0gbW9kYWxEYXRhLmRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgdmVuZEdhdGVDb21tYW5kLnR5cGVPZlBhcmtlciA9IG1vZGFsRGF0YS50eXBlIHx8IG9wdGlvbnMudHlwZSB8fCBUeXBlQ2FzdC5JZ25vcmVkO1xuICAgICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSB2ZW5kR2F0ZUNvbW1hbmQ7XG5cbiAgICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkNsb3NlR2F0ZTpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjbG9zZUdhdGVDb21tYW5kID0gbmV3IENsb3NlR2F0ZVJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBjbG9zZUdhdGVDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLlNldFByaWNlOlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAobW9kYWxEYXRhID0+IHtcbiAgICAgICAgICBpZiAoIW1vZGFsRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2V0UHJpY2VDb21tYW5kID0gbmV3IFNldFByaWNlUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBzZXRQcmljZUNvbW1hbmQudGlja2V0SWQgPSBvcHRpb25zLnRpY2tldElkZW50aWZpZXI/LnRpY2tldElkO1xuICAgICAgICAgIHNldFByaWNlQ29tbWFuZC5wcmljZSA9IG1vZGFsRGF0YS5wcmljZTtcbiAgICAgICAgICBzZXRQcmljZUNvbW1hbmQudHJhbnNwb3J0UmVhc29uID0gbW9kYWxEYXRhLnJlYXNvbjtcbiAgICAgICAgICBzZXRQcmljZUNvbW1hbmQuZGVzY3JpcHRpb24gPSBtb2RhbERhdGEuZGVzY3JpcHRpb247XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBzZXRQcmljZUNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuU2V0UmF0ZTpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKG1vZGFsRGF0YSA9PiB7XG4gICAgICAgICAgaWYgKCFtb2RhbERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHNldFJhdGVDb21tYW5kID0gbmV3IFNldFJhdGVSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIHNldFJhdGVDb21tYW5kLnRpY2tldElkID0gb3B0aW9ucy50aWNrZXRJZGVudGlmaWVyPy50aWNrZXRJZDtcbiAgICAgICAgICBzZXRSYXRlQ29tbWFuZC5yYXRlSWQgPSBtb2RhbERhdGEucmF0ZUlkO1xuICAgICAgICAgIHNldFJhdGVDb21tYW5kLnRyYW5zcG9ydFJlYXNvbiA9IG1vZGFsRGF0YS5yZWFzb247XG4gICAgICAgICAgc2V0UmF0ZUNvbW1hbmQuZGVzY3JpcHRpb24gPSBtb2RhbERhdGEuZGVzY3JpcHRpb247XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBzZXRSYXRlQ29tbWFuZDtcblxuICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5WYWxpZGF0ZTpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKG1vZGFsRGF0YSA9PiB7XG4gICAgICAgICAgaWYgKCFtb2RhbERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRlQ29tbWFuZCA9IG5ldyBWYWxpZGF0ZVJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgdmFsaWRhdGVDb21tYW5kLnRpY2tldElkID0gb3B0aW9ucy50aWNrZXRJZGVudGlmaWVyPy50aWNrZXRJZDtcbiAgICAgICAgICB2YWxpZGF0ZUNvbW1hbmQucHJpY2UgPSBtb2RhbERhdGEucHJpY2U7XG4gICAgICAgICAgdmFsaWRhdGVDb21tYW5kLnByaW50Tm90ZSA9IG1vZGFsRGF0YS5wcmludE5vdGU7XG4gICAgICAgICAgdmFsaWRhdGVDb21tYW5kLnRyYW5zcG9ydFJlYXNvbiA9IG1vZGFsRGF0YS5yZWFzb247XG4gICAgICAgICAgdmFsaWRhdGVDb21tYW5kLmRlc2NyaXB0aW9uID0gbW9kYWxEYXRhLmRlc2NyaXB0aW9uO1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gdmFsaWRhdGVDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLlJlc3RvcmVUaWNrZXQ6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcChtb2RhbERhdGEgPT4ge1xuICAgICAgICAgIGlmICghbW9kYWxEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVUaWNrZXRDb21tYW5kKGNtZERhdGFEdG8sIG1vZGFsRGF0YSk7XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkNoYW5nZURldmljZUFjY2Vzc01vZGU6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hhbmdlRGV2aWNlQWNjZXNzTW9kZUNvbW1hbmQgPSBuZXcgQ2hhbmdlRGV2aWNlQWNjZXNzTW9kZVJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgY2hhbmdlRGV2aWNlQWNjZXNzTW9kZUNvbW1hbmQuZGV2aWNlQWNjZXNzTW9kZSA9IG9wdGlvbnMucmVtb3RlQ21kTmFtZTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IGNoYW5nZURldmljZUFjY2Vzc01vZGVDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkhvbGRSZWxheTpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBob2xkUmVsYXlDb21tYW5kID0gbmV3IEhvbGRSZWxheVJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgaG9sZFJlbGF5Q29tbWFuZC5yZWxheUluZGV4ID0gb3B0aW9ucy5yZWxheUluZGV4O1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gaG9sZFJlbGF5Q29tbWFuZDtcblxuICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5PcGVuUmVsYXk6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3BlblJlbGF5Q29tbWFuZCA9IG5ldyBPcGVuUmVsYXlSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIG9wZW5SZWxheUNvbW1hbmQucmVsYXlJbmRleCA9IG9wdGlvbnMucmVsYXlJbmRleDtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IG9wZW5SZWxheUNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuUmVzZXREZXZpY2VBY2Nlc3NNb2RlOlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc2V0RGV2aWNlQWNjZXNzTW9kZUNvbW1hbmQgPSBuZXcgUmVzZXREZXZpY2VBY2Nlc3NNb2RlUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHJlc2V0RGV2aWNlQWNjZXNzTW9kZUNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuUmVzZXRCaWxsRGlzcGVuc2VyOlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc2V0QmlsbERpc3BlbnNlckNvbW1hbmQgPSBuZXcgUmVzZXRCaWxsRGlzcGVuc2VyUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHJlc2V0QmlsbERpc3BlbnNlckNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuVHJpZ2dlckxQUk1vZHVsZTpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB0cmlnZ2VyTHByQ29tbWFuZCA9IG5ldyBUcmlnZ2VyTHByUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHRyaWdnZXJMcHJDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkVqZWN0SmFtbWVkVGlja2V0OlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVqZWN0SmFtbWVkVGlja2V0Q29tbWFuZCA9IG5ldyBFamVjdEphbW1lZFRpY2tldFJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBlamVjdEphbW1lZFRpY2tldENvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuU3dhbGxvd0phbW1lZFRpY2tldDpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzd2FsbG93SmFtbWVkVGlja2V0Q29tbWFuZCA9IG5ldyBTd2FsbG93SmFtbWVkVGlja2V0UmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHN3YWxsb3dKYW1tZWRUaWNrZXRDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkRlbGl2ZXJCdW5kbGVCaWxsczpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBkZWxpdmVyQnVuZGxlQmlsbHNDb21tYW5kID0gbmV3IERlbGl2ZXJCdW5kbGVCaWxsc1JlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBkZWxpdmVyQnVuZGxlQmlsbHNDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkxvY2tDYXNoUmVnaXN0ZXI6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbG9ja0Nhc2hSZWdpc3RlckNvbW1hbmQgPSBuZXcgTG9ja0Nhc2hSZWdpc3RlclJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBsb2NrQ2FzaFJlZ2lzdGVyQ29tbWFuZDtcblxuICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICB9KSk7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5PcGVuR2F0ZUNvbnRpbnVvdXNseTpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBvcGVuR2F0ZUNvbnRpbnVvdXNseUNvbW1hbmQgPSBuZXcgT3BlbkdhdGVDb250aW51b3VzbHlSZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gb3BlbkdhdGVDb250aW51b3VzbHlDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkNsb3NlR2F0ZUNvbnRpbnVvdXNseTpcbiAgICAgICAgcmV0dXJuIG1vZGFsLnBpcGUobWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjbG9zZUdhdGVDb250aW51b3VzbHlDb21tYW5kID0gbmV3IENsb3NlR2F0ZUNvbnRpbnVvdXNseVJlbW90ZUNvbW1hbmREYXRhKCk7XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBjbG9zZUdhdGVDb250aW51b3VzbHlDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLlJlc3RhcnREZXZpY2U6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcChtb2RhbERhdGEgPT4ge1xuICAgICAgICAgIGlmICghbW9kYWxEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCByZXN0YXJ0RGV2aWNlQ29tbWFuZCA9IG5ldyBSZXN0YXJ0RGV2aWNlUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHJlc3RhcnREZXZpY2VDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLlVubG9ja0Rvb3I6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcChtb2RhbERhdGEgPT4ge1xuICAgICAgICAgIGlmICghbW9kYWxEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB1bmxvY2tEb29yQ29tbWFuZCA9IG5ldyBVbmxvY2tEb29yUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICB1bmxvY2tEb29yQ29tbWFuZC5wYXNzd29yZCA9IG1vZGFsRGF0YS5wYXNzd29yZDtcbiAgICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IHVubG9ja0Rvb3JDb21tYW5kO1xuXG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkNsb3NlVGlja2V0Rm9ySVNGOlxuICAgICAgICByZXR1cm4gbW9kYWwucGlwZShtYXAobW9kYWxEYXRhID0+IHtcbiAgICAgICAgICBpZiAoIW1vZGFsRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY2xvc2VUaWNrZXRGb3JJU0ZDb21tYW5kID0gbmV3IENsb3NlVGlja2V0Rm9ySVNGUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgICBjbG9zZVRpY2tldEZvcklTRkNvbW1hbmQuZHJpdmVyTGljZW5zZSA9IG1vZGFsRGF0YS5kcml2ZXJMaWNlbnNlO1xuICAgICAgICAgIGNsb3NlVGlja2V0Rm9ySVNGQ29tbWFuZC5maXJzdE5hbWUgPSBtb2RhbERhdGEuZmlyc3ROYW1lO1xuICAgICAgICAgIGNsb3NlVGlja2V0Rm9ySVNGQ29tbWFuZC5sYXN0TmFtZSA9IG1vZGFsRGF0YS5sYXN0TmFtZTtcbiAgICAgICAgICBjbG9zZVRpY2tldEZvcklTRkNvbW1hbmQuYWRkcmVzcyA9IG1vZGFsRGF0YS5hZGRyZXNzO1xuICAgICAgICAgIGNsb3NlVGlja2V0Rm9ySVNGQ29tbWFuZC5lbWFpbCA9IG1vZGFsRGF0YS5lbWFpbDtcbiAgICAgICAgICBjbG9zZVRpY2tldEZvcklTRkNvbW1hbmQucGhvbmUgPSBtb2RhbERhdGEucGhvbmU7XG4gICAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBjbG9zZVRpY2tldEZvcklTRkNvbW1hbmQ7XG5cbiAgICAgICAgICByZXR1cm4gY21kRGF0YUR0bztcbiAgICAgICAgfSkpO1xuXG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZVBheW1lbnRTY3JlZW46XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2xvc2VQYXltZW50U2NyZWVuQ29tbWFuZCA9IG5ldyBDbG9zZVBheW1lbnRTY3JlZW5SZW1vdGVDb21tYW5kRGF0YSgpO1xuICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvID0gY2xvc2VQYXltZW50U2NyZWVuQ29tbWFuZDtcblxuICAgICAgICAgIHJldHVybiBjbWREYXRhRHRvO1xuICAgICAgICB9KSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBtb2RhbC5waXBlKG1hcCgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Nlc0RldmljZVBheWxvYWREYXRhKGRldmljZUlkOiBudW1iZXIsIHBhcmtJZD86IG51bWJlcik6IE9wZXJhdG9yRnVuY3Rpb248Q21kRGF0YUR0bywgQ21kRGF0YUR0bz4ge1xuICAgIHJldHVybiAkaW5wdXQgPT4gJGlucHV0LnBpcGUoXG4gICAgICBtYXAoKGNtZERhdGFEdG86IENtZERhdGFEdG8pID0+IHtcbiAgICAgICAgaWYgKGNtZERhdGFEdG8pIHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb21tYW5kJC5uZXh0KHsgY29tbWFuZFR5cGU6IGNtZERhdGFEdG8uY21kVHlwZSwgaXNMb2FkaW5nOiB0cnVlIH0pO1xuXG4gICAgICAgICAgLy8gSGFuZGxlIFBhcmtJZFxuICAgICAgICAgIGlmIChwYXJrSWQpIHtcbiAgICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvLnBhcmtJZCA9IHBhcmtJZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZ3VpZDogc3RyaW5nID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgICAgICAgICAgY29uc3QgZGV2aWNlOiBEZXZpY2VEdG8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFBhcmtNYW5hZ2VyU3RhdGUuYnlJZClbZGV2aWNlSWRdO1xuICAgICAgICAgICAgY29uc3QgcGFyazogRmFjaWxpdHlEdG8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZmFjaWxpdHlEaWN0aW9uYXJ5KVtndWlkXVtkZXZpY2UucGFya0lEXTtcbiAgICAgICAgICAgIGNtZERhdGFEdG8uY21kRHRvLnBhcmtJZCA9IHBhcmsuaWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSGFuZGxlIFJlYWRlcklkXG4gICAgICAgICAgaWYgKCFjbWREYXRhRHRvLmNtZER0by5yZWFkZXJJZCkge1xuICAgICAgICAgICAgY29uc3QgZGV2aWNlOiBEZXZpY2VEdG8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFBhcmtNYW5hZ2VyU3RhdGUuYnlJZClbZGV2aWNlSWRdO1xuICAgICAgICAgICAgY21kRGF0YUR0by5jbWREdG8ucmVhZGVySWQgPSBkZXZpY2U/LmNvbW1JRDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNtZERhdGFEdG87XG4gICAgICB9XG4gICAgICApKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVUaWNrZXRDb21tYW5kKGNtZERhdGFEdG86IENtZERhdGFEdG8sIG1vZGFsRGF0YTogYW55KTogQ21kRGF0YUR0byB7XG4gICAgY21kRGF0YUR0by5jbWRUeXBlID0gbW9kYWxEYXRhLmNvbW1hbmRUeXBlT3ZlcnJpZGUgfHwgY21kRGF0YUR0by5jbWRUeXBlO1xuICAgIHN3aXRjaCAoY21kRGF0YUR0by5jbWRUeXBlKSB7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5TZXRQcmljZTpcbiAgICAgICAgY29uc3Qgc2V0UHJpY2VDb21tYW5kID0gbmV3IFNldFByaWNlUmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgc2V0UHJpY2VDb21tYW5kLnByaWNlID0gbW9kYWxEYXRhLnByaWNlO1xuICAgICAgICBzZXRQcmljZUNvbW1hbmQudHJhbnNwb3J0UmVhc29uID0gbW9kYWxEYXRhLnJlYXNvbjtcbiAgICAgICAgc2V0UHJpY2VDb21tYW5kLmRlc2NyaXB0aW9uID0gbW9kYWxEYXRhLmRlc2NyaXB0aW9uO1xuICAgICAgICBzZXRQcmljZUNvbW1hbmQucmVhZGVySWQgPSBtb2RhbERhdGEucmVhZGVySWRPdmVycmlkZTtcbiAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBzZXRQcmljZUNvbW1hbmQ7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5QcmludFRpY2tldDpcbiAgICAgICAgY29uc3QgcHJpbnRUaWNrZXRDb21tYW5kID0gbmV3IFByaW50VGlja2V0UmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgcHJpbnRUaWNrZXRDb21tYW5kLnRpY2tldElkID0gbW9kYWxEYXRhLnRpY2tldElkO1xuICAgICAgICBwcmludFRpY2tldENvbW1hbmQudHJhbnNwb3J0UmVhc29uID0gbW9kYWxEYXRhLnJlYXNvbjtcbiAgICAgICAgcHJpbnRUaWNrZXRDb21tYW5kLmRlc2NyaXB0aW9uID0gbW9kYWxEYXRhLmRlc2NyaXB0aW9uO1xuICAgICAgICBwcmludFRpY2tldENvbW1hbmQucmVhZGVySWQgPSBtb2RhbERhdGEucmVhZGVySWRPdmVycmlkZTtcbiAgICAgICAgY21kRGF0YUR0by5jbWREdG8gPSBwcmludFRpY2tldENvbW1hbmQ7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5JbnNlcnRWaXJ0dWFsVGlja2V0OlxuICAgICAgICBjb25zdCBpbnNlcnRWaXJ0dWFsVGlja2V0Q29tbWFuZCA9IG5ldyBJbnNlcnRWaXJ0dWFsVGlja2V0UmVtb3RlQ29tbWFuZERhdGEoKTtcbiAgICAgICAgaW5zZXJ0VmlydHVhbFRpY2tldENvbW1hbmQudGlja2V0SWQgPSBtb2RhbERhdGEudGlja2V0SWQ7XG4gICAgICAgIGluc2VydFZpcnR1YWxUaWNrZXRDb21tYW5kLnRyYW5zcG9ydFJlYXNvbiA9IG1vZGFsRGF0YS5yZWFzb247XG4gICAgICAgIGluc2VydFZpcnR1YWxUaWNrZXRDb21tYW5kLmRlc2NyaXB0aW9uID0gbW9kYWxEYXRhLmRlc2NyaXB0aW9uO1xuICAgICAgICBpbnNlcnRWaXJ0dWFsVGlja2V0Q29tbWFuZC5yZWFkZXJJZCA9IG1vZGFsRGF0YS5yZWFkZXJJZE92ZXJyaWRlO1xuICAgICAgICBjbWREYXRhRHRvLmNtZER0byA9IGluc2VydFZpcnR1YWxUaWNrZXRDb21tYW5kO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNtZERhdGFEdG87XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNvbW1hbmRUeXBlT3ZlcnJpZGVOYW1lKGNvbW1hbmRUeXBlOiBSZW1vdGVDb21tYW5kVHlwZXMpOiBzdHJpbmcge1xuICAgIHJldHVybiAocmVtb3RlQ29tbWFuZExvY2FsaXphdGlvbk1hcC5oYXMoY29tbWFuZFR5cGUpKSA/IHJlbW90ZUNvbW1hbmRMb2NhbGl6YXRpb25NYXAuZ2V0KGNvbW1hbmRUeXBlKSA6IExvY2FsaXphdGlvbi51bmtub3duO1xuICB9XG5cbiAgcHVibGljIGdldERldmljZUNvbW11bmljYXRpb25QZXJjZW50YWdlVGV4dChkZXZpY2U6IERldmljZUR0bykge1xuICAgIGxldCB2YWx1ZSA9ICctJztcbiAgICBpZiAoIWlzRGV2aWNlQWN0aXZlKGRldmljZSkpIHtcbiAgICAgIHZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChEZXZpY2VBY3Rpdml0eUxhYmVsLmdldChEZXZpY2VBY3Rpdml0eVN0YXR1cy5JbmFjdGl2ZSkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1N0YXR1c1N1cHBvcnRlZChkZXZpY2UudHlwZSkpIHtcbiAgICAgIHZhbHVlID0gYCR7ZGV2aWNlLmRldmljZVN0YXR1cz8uY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgfHwgMH0lYFxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZXZpY2VDb21BZ2dyZWdhdGVkU3RhdHVzKGRldmljZVN0YXR1c0RhdGE6IERldmljZVN0YXR1c0R0bywgaXNDb21TdGF0dXMgPSBmYWxzZSk6IENvbUFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIC8vIElmIHRoZSBkZXZpY2UgaXMgYW4gTUMgKGNvbW1pZCA9PT0gMCkgd2UgbmVlZCB0byB0cmFuc2xhdGUgdGhlIFBhcmsgY29ubmVjdGlvbiBpbnN0ZWFkIG9mIHRoZSBEZXZpY2VcbiAgICBsZXQgY29tQWdncmVnYXRlZFN0YXR1czogQ29tQWdncmVnYXRlZFN0YXR1cztcblxuICAgIGlmIChkZXZpY2VTdGF0dXNEYXRhPy5jb21tSUQgPT09IDApIHtcbiAgICAgIGNvbnN0IGd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgICBjb25zdCBieUlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChQYXJrTWFuYWdlclN0YXRlLmJ5SWQpO1xuICAgICAgY29uc3QgcGFya0lkID0gYnlJZFtkZXZpY2VTdGF0dXNEYXRhLmRldmljZUlEXS5wYXJrSUQ7XG4gICAgICBjb25zdCBmYWNpbGl0eSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mYWNpbGl0eURpY3Rpb25hcnkpW2d1aWRdW3BhcmtJZF07XG4gICAgICBjb21BZ2dyZWdhdGVkU3RhdHVzID0gZmFjaWxpdHk/LmlzTWFpbkNvbnRyb2xsZXJDb25uZWN0ZWQgPyBDb21BZ2dyZWdhdGVkU3RhdHVzLk9rIDogQ29tQWdncmVnYXRlZFN0YXR1cy5Db21FcnJvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyBjYWxjdWxhdGVzIHRoZSBjb21tdW5pY2F0aW9uIHN0YXR1cyBvZiB0aGUgZGV2aWNlXG4gICAgICBpZiAoIWRldmljZVN0YXR1c0RhdGE/LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGNvbUFnZ3JlZ2F0ZWRTdGF0dXMgPSBDb21BZ2dyZWdhdGVkU3RhdHVzLkNvbUVycm9yO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQmV0d2VlblJhbmdlKGRldmljZVN0YXR1c0RhdGE/LmNvbW11bmljYXRpb25QZXJjZW50YWdlLnRvU3RyaW5nKCksIDEsIDcwKSkge1xuICAgICAgICBjb21BZ2dyZWdhdGVkU3RhdHVzID0gQ29tQWdncmVnYXRlZFN0YXR1cy5XYXJuaW5nO1xuICAgICAgfSBlbHNlIGlmIChkZXZpY2VTdGF0dXNEYXRhPy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZSA+PSA3MSkge1xuICAgICAgICBjb21BZ2dyZWdhdGVkU3RhdHVzID0gQ29tQWdncmVnYXRlZFN0YXR1cy5PaztcbiAgICAgIH1cblxuICAgICAgLy8gVGhpcyBhbHNvIGNhbGN1bGF0ZXMgdGhlIGRldmljZXMgQWdncmVnYXRlZFN0YXR1cyBhbmQgY29tcGFyZXMgdG8gdGhlIGNvbW11bmljYXRpb24gQWdncmVnYXRlZFN0YXR1c1xuICAgICAgLy8gSGlnaExldmVsIGxlZnQgaW5kaWNhdG9yLCBsaXN0L2dhbGFyeSB2aWV3XG4gICAgICBjb25zdCBkZXZpY2VBZ2dyZWdhdGVkU3RhdHVzID0gdGhpcy5jb252ZXJ0QWdncmVnYXRlZFN0YXR1c1RvQ29tQWdncmVnYXRlZFN0YXR1cyhkZXZpY2VTdGF0dXNEYXRhPy5hZ2dyZWdhdGVkU3RhdHVzKTtcbiAgICAgIGlmICghaXNDb21TdGF0dXMgJiYgZGV2aWNlQWdncmVnYXRlZFN0YXR1cyA+IGNvbUFnZ3JlZ2F0ZWRTdGF0dXMpIHtcbiAgICAgICAgY29tQWdncmVnYXRlZFN0YXR1cyA9IGRldmljZUFnZ3JlZ2F0ZWRTdGF0dXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuQ29tW0NvbUFnZ3JlZ2F0ZWRTdGF0dXNbY29tQWdncmVnYXRlZFN0YXR1c11dO1xuICB9XG5cbiAgcHVibGljIGdldERldmljZUNvbUFnZ3JlZ2F0ZWRTdGF0dXNDbGFzcyhkZXZpY2U6IERldmljZUR0byk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdHVzQ2xhc3Nlczogc3RyaW5nW10gPSBbJ2hpZ2gtbGV2ZWwnXTtcblxuICAgIGlmICghaXNEZXZpY2VBY3RpdmUoZGV2aWNlKSkge1xuICAgICAgc3RhdHVzQ2xhc3Nlcy5wdXNoKCdpbmFjdGl2ZScpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1N0YXR1c1N1cHBvcnRlZChkZXZpY2U/LnR5cGUpKSB7XG4gICAgICBjb25zdCBkZXZpY2VBZ2dyZWdhdGVkU3RhdHVzID0gdGhpcy5nZXREZXZpY2VDb21BZ2dyZWdhdGVkU3RhdHVzKGRldmljZS5kZXZpY2VTdGF0dXMpO1xuICAgICAgc3RhdHVzQ2xhc3Nlcy5wdXNoKENvbUFnZ3JlZ2F0ZWRTdGF0dXNbZGV2aWNlQWdncmVnYXRlZFN0YXR1c10udG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXR1c0NsYXNzZXMuam9pbihcIiBcIik7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNCZXR3ZWVuUmFuZ2UoaW5wdXQ6IHN0cmluZywgbWluVmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGlucHV0VmFsID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICByZXR1cm4gaW5wdXRWYWwgPj0gbWluVmFsdWUgJiYgaW5wdXRWYWwgPD0gbWF4VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGV2aWNlSW5kaWNhdGlvblN0YXR1c2VzKGRldmljZVN0YXR1czogRGV2aWNlU3RhdHVzRHRvKSB7XG4gICAgY29uc3Qgc3RhdHVzZXMgPSBbXTtcblxuICAgIGlmICh0aGlzLmlzQ2FyT25Mb29wKGRldmljZVN0YXR1cykpIHtcbiAgICAgIHN0YXR1c2VzLnB1c2goRGV2aWNlSW5kaWNhdGlvblN0YXR1cy5jYXJPbkxvb3ApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzR2F0ZUJyb2tlbihkZXZpY2VTdGF0dXMpKSB7XG4gICAgICBzdGF0dXNlcy5wdXNoKERldmljZUluZGljYXRpb25TdGF0dXMuZ2F0ZUJyb2tlbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHYXRlVXAoZGV2aWNlU3RhdHVzKSkge1xuICAgICAgc3RhdHVzZXMucHVzaChEZXZpY2VJbmRpY2F0aW9uU3RhdHVzLmdhdGVVcCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNUaWNrZXRJbnNpZGUoZGV2aWNlU3RhdHVzKSkge1xuICAgICAgc3RhdHVzZXMucHVzaChEZXZpY2VJbmRpY2F0aW9uU3RhdHVzLnRpY2tldEluc2lkZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXR1c2VzO1xuICB9XG5cbiAgcHVibGljIGdldERldmljZUluZGljYXRpb25TdGF0dXNlc0xvY2FsaXphdGlvbihkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bykge1xuICAgIGNvbnN0IHN0YXR1c2VzID0gdGhpcy5nZXREZXZpY2VJbmRpY2F0aW9uU3RhdHVzZXMoZGV2aWNlU3RhdHVzKTtcbiAgICByZXR1cm4gc3RhdHVzZXMubWFwKHN0YXR1cyA9PiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGRldmljZUluZGljYXRpb25TdGF0dXNMb2NhbGl6YXRpb24uZ2V0KHN0YXR1cykpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZXZpY2VUeXBlKGRldmljZTogRGV2aWNlRHRvKSB7XG4gICAgbGV0IGRldmljZVR5cGUgPSBEZXZpY2VUeXBlLlVua25vd247XG4gICAgc3dpdGNoIChkZXZpY2UuZGV2aWNlU3RhdHVzPy50eXBlKSB7XG4gICAgICBjYXNlIChEZXZpY2VUeXBlLkNyZWRpdCk6XG4gICAgICAgIGRldmljZVR5cGUgPSBkZXZpY2UuZGV2aWNlU3RhdHVzLmlzQ2FzaFN1cHBvcnRlZCA/IERldmljZVR5cGUuUG9mIDogRGV2aWNlVHlwZS5DcmVkaXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAoRGV2aWNlVHlwZS5DYXNoKTpcbiAgICAgICAgLy8gRGV2aWNlVHlwZS5NYXN0ZXIgPSBNQyBYNjBcbiAgICAgICAgZGV2aWNlVHlwZSA9IGRldmljZS5jb21tSUQgPT09IDAgJiYgZGV2aWNlLmNvbW1Qcm90b2NvbFR5cGUgPT09IENvbW1Qcm90b2NvbFR5cGUuVGNwSXBTZXJ2ZXIgPyBEZXZpY2VUeXBlLk1hc3RlciA6IERldmljZVR5cGUuQ2FzaDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBkZXZpY2VUeXBlID0gZGV2aWNlLmRldmljZVN0YXR1cz8udHlwZSB8fCBkZXZpY2U/LnR5cGU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gZGV2aWNlVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBjb252ZXJ0QWdncmVnYXRlZFN0YXR1c1RvQ29tQWdncmVnYXRlZFN0YXR1cyhhZ2dyZWdhdGVkU3RhdHVzOiBBZ2dyZWdhdGVkU3RhdHVzKTogQ29tQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgbGV0IGNvbUFnZ3JlZ2F0ZWRTdGF0dXM6IENvbUFnZ3JlZ2F0ZWRTdGF0dXM7XG5cbiAgICBzd2l0Y2ggKGFnZ3JlZ2F0ZWRTdGF0dXMpIHtcbiAgICAgIGNhc2UgQWdncmVnYXRlZFN0YXR1cy5FUlJPUjpcbiAgICAgICAgY29tQWdncmVnYXRlZFN0YXR1cyA9IENvbUFnZ3JlZ2F0ZWRTdGF0dXMuRXJyb3I7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBZ2dyZWdhdGVkU3RhdHVzLldBUk5JTkc6XG4gICAgICAgIGNvbUFnZ3JlZ2F0ZWRTdGF0dXMgPSBDb21BZ2dyZWdhdGVkU3RhdHVzLldhcm5pbmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBZ2dyZWdhdGVkU3RhdHVzLk9LOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29tQWdncmVnYXRlZFN0YXR1cyA9IENvbUFnZ3JlZ2F0ZWRTdGF0dXMuT2s7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBjb21BZ2dyZWdhdGVkU3RhdHVzO1xuICB9XG5cbiAgcHVibGljIGlzTW9kYWxDb21tYW5kKGNvbW1hbmRUeXBlOiBSZW1vdGVDb21tYW5kVHlwZXMpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKGNvbW1hbmRUeXBlKSB7XG4gICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5WZW5kR2F0ZTpcbiAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLlJlc3RhcnREZXZpY2U6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0Nhck9uTG9vcCA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0byk6IGJvb2xlYW4gPT4gZGV2aWNlU3RhdHVzPy5sb29wcz8ubGVuZ3RoID4gMCAmJiBkZXZpY2VTdGF0dXM/Lmxvb3BzWzBdLmlzQ2FyT247XG4gIHB1YmxpYyBpc0dhdGVVcCA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0byk6IGJvb2xlYW4gPT4gdGhpcy5nZXRCYXJyaWVyKGRldmljZVN0YXR1cyk/LnN0YXRlID09PSBCYXJyaWVyU3RhdGUuT3BlbjtcbiAgcHVibGljIGlzR2F0ZUJyb2tlbiA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0byk6IGJvb2xlYW4gPT4gdGhpcy5nZXRCYXJyaWVyKGRldmljZVN0YXR1cyk/LnN0YXRlID09PSBCYXJyaWVyU3RhdGUuQnJva2VuO1xuICBwdWJsaWMgaXNTdGF0dXNTdXBwb3J0ZWQgPSAoZGV2aWNlVHlwZTogRGV2aWNlVHlwZSkgPT4gU1VQUE9SVEVEX1NUQVRVU19ERVZJQ0VfVFlQRVMuaW5jbHVkZXMoZGV2aWNlVHlwZSk7XG4gIHB1YmxpYyBpc1RpY2tldEluc2lkZSA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0byk6IGJvb2xlYW4gPT5cbiAgICAoZGV2aWNlU3RhdHVzPy5zd2FsbG93VW5pdCB8fCBkZXZpY2VTdGF0dXM/LnN3YWxsb3dVbml0cz8uZmluZChzID0+IHMudHlwZSA9PT0gU3dhbGxvd1VuaXRUeXBlLlRpY2tldCkpPy5zdGF0dXMgPT09IFN3YWxsb3dVbml0U3RhdHVzLlRpY2tldEluc2lkZTtcblxuICBwcm90ZWN0ZWQgZ2V0QmFycmllciA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0byk6IEJhcnJpZXJEdG8gPT4gZGV2aWNlU3RhdHVzPy5iYXJyaWVyIHx8IChkZXZpY2VTdGF0dXM/LmJhcnJpZXJzPy5sZW5ndGggPiAwICYmIGRldmljZVN0YXR1cz8uYmFycmllcnNbMF0pO1xufVxuIl19
|
|
@@ -103363,7 +103363,8 @@ class BaseDeviceService {
|
|
|
103363
103363
|
let comAggregatedStatus;
|
|
103364
103364
|
if (deviceStatusData?.commID === 0) {
|
|
103365
103365
|
const guid = this.store.selectSnapshot(FacilityState.guid);
|
|
103366
|
-
const
|
|
103366
|
+
const byId = this.store.selectSnapshot(ParkManagerState.byId);
|
|
103367
|
+
const parkId = byId[deviceStatusData.deviceID].parkID;
|
|
103367
103368
|
const facility = this.store.selectSnapshot(FacilityState.facilityDictionary)[guid][parkId];
|
|
103368
103369
|
comAggregatedStatus = facility?.isMainControllerConnected ? ComAggregatedStatus.Ok : ComAggregatedStatus.ComError;
|
|
103369
103370
|
}
|
|
@@ -106892,16 +106893,17 @@ class MobileCommandCenterModuleResolver {
|
|
|
106892
106893
|
this.realtimeEventService = realtimeEventService;
|
|
106893
106894
|
this.notificationEventService = notificationEventService;
|
|
106894
106895
|
this.store = store;
|
|
106896
|
+
this.clearSmartparks = () => new ClearSmartparksBasicAction();
|
|
106895
106897
|
}
|
|
106896
106898
|
resolve(route, state) {
|
|
106899
|
+
this.clearSmartparks();
|
|
106897
106900
|
this.store.dispatch(new MenuLoadAction([], AppModule$1.Cc));
|
|
106898
|
-
this.store.dispatch(new LoadMobileSmartparksBasicAction(AppModule$1.Cc, null))
|
|
106899
|
-
|
|
106900
|
-
this.store.dispatch(new SetBasicMenuAction(smartparkBasic.
|
|
106901
|
-
this.subscribeToRealTimeEvents(smartparkBasic
|
|
106902
|
-
this.subscribeToHandleAlertNotificationEvents(smartparkBasic
|
|
106903
|
-
});
|
|
106904
|
-
return null;
|
|
106901
|
+
this.store.dispatch(new LoadMobileSmartparksBasicAction(AppModule$1.Cc, null));
|
|
106902
|
+
return this.store.select(SmartparkState.smartParkWrapper).pipe(filter(smartparkBasic => !!smartparkBasic), first(), tap((smartparkBasic) => {
|
|
106903
|
+
this.store.dispatch(new SetBasicMenuAction(smartparkBasic.smartParks, AppModule$1.Cc));
|
|
106904
|
+
this.subscribeToRealTimeEvents(smartparkBasic);
|
|
106905
|
+
this.subscribeToHandleAlertNotificationEvents(smartparkBasic);
|
|
106906
|
+
}));
|
|
106905
106907
|
}
|
|
106906
106908
|
subscribeToRealTimeEvents(smartparkBasic) {
|
|
106907
106909
|
const parksSubscription = this.realtimeEventService.getCrossParkSubscriptions(smartparkBasic);
|
|
@@ -106922,9 +106924,12 @@ class MobileCommandCenterModuleResolver {
|
|
|
106922
106924
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MobileCommandCenterModuleResolver, deps: [{ token: SignalR }, { token: RealtimeEventService }, { token: NotificationEventService }, { token: i1$2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
106923
106925
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MobileCommandCenterModuleResolver }); }
|
|
106924
106926
|
}
|
|
106927
|
+
__decorate([
|
|
106928
|
+
Dispatch()
|
|
106929
|
+
], MobileCommandCenterModuleResolver.prototype, "clearSmartparks", void 0);
|
|
106925
106930
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MobileCommandCenterModuleResolver, decorators: [{
|
|
106926
106931
|
type: Injectable
|
|
106927
|
-
}], ctorParameters: function () { return [{ type: SignalR }, { type: RealtimeEventService }, { type: NotificationEventService }, { type: i1$2.Store }]; } });
|
|
106932
|
+
}], ctorParameters: function () { return [{ type: SignalR }, { type: RealtimeEventService }, { type: NotificationEventService }, { type: i1$2.Store }]; }, propDecorators: { clearSmartparks: [] } });
|
|
106928
106933
|
|
|
106929
106934
|
class ConfigMobileResolver {
|
|
106930
106935
|
constructor(appSettingsService, tenantService) {
|