@tiba-spark/client-shared-lib 25.4.0-458 → 25.4.0-467
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libraries/modules/smartparks/smartpark.state.mjs +3 -3
- package/esm2022/libraries/service-proxy/cloud-service-proxies.mjs +7 -12
- package/fesm2022/tiba-spark-client-shared-lib.mjs +8 -13
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/modules/smartparks/smartpark.state.d.ts +1 -1
- package/libraries/modules/smartparks/smartpark.state.d.ts.map +1 -1
- package/libraries/service-proxy/cloud-service-proxies.d.ts +2 -3
- package/libraries/service-proxy/cloud-service-proxies.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -245,8 +245,8 @@ let SmartparkState = class SmartparkState {
|
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
|
-
onDisconnectSmartparkAction(ctx, { smartParkGuid,
|
|
249
|
-
const smartpark$ = this.smartparkCloudServiceProxy.disconnect(password,
|
|
248
|
+
onDisconnectSmartparkAction(ctx, { smartParkGuid, password }) {
|
|
249
|
+
const smartpark$ = this.smartparkCloudServiceProxy.disconnect(password, smartParkGuid);
|
|
250
250
|
return smartpark$.pipe(tap({
|
|
251
251
|
next: (v) => {
|
|
252
252
|
const smartparks = (ctx.getState().smartparks || []).filter(sp => sp.guid !== smartParkGuid);
|
|
@@ -526,4 +526,4 @@ export { SmartparkState };
|
|
|
526
526
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmartparkState, decorators: [{
|
|
527
527
|
type: Injectable
|
|
528
528
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.RevenueService }, { type: i3.SmartparkCloudServiceProxy }, { type: i4.FacilityRpcServiceProxy }, { type: i5.FacilityIdentityServiceProxy }, { type: i6.Rpc.DeviceRpcServiceProxy }, { type: i7.MessageBarService }, { type: i8.RouteService }, { type: i9.TranslateService }, { type: i10.ExportFileService }, { type: i5.MobileIdentityServiceProxy }, { type: i3.BackofficeCloudServiceProxy }, { type: i3.LicenseCloudServiceProxy }], propDecorators: { onLoadSmartparksAction: [], onLoadSmartparksBasicAction: [], onLoadMobileSmartparksBasicAction: [], onClearSmartparksBasicAction: [], onLoadSmartparksTableAction: [], onLoadBackofficeSmartparksTableAction: [], onSetSmartParkTableAction: [], onSetSmartParksAction: [], onSelectSmartParkAction: [], onLoadParksAction: [], onLoadParkDevices: [], onSelectParkAction: [], onClearSelectedParkAction: [], onClearSelectedsmartparkAction: [], onSmartParkDeviceStatusChangedAction: [], onDisconnectSmartparkAction: [], onSetSmartParkVersionsAction: [], onLoadSpAndSparkVersionsAction: [], onLoadBackofficeSpAndSparkVersionsAction: [], onClearSpAndSparkVersionsAction: [], onLoadVarsAction: [], onLoadBackofficeVarsAction: [], onSyncUsersAndRolesBySmartparkIdAction: [], onExportSmartparksAction: [], onExportPdfSmartparksTableAction: [], onLoadAllSmartparksAction: [] } });
|
|
529
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwYXJrLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3NtYXJ0cGFya3Mvc21hcnRwYXJrLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUc3RCxPQUFPLEVBQ0wsU0FBUyxFQUVULGVBQWUsRUFBRSxhQUFhLEVBQy9CLE1BQU0sMkNBQTJDLENBQUM7QUFNbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0s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VCxzQkFBc0IsTUFjdEIsMkJBQTJCLE1BWTNCLGlDQUFpQyxNQVlqQyw0QkFBNEIsTUFPNUIsMkJBQTJCLE1BWTNCLHFDQUFxQyxNQWFyQyx5QkFBeUIsTUFPekIscUJBQXFCLE1BYXJCLHVCQUF1QixNQWF2QixpQkFBaUIsTUEyQmpCLGlCQUFpQixNQXVCakIsa0JBQWtCLE1BTWxCLHlCQUF5QixNQVF6Qiw4QkFBOEIsTUFPOUIsb0NBQW9DLE1BZ0JwQywyQkFBMkIsTUFzQjNCLDRCQUE0QixNQU81Qiw4QkFBOEIsTUFVOUIsd0NBQXdDLE1BVXhDLCtCQUErQixNQU8vQixnQkFBZ0IsTUFXaEIsMEJBQTBCLE1BVzFCLHNDQUFzQyxNQVF0Qyx3QkFBd0IsTUE0QnhCLGdDQUFnQyxNQWFoQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0ZSB9IGZyb20gJ0BuZ3hzL3JvdXRlci1wbHVnaW4nO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXItcG9zaXRpb24uZW51bSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBWRVJTSU9OX1YxIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3ZlcnNpb24tY29uc3RhbnRzJztcbmltcG9ydCB7IFNtYXJ0UGFya1N0YXR1c1RleHQgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBJUGFya0RldGFpbHMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BhcmstZGV0YWlscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUnBjIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eSc7XG5pbXBvcnQge1xuICBBcHBNb2R1bGUsIEJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eSwgRmFjaWxpdHlCYXNpY0R0bywgTGljZW5zZUNsb3VkU2VydmljZVByb3h5LCBPYmplY3RIdHRwUmVzcG9uc2VEYXRhLFxuICBTbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eSwgU21hcnRwYXJrRHRvLCBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG8sIFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSxcbiAgU21hcnRQYXJrU3RhdHVzLCBTbWFydFBhcmtUeXBlLCBTcEFuZFNwYXJrVmVyc2lvbnNEdG8sIFZhckR0b1xufSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBGYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LCBNb2JpbGVJZGVudGl0eVNlcnZpY2VQcm94eSwgU21hcnRwYXJrQmFzaWNEdG8sIFNtYXJ0UGFya1dyYXBwZXJEdG8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2lkZW50aXR5LXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBGYWNpbGl0eVJwY1NlcnZpY2VQcm94eSwgSURldmljZUR0byB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvcnBjLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBFeHBvcnRGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydC1maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmV2ZW51ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXZlbnVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGUuc2VydmljZSc7XG5pbXBvcnQgeyBwYXJzZUFwaUVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWxzL2FwaS1oZWxwZXIudXRpbCc7XG5pbXBvcnQgeyBnZXREZWZhdWx0RGV2aWNlU3RhdHVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGV2aWNlLnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IENsZWFyU2VsZWN0ZWRGYWNpbGl0eUFjdGlvbiwgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24gfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IE1lbnVTdWJNb2R1bGVMb2FkQWN0aW9uIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2xlYXJTZWxlY3RlZFBhcmtBY3Rpb24sIENsZWFyU2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24sIENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCBDbGVhclNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbixcbiAgRGlzY29ubmVjdFNtYXJ0UGFya0FjdGlvbiwgRXhwb3J0UGRmU21hcnRwYXJrc1RhYmxlQWN0aW9uLCBFeHBvcnRTbWFydHBhcmtBY3Rpb24sIExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uLFxuICBMb2FkQmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbiwgTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uLCBMb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uLFxuICBMb2FkUGFya0RldmljZXNBY3Rpb24sIExvYWRQYXJrc0FjdGlvbiwgTG9hZFNtYXJ0cGFya3NBY3Rpb24sIExvYWRTbWFydHBhcmtzQmFzaWNBY3Rpb24sIExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24sIExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24sXG4gIExvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24sIExvYWRWYXJzQWN0aW9uLCBTZWxlY3RQYXJrQWN0aW9uLCBTZWxlY3RTbWFydFBhcmtBY3Rpb24sIFNldFNtYXJ0UGFya0FjdGlvbixcbiAgU2V0U21hcnRQYXJrVGFibGVBY3Rpb24sIFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uLCBTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uLCBTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb25cbn0gZnJvbSAnLi9zbWFydHBhcmsuYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRwYXJrc1N0YXRlTW9kZWwge1xuICBzbWFydHBhcmtzOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW107XG4gIGxhdGVzdFNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXTtcbiAgU3BBbmRTcGFya1ZlcnNpb25zOiBTcEFuZFNwYXJrVmVyc2lvbnNEdG87XG4gIGNvdW50U21hcnRQYXJrczogbnVtYmVyO1xuICBjb3VudFBhcmtpbmdMb3RzOiBudW1iZXI7XG4gIHNlbGVjdGVkU21hcnRQYXJrSWQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRTbWFydFBhcms6IFNtYXJ0cGFya0R0bztcbiAgcGFya3M6IEZhY2lsaXR5QmFzaWNEdG9bXTtcbiAgc2VsZWN0ZWRQYXJrSWQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYXJrRGV0YWlsczogSVBhcmtEZXRhaWxzO1xuICBzbWFydHBhcmtHdWlkOiBzdHJpbmc7XG4gIHZlcnNpb25zOiBTdHJpbmdNYXA8c3RyaW5nPjtcbiAgc21hcnRQYXJrV3JhcHBlcjogU21hcnRQYXJrV3JhcHBlckR0bztcbiAgdmFyczogVmFyRHRvW107XG4gIGV4cG9ydFBkZlNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXTtcbiAgZmFjaWxpdHlUcmVlOiBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG9bXTtcbn1cblxuQEluamVjdGFibGUoKVxuQFN0YXRlPFNtYXJ0cGFya3NTdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICdzbWFydHBhcmsnLFxuICBkZWZhdWx0czoge1xuICAgIHNtYXJ0cGFya3M6IG51bGwsXG4gICAgbGF0ZXN0U21hcnRwYXJrczogbnVsbCxcbiAgICBjb3VudFNtYXJ0UGFya3M6IDAsXG4gICAgY291bnRQYXJraW5nTG90czogMCxcbiAgICBzZWxlY3RlZFNtYXJ0UGFya0lkOiBudWxsLFxuICAgIHNlbGVjdGVkU21hcnRQYXJrOiBudWxsLFxuICAgIHBhcmtzOiBudWxsLFxuICAgIHNlbGVjdGVkUGFya0lkOiBudWxsLFxuICAgIHNlbGVjdGVkUGFya0RldGFpbHM6IG51bGwsXG4gICAgc21hcnRwYXJrR3VpZDogbnVsbCxcbiAgICB2ZXJzaW9uczoge30sXG4gICAgU3BBbmRTcGFya1ZlcnNpb25zOiBudWxsLFxuICAgIHNtYXJ0UGFya1dyYXBwZXI6IG51bGwsXG4gICAgdmFyczogW10sXG4gICAgZXhwb3J0UGRmU21hcnRwYXJrczogbnVsbCxcbiAgICBmYWNpbGl0eVRyZWU6IFtdLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydHBhcmtTdGF0ZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSByZXZlbnVlU2VydmljZTogUmV2ZW51ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eTogU21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBmYWNpbGl0eVJwY1NlcnZpY2VQcm94eTogRmFjaWxpdHlScGNTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBmYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5OiBGYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZGV2aWNlUnBjU2VydmljZVByb3h5OiBScGMuRGV2aWNlUnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgbWVzc2FnZUJhclNlcnZpY2U6IE1lc3NhZ2VCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVTZXJ2aWNlOiBSb3V0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXhwb3J0RmlsZVNlcnZpY2U6IEV4cG9ydEZpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9iaWxlSWRlbnRpdHlTZXJ2aWNlUHJveHk6IE1vYmlsZUlkZW50aXR5U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5OiBCYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBsaWNlbnNlQ2xvdWRTZXJ2aWNlUHJveHk6IExpY2Vuc2VDbG91ZFNlcnZpY2VQcm94eSkge1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBGYWNpbGl0eUJhc2ljRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5wYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRQYXJrSWQoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkUGFya0RldGFpbHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogSVBhcmtEZXRhaWxzIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrRGV0YWlscztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgcGFya0RldmljZXMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogSURldmljZUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrRGV0YWlscz8uZGV2aWNlcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZ3VpZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGF0ZS5zbWFydHBhcmtHdWlkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzbWFydHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxhdGVzdFBhZ2Uoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdIHtcbiAgICByZXR1cm4gc3RhdGUubGF0ZXN0U21hcnRwYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRTbWFydFBhcmtJZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFNtYXJ0UGFya0lkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFNtYXJ0UGFya0RldGFpbHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRwYXJrRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRTbWFydFBhcms7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50U21hcnRQYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5jb3VudFNtYXJ0UGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50UGFya2luZ0xvdHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuY291bnRQYXJraW5nTG90cztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdmVyc2lvbnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU3RyaW5nTWFwPHN0cmluZz4ge1xuICAgIHJldHVybiBzdGF0ZS52ZXJzaW9ucztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc21hcnRwYXJrU2VhcmNoT3B0aW9ucyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTcEFuZFNwYXJrVmVyc2lvbnNEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5TcEFuZFNwYXJrVmVyc2lvbnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNtYXJ0UGFya1dyYXBwZXIoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRQYXJrV3JhcHBlckR0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0UGFya1dyYXBwZXI7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHZhcnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogVmFyRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS52YXJzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBleHBvcnRQZGZTbWFydHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLmV4cG9ydFBkZlNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGZhY2lsaXR5VHJlZShzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmZhY2lsaXR5VHJlZTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNtYXJ0cGFya3NBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFNtYXJ0cGFya3NBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydHBhcmtzOiBbXSxcbiAgICAgIGNvdW50U21hcnRQYXJrczogMCxcbiAgICAgIGNvdW50UGFya2luZ0xvdHM6IHRoaXMuY291bnRTbWFydHBhcmtGYWNpbGl0aWVzKFtdKVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLnNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5LmdldEFsbFNtYXJ0UGFya3MoKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IFNldFNtYXJ0UGFya0FjdGlvbihzbWFydHBhcmtzLmRhdGEsIGFjdGlvbi5yZWxvYWQpKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTbWFydHBhcmtzQmFzaWNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc0Jhc2ljQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkU21hcnRwYXJrc0Jhc2ljQWN0aW9uKSB7XG4gICAgY3R4LmRpc3BhdGNoKG5ldyBNZW51U3ViTW9kdWxlTG9hZEFjdGlvbihhY3Rpb24uc3ViTW9kdWxlKSk7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGwoYWN0aW9uLmFwcE1vZHVsZSk7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUoc3dpdGNoTWFwKHNtYXJ0cGFya0Jhc2ljID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgc21hcnRQYXJrV3JhcHBlcjogc21hcnRwYXJrQmFzaWMuZGF0YSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNtYXJ0cGFya0Jhc2ljQWxsQWN0aW9uKHNtYXJ0cGFya0Jhc2ljKSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZE1vYmlsZVNtYXJ0cGFya3NCYXNpY0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZE1vYmlsZVNtYXJ0cGFya3NCYXNpY0FjdGlvbikge1xuICAgIGN0eC5kaXNwYXRjaChuZXcgTWVudVN1Yk1vZHVsZUxvYWRBY3Rpb24oYWN0aW9uLnN1Yk1vZHVsZSkpO1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5tb2JpbGVJZGVudGl0eVNlcnZpY2VQcm94eS5tb2JpbGVHZXRTbWFydHBhcmtCYXNpY0FsbChhY3Rpb24uYXBwTW9kdWxlLCBWRVJTSU9OX1YxKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZShzd2l0Y2hNYXAoc21hcnRwYXJrQmFzaWMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzbWFydFBhcmtXcmFwcGVyOiBzbWFydHBhcmtCYXNpYy5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24oc21hcnRwYXJrQmFzaWMpKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBfOiBDbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0UGFya1dyYXBwZXI6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc1RhYmxlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBmaWx0ZXIgfTogTG9hZFNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoZmlsdGVyKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGxhdGVzdFNtYXJ0cGFya3M6IHNtYXJ0cGFya3MuZGF0YS5lbnRpdGllcyxcbiAgICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzLmRhdGEuY291bnRlcixcbiAgICAgICAgY291bnRQYXJraW5nTG90czogc21hcnRwYXJrcy5kYXRhLnN1YkNvdW50ZXJcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQmFja29mZmljZVNtYXJ0cGFya3NUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgZmlsdGVyIH06IExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU21hcnRwYXJrcyhmaWx0ZXIpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcChzbWFydHBhcmtzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbGF0ZXN0U21hcnRwYXJrczogc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzLFxuICAgICAgICBjb3VudFNtYXJ0UGFya3M6IHNtYXJ0cGFya3MuZGF0YS5jb3VudGVyLFxuICAgICAgICBjb3VudFBhcmtpbmdMb3RzOiBzbWFydHBhcmtzLmRhdGEuc3ViQ291bnRlclxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cblxuICBAQWN0aW9uKFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKVxuICBvblNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBzbWFydHBhcmtzIH06IFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc21hcnRwYXJrc1xuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTZXRTbWFydFBhcmtBY3Rpb24pXG4gIG9uU2V0U21hcnRQYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgc21hcnRwYXJrcywgcmVsb2FkIH06IFNldFNtYXJ0UGFya0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0cGFya3M6IHNtYXJ0cGFya3MgfHwgW10sXG4gICAgICBjb3VudFNtYXJ0UGFya3M6IHNtYXJ0cGFya3M/Lmxlbmd0aCB8fCAwLFxuICAgICAgY291bnRQYXJraW5nTG90czogdGhpcy5jb3VudFNtYXJ0cGFya0ZhY2lsaXRpZXMoc21hcnRwYXJrcylcbiAgICB9KTtcblxuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFya0lkKSB7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IFNlbGVjdFNtYXJ0UGFya0FjdGlvbihjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFya0lkLCByZWxvYWQpKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKFNlbGVjdFNtYXJ0UGFya0FjdGlvbilcbiAgb25TZWxlY3RTbWFydFBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdFNtYXJ0UGFya0FjdGlvbikge1xuICAgIGxldCBzZWxlY3RlZFNtYXJ0UGFyaztcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmNsZWFyTWVzc2FnZWJhcigpO1xuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtzKSB7XG4gICAgICBzZWxlY3RlZFNtYXJ0UGFyayA9IGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya3MuZmluZCgoc21hcnRwYXJrKSA9PiAoc21hcnRwYXJrIGFzIFNtYXJ0cGFya0R0bykuaWQgPT09IGFjdGlvbi5zbWFydFBhcmtJZCk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkU21hcnRQYXJrSWQ6IGFjdGlvbi5zbWFydFBhcmtJZCwgc2VsZWN0ZWRTbWFydFBhcmsgfSk7XG4gICAgICBpZiAoYWN0aW9uLnJlbG9hZCkge1xuICAgICAgICBjdHguZGlzcGF0Y2gobmV3IExvYWRQYXJrc0FjdGlvbigpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWRQYXJrc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRQYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkUGFya0RldGFpbHM6IG51bGwsIHNlbGVjdGVkUGFya0lkOiBudWxsIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbChBcHBNb2R1bGUuTWFuYWdlbWVudCkucGlwZSh0YXAoc21hcnRwYXJrTWFwID0+IHtcbiAgICAgIGNvbnN0IHsgZ3VpZCwgdHlwZSB9ID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRTbWFydFBhcms7XG4gICAgICBpZiAoc21hcnRwYXJrTWFwKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZFBhcmtJZDogbnVtYmVyO1xuICAgICAgICBjb25zdCBwYXJrcyA9IHNtYXJ0cGFya01hcC5kYXRhLnNtYXJ0UGFya3NbZ3VpZF0uZmFjaWxpdGllcztcbiAgICAgICAgaWYgKHR5cGUgPT09IFNtYXJ0UGFya1R5cGUuU3VwZXJQYXJrKSB7XG4gICAgICAgICAgY29uc3QgbXVsdGlQYXJrID0gcGFya3MuZmluZChwYXJrID0+IHBhcmsuaXNNdWx0aVBhcmspO1xuICAgICAgICAgIHNlbGVjdGVkUGFya0lkID0gbXVsdGlQYXJrID8gbXVsdGlQYXJrLmlkIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBwYXJrczogcGFya3MgfHwgW10sXG4gICAgICAgICAgc2VsZWN0ZWRQYXJrSWQ6IHNlbGVjdGVkUGFya0lkID8/IChwYXJrcz8ubGVuZ3RoICYmIHBhcmtzWzBdLmlkIHx8IG51bGwpLFxuICAgICAgICAgIHNtYXJ0cGFya0d1aWQ6IGd1aWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwYXJrcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY3R4LmRpc3BhdGNoKExvYWRQYXJrRGV2aWNlc0FjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRQYXJrRGV2aWNlc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRQYXJrRGV2aWNlcyhjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjb25zdCBwYXJrRGV0YWlsID0gY3R4LmdldFN0YXRlKCkucGFya3MuZmluZCgocGFyaykgPT4gcGFyay5pZCA9PT0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRQYXJrSWQpO1xuICAgIGNvbnN0IGd1aWQgPSBjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtHdWlkO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mYWNpbGl0eVJwY1NlcnZpY2VQcm94eS5nZXRGYWNpbGl0eShndWlkLCBwYXJrRGV0YWlsLmlkKSxcbiAgICAgIHRoaXMucmV2ZW51ZVNlcnZpY2UuZ2V0UmV2ZW51ZShwYXJrRGV0YWlsLmlkLCBndWlkKS5waXBlKGZpbHRlcihyZXZlbnVlID0+ICEhcmV2ZW51ZSkpLFxuICAgICAgdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0U21hcnRwYXJrc0RldmljZXMoZ3VpZCwgcGFya0RldGFpbC5pZCwgbnVsbCwgbnVsbCwgbnVsbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpLFxuICAgIF0pLnBpcGUodGFwKChbZmFjaWxpdHksIHJldmVudWVzLCBkZXZpY2VzXSkgPT4ge1xuICAgICAgY29uc3QgcmV2ZW51ZSA9IHBhcmtEZXRhaWwuaXNNdWx0aVBhcmsgPT0gMSA/IHRoaXMucmV2ZW51ZVNlcnZpY2UuY2FsY3VsYXRlUmV2ZW51ZUZvck11bHRpUGFyayhyZXZlbnVlcykgOiByZXZlbnVlc1twYXJrRGV0YWlsLmlkXTtcbiAgICAgIGRldmljZXM/LmRhdGEuZm9yRWFjaChkZXZpY2UgPT4gZGV2aWNlLmRldmljZVN0YXR1cyA9IGRldmljZS5kZXZpY2VTdGF0dXMgPz8gZ2V0RGVmYXVsdERldmljZVN0YXR1cyhkZXZpY2UpKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgc2VsZWN0ZWRQYXJrRGV0YWlsczoge1xuICAgICAgICAgIGZhY2lsaXR5OiBmYWNpbGl0eS5kYXRhLFxuICAgICAgICAgIGRldmljZXM6IGRldmljZXMuZGF0YSxcbiAgICAgICAgICByZXZlbnVlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG5cbiAgQEFjdGlvbihTZWxlY3RQYXJrQWN0aW9uKVxuICBvblNlbGVjdFBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdFBhcmtBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkUGFya0lkOiBhY3Rpb24ucGFya0lkIH0pO1xuICAgIGN0eC5kaXNwYXRjaChMb2FkUGFya0RldmljZXNBY3Rpb24pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlbGVjdGVkUGFya0FjdGlvbilcbiAgb25DbGVhclNlbGVjdGVkUGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBudWxsLFxuICAgICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24pXG4gIG9uQ2xlYXJTZWxlY3RlZHNtYXJ0cGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFNtYXJ0UGFya0lkOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKVxuICBvblNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBzZWxlY3RlZFBhcmtEZXRhaWxzID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRQYXJrRGV0YWlscztcbiAgICBpZiAoc2VsZWN0ZWRQYXJrRGV0YWlscykge1xuICAgICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZFBhcmtEZXRhaWxzPy5kZXZpY2VzPy5maW5kSW5kZXgoZGV2aWNlID0+IGRldmljZS5pZCA9PT0gYWN0aW9uLmRldmljZVN0YXR1cy5kZXZpY2VJRCk7XG4gICAgICBjb25zdCBjb21tdW5pY2F0aW9uUGVyY2VudGFnZSA9IHNlbGVjdGVkUGFya0RldGFpbHMuZGV2aWNlc1tpbmRleF0uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlO1xuICAgICAgY29uc3QgbmV3Q29tbVBlcmNlbnRhZ2UgPSBhY3Rpb24uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlO1xuICAgICAgaWYgKGluZGV4ID49IDAgJiYgY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgIT09IG5ld0NvbW1QZXJjZW50YWdlKSB7XG4gICAgICAgIHNlbGVjdGVkUGFya0RldGFpbHMuZGV2aWNlc1tpbmRleF0uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlID0gbmV3Q29tbVBlcmNlbnRhZ2U7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBjbG9uZURlZXAoc2VsZWN0ZWRQYXJrRGV0YWlscyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oRGlzY29ubmVjdFNtYXJ0UGFya0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkRpc2Nvbm5lY3RTbWFydHBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IHNtYXJ0UGFya0d1aWQsIHNtYXJ0UGFya0lkLCBwYXNzd29yZCB9OiBEaXNjb25uZWN0U21hcnRQYXJrQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrJCA9IHRoaXMuc21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHkuZGlzY29ubmVjdChwYXNzd29yZCwgc21hcnRQYXJrSWQsIFNtYXJ0UGFya1N0YXR1cy5Ob25hY3RpdmUpO1xuICAgIHJldHVybiBzbWFydHBhcmskLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6ICh2KSA9PiB7XG4gICAgICAgIGNvbnN0IHNtYXJ0cGFya3MgPSAoY3R4LmdldFN0YXRlKCkuc21hcnRwYXJrcyB8fCBbXSkuZmlsdGVyKHNwID0+IHNwLmd1aWQgIT09IHNtYXJ0UGFya0d1aWQpO1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgc2VsZWN0ZWRTbWFydFBhcms6IG51bGwsXG4gICAgICAgICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgICAgICAgc21hcnRwYXJrcyxcbiAgICAgICAgICBjb3VudFNtYXJ0UGFya3M6IHNtYXJ0cGFya3M/Lmxlbmd0aCB8fCAwLFxuICAgICAgICAgIGNvdW50UGFya2luZ0xvdHM6IHRoaXMuY291bnRTbWFydHBhcmtGYWNpbGl0aWVzKHNtYXJ0cGFya3MpXG4gICAgICAgIH0pO1xuICAgICAgICBjdHguZGlzcGF0Y2gobmV3IENsZWFyU2VsZWN0ZWRGYWNpbGl0eUFjdGlvbigpKTtcbiAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBOYXZpZ2F0ZSh0aGlzLnJvdXRlU2VydmljZS5nZXROYXZpZ2F0aW9uUm91dGUoWydtYW5hZ2VtZW50JywgJ3NtYXJ0cGFya3MnXSkpKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihwYXJzZUFwaUVycm9yTWVzc2FnZShlKSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLlN0YXRpYywgaWQ6ICdtb2RhbCcgfSk7XG4gICAgICB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0U21hcnRQYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uU2V0U21hcnRQYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgdmVyc2lvbnM6IGFjdGlvbi52ZXJzaW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbilcbiAgb25Mb2FkU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5TcEFuZFNwYXJrVmVyc2lvbnMgPT0gbnVsbCkge1xuICAgICAgY29uc3QgdmVyc2lvbnMkID0gdGhpcy5zbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eS5nZXRTcEFuZFNwYXJrVmVyc2lvbnMoKTtcbiAgICAgIHJldHVybiB2ZXJzaW9ucyQucGlwZSh0YXAodmVyc2lvbnMgPT4ge1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7IFNwQW5kU3BhcmtWZXJzaW9uczogdmVyc2lvbnMuZGF0YSB9KTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKVxuICBvbkxvYWRCYWNrb2ZmaWNlU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5TcEFuZFNwYXJrVmVyc2lvbnMgPT0gbnVsbCkge1xuICAgICAgY29uc3QgdmVyc2lvbnMkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9ucygpO1xuICAgICAgcmV0dXJuIHZlcnNpb25zJC5waXBlKHRhcCh2ZXJzaW9ucyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHsgU3BBbmRTcGFya1ZlcnNpb25zOiB2ZXJzaW9ucy5kYXRhIH0pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uQ2xlYXJTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgU3BBbmRTcGFya1ZlcnNpb25zOiBudWxsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRWYXJzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFZhcnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRWYXJzQWN0aW9uKSB7XG4gICAgY29uc3QgdmFycyQgPSB0aGlzLnNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5LmdldFZhcnMoYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLnNlYXJjaFRlcm0sXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkuY29sdW1uLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuICAgIHJldHVybiB2YXJzJC5waXBlKHRhcCh2YXJzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgdmFyczogdmFycy5kYXRhXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uKSB7XG4gICAgY29uc3QgdmFycyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlVmFycyhhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm1heFJlc3VsdHMsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5jb2x1bW4sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG4gICAgcmV0dXJuIHZhcnMkLnBpcGUodGFwKHZhcnMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICB2YXJzOiB2YXJzLmRhdGFcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oU3luY1VzZXJzQW5kUm9sZXNCeVNtYXJ0cGFya0lkQWN0aW9uKVxuICBvblN5bmNVc2Vyc0FuZFJvbGVzQnlTbWFydHBhcmtJZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogU3luY1VzZXJzQW5kUm9sZXNCeVNtYXJ0cGFya0lkQWN0aW9uKTogT2JzZXJ2YWJsZTxPYmplY3RIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LnN5bmNVc2Vyc0J5U21hcnRwYXJrSWQoYWN0aW9uLnNtYXJ0cGFyay50ZW5hbnRJRCwgYWN0aW9uLnNtYXJ0cGFyay5pZCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogXyA9PiB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uLnN1Y2Nlc3NmdWxfc3luY191c2Vyc19hbmRfcm9sZXNfZm9yX3NtYXJ0cGFyaywgeyBtZXNzYWdlUGFyYW1zOiB7IHNtYXJ0cGFya05hbWU6IGFjdGlvbi5zbWFydHBhcmsubmFtZSB9IH0pLFxuICAgICAgZXJyb3I6IGUgPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihwYXJzZUFwaUVycm9yTWVzc2FnZShlKSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLkZsb2F0IH0pLFxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oRXhwb3J0U21hcnRwYXJrQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uRXhwb3J0U21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogRXhwb3J0U21hcnRwYXJrQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU21hcnRwYXJrcyhhY3Rpb24uc21hcnRwYXJrRmlsdGVyKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoe1xuICAgICAgbmV4dDogc21hcnRwYXJrcyA9PiB7XG4gICAgICAgIGNvbnN0IHRhYmxlUm93czogYW55W11bXSA9IFtdO1xuICAgICAgICBjb25zdCBzbWFydHBhcmtzTGlzdDogU21hcnRwYXJrRHRvW10gPSBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXM7XG4gICAgICAgIHNtYXJ0cGFya3NMaXN0LmZvckVhY2goKHNtYXJ0cGFyaykgPT4ge1xuICAgICAgICAgIHRhYmxlUm93cy5wdXNoKFtcbiAgICAgICAgICAgIHNtYXJ0cGFyay5uYW1lLFxuICAgICAgICAgICAgU21hcnRQYXJrVHlwZVtzbWFydHBhcmsudHlwZV0ucmVwbGFjZSgvKFtBLVpdKS9nLCAnICQxJykudHJpbSgpLFxuICAgICAgICAgICAgc21hcnRwYXJrLnRlbmFudE5hbWUsXG4gICAgICAgICAgICBzbWFydHBhcmsudmVyc2lvbixcbiAgICAgICAgICAgIHNtYXJ0cGFyay5zcGFya1ZlcnNpb24sXG4gICAgICAgICAgICBzbWFydHBhcmsuY3JlYXRlZEF0LFxuICAgICAgICAgICAgc21hcnRwYXJrLmd1aWQsXG4gICAgICAgICAgICBzbWFydHBhcmsudmFyTmFtZSB8fCAnLScsXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChTbWFydFBhcmtTdGF0dXNUZXh0W1NtYXJ0UGFya1N0YXR1c1tzbWFydHBhcmsuc3RhdHVzXV0pXG4gICAgICAgICAgXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4cG9ydEZpbGVTZXJ2aWNlLmV4cG9ydChhY3Rpb24uZmlsZVR5cGUsIHRhYmxlUm93cywgYWN0aW9uLmNvbHVtbnNIZWFkZXIsIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5zbWFydHBhcmspKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5mYWlsZWRfZXhwb3J0X2ZpbGUpKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKEV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgZmlsdGVyIH06IEV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGV4cG9ydFBkZlNtYXJ0cGFya3M6IG51bGwsXG4gICAgfSk7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU21hcnRwYXJrcyhmaWx0ZXIpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcChzbWFydHBhcmtzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZXhwb3J0UGRmU21hcnRwYXJrczogc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkU21hcnRwYXJrc0Ryb3Bkb3duQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEFsbFNtYXJ0cGFya3NBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24pOiBPYnNlcnZhYmxlPFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5saWNlbnNlQ2xvdWRTZXJ2aWNlUHJveHkuYmFzZVNtYXJ0cGFya3MoYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkuY29sdW1uLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuXG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKGZhY2lsaXR5VHJlZUR0byA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGZhY2lsaXR5VHJlZTogZmFjaWxpdHlUcmVlRHRvLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGNvdW50U21hcnRwYXJrRmFjaWxpdGllcyhzbWFydHBhcmtzOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW10pOiBudW1iZXIge1xuICAgIGxldCBjb3VudFBhcmtpbmdMb3RzID0gMDtcblxuICAgIHNtYXJ0cGFya3MuZm9yRWFjaChzbWFydFBhcmsgPT4ge1xuICAgICAgaWYgKHNtYXJ0UGFyay5mYWNpbGl0aWVzKSB7XG4gICAgICAgIGNvdW50UGFya2luZ0xvdHMgKz0gc21hcnRQYXJrLmZhY2lsaXRpZXMuZmlsdGVyKGYgPT4gIWYuaXNNdWx0aVBhcmspLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb3VudFBhcmtpbmdMb3RzO1xuICB9XG59XG4iXX0=
|
|
529
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwYXJrLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3NtYXJ0cGFya3Mvc21hcnRwYXJrLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUc3RCxPQUFPLEVBQ0wsU0FBUyxFQUVULGVBQWUsRUFBRSxhQUFhLEVBQy9CLE1BQU0sMkNBQTJDLENBQUM7QUFNbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0s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QUFpQyxNQVlqQyw0QkFBNEIsTUFPNUIsMkJBQTJCLE1BWTNCLHFDQUFxQyxNQWFyQyx5QkFBeUIsTUFPekIscUJBQXFCLE1BYXJCLHVCQUF1QixNQWF2QixpQkFBaUIsTUEyQmpCLGlCQUFpQixNQXVCakIsa0JBQWtCLE1BTWxCLHlCQUF5QixNQVF6Qiw4QkFBOEIsTUFPOUIsb0NBQW9DLE1BZ0JwQywyQkFBMkIsTUFzQjNCLDRCQUE0QixNQU81Qiw4QkFBOEIsTUFVOUIsd0NBQXdDLE1BVXhDLCtCQUErQixNQU8vQixnQkFBZ0IsTUFXaEIsMEJBQTBCLE1BVzFCLHNDQUFzQyxNQVF0Qyx3QkFBd0IsTUE0QnhCLGdDQUFnQyxNQWFoQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0ZSB9IGZyb20gJ0BuZ3hzL3JvdXRlci1wbHVnaW4nO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXItcG9zaXRpb24uZW51bSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBWRVJTSU9OX1YxIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3ZlcnNpb24tY29uc3RhbnRzJztcbmltcG9ydCB7IFNtYXJ0UGFya1N0YXR1c1RleHQgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBJUGFya0RldGFpbHMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BhcmstZGV0YWlscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUnBjIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eSc7XG5pbXBvcnQge1xuICBBcHBNb2R1bGUsIEJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eSwgRmFjaWxpdHlCYXNpY0R0bywgTGljZW5zZUNsb3VkU2VydmljZVByb3h5LCBPYmplY3RIdHRwUmVzcG9uc2VEYXRhLFxuICBTbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eSwgU21hcnRwYXJrRHRvLCBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG8sIFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSxcbiAgU21hcnRQYXJrU3RhdHVzLCBTbWFydFBhcmtUeXBlLCBTcEFuZFNwYXJrVmVyc2lvbnNEdG8sIFZhckR0b1xufSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBGYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LCBNb2JpbGVJZGVudGl0eVNlcnZpY2VQcm94eSwgU21hcnRwYXJrQmFzaWNEdG8sIFNtYXJ0UGFya1dyYXBwZXJEdG8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2lkZW50aXR5LXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBGYWNpbGl0eVJwY1NlcnZpY2VQcm94eSwgSURldmljZUR0byB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvcnBjLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBFeHBvcnRGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydC1maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmV2ZW51ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXZlbnVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGUuc2VydmljZSc7XG5pbXBvcnQgeyBwYXJzZUFwaUVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWxzL2FwaS1oZWxwZXIudXRpbCc7XG5pbXBvcnQgeyBnZXREZWZhdWx0RGV2aWNlU3RhdHVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGV2aWNlLnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IENsZWFyU2VsZWN0ZWRGYWNpbGl0eUFjdGlvbiwgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24gfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IE1lbnVTdWJNb2R1bGVMb2FkQWN0aW9uIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2xlYXJTZWxlY3RlZFBhcmtBY3Rpb24sIENsZWFyU2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24sIENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCBDbGVhclNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbixcbiAgRGlzY29ubmVjdFNtYXJ0UGFya0FjdGlvbiwgRXhwb3J0UGRmU21hcnRwYXJrc1RhYmxlQWN0aW9uLCBFeHBvcnRTbWFydHBhcmtBY3Rpb24sIExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uLFxuICBMb2FkQmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbiwgTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uLCBMb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uLFxuICBMb2FkUGFya0RldmljZXNBY3Rpb24sIExvYWRQYXJrc0FjdGlvbiwgTG9hZFNtYXJ0cGFya3NBY3Rpb24sIExvYWRTbWFydHBhcmtzQmFzaWNBY3Rpb24sIExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24sIExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24sXG4gIExvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24sIExvYWRWYXJzQWN0aW9uLCBTZWxlY3RQYXJrQWN0aW9uLCBTZWxlY3RTbWFydFBhcmtBY3Rpb24sIFNldFNtYXJ0UGFya0FjdGlvbixcbiAgU2V0U21hcnRQYXJrVGFibGVBY3Rpb24sIFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uLCBTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uLCBTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb25cbn0gZnJvbSAnLi9zbWFydHBhcmsuYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRwYXJrc1N0YXRlTW9kZWwge1xuICBzbWFydHBhcmtzOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW107XG4gIGxhdGVzdFNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXTtcbiAgU3BBbmRTcGFya1ZlcnNpb25zOiBTcEFuZFNwYXJrVmVyc2lvbnNEdG87XG4gIGNvdW50U21hcnRQYXJrczogbnVtYmVyO1xuICBjb3VudFBhcmtpbmdMb3RzOiBudW1iZXI7XG4gIHNlbGVjdGVkU21hcnRQYXJrSWQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRTbWFydFBhcms6IFNtYXJ0cGFya0R0bztcbiAgcGFya3M6IEZhY2lsaXR5QmFzaWNEdG9bXTtcbiAgc2VsZWN0ZWRQYXJrSWQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYXJrRGV0YWlsczogSVBhcmtEZXRhaWxzO1xuICBzbWFydHBhcmtHdWlkOiBzdHJpbmc7XG4gIHZlcnNpb25zOiBTdHJpbmdNYXA8c3RyaW5nPjtcbiAgc21hcnRQYXJrV3JhcHBlcjogU21hcnRQYXJrV3JhcHBlckR0bztcbiAgdmFyczogVmFyRHRvW107XG4gIGV4cG9ydFBkZlNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXTtcbiAgZmFjaWxpdHlUcmVlOiBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG9bXTtcbn1cblxuQEluamVjdGFibGUoKVxuQFN0YXRlPFNtYXJ0cGFya3NTdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICdzbWFydHBhcmsnLFxuICBkZWZhdWx0czoge1xuICAgIHNtYXJ0cGFya3M6IG51bGwsXG4gICAgbGF0ZXN0U21hcnRwYXJrczogbnVsbCxcbiAgICBjb3VudFNtYXJ0UGFya3M6IDAsXG4gICAgY291bnRQYXJraW5nTG90czogMCxcbiAgICBzZWxlY3RlZFNtYXJ0UGFya0lkOiBudWxsLFxuICAgIHNlbGVjdGVkU21hcnRQYXJrOiBudWxsLFxuICAgIHBhcmtzOiBudWxsLFxuICAgIHNlbGVjdGVkUGFya0lkOiBudWxsLFxuICAgIHNlbGVjdGVkUGFya0RldGFpbHM6IG51bGwsXG4gICAgc21hcnRwYXJrR3VpZDogbnVsbCxcbiAgICB2ZXJzaW9uczoge30sXG4gICAgU3BBbmRTcGFya1ZlcnNpb25zOiBudWxsLFxuICAgIHNtYXJ0UGFya1dyYXBwZXI6IG51bGwsXG4gICAgdmFyczogW10sXG4gICAgZXhwb3J0UGRmU21hcnRwYXJrczogbnVsbCxcbiAgICBmYWNpbGl0eVRyZWU6IFtdLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydHBhcmtTdGF0ZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSByZXZlbnVlU2VydmljZTogUmV2ZW51ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eTogU21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBmYWNpbGl0eVJwY1NlcnZpY2VQcm94eTogRmFjaWxpdHlScGNTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBmYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5OiBGYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZGV2aWNlUnBjU2VydmljZVByb3h5OiBScGMuRGV2aWNlUnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgbWVzc2FnZUJhclNlcnZpY2U6IE1lc3NhZ2VCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVTZXJ2aWNlOiBSb3V0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXhwb3J0RmlsZVNlcnZpY2U6IEV4cG9ydEZpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9iaWxlSWRlbnRpdHlTZXJ2aWNlUHJveHk6IE1vYmlsZUlkZW50aXR5U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5OiBCYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBsaWNlbnNlQ2xvdWRTZXJ2aWNlUHJveHk6IExpY2Vuc2VDbG91ZFNlcnZpY2VQcm94eSkge1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBGYWNpbGl0eUJhc2ljRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5wYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRQYXJrSWQoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkUGFya0RldGFpbHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogSVBhcmtEZXRhaWxzIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrRGV0YWlscztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgcGFya0RldmljZXMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogSURldmljZUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrRGV0YWlscz8uZGV2aWNlcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZ3VpZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGF0ZS5zbWFydHBhcmtHdWlkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzbWFydHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxhdGVzdFBhZ2Uoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdIHtcbiAgICByZXR1cm4gc3RhdGUubGF0ZXN0U21hcnRwYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRTbWFydFBhcmtJZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFNtYXJ0UGFya0lkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFNtYXJ0UGFya0RldGFpbHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRwYXJrRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRTbWFydFBhcms7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50U21hcnRQYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5jb3VudFNtYXJ0UGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50UGFya2luZ0xvdHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuY291bnRQYXJraW5nTG90cztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdmVyc2lvbnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU3RyaW5nTWFwPHN0cmluZz4ge1xuICAgIHJldHVybiBzdGF0ZS52ZXJzaW9ucztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc21hcnRwYXJrU2VhcmNoT3B0aW9ucyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTcEFuZFNwYXJrVmVyc2lvbnNEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5TcEFuZFNwYXJrVmVyc2lvbnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNtYXJ0UGFya1dyYXBwZXIoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRQYXJrV3JhcHBlckR0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0UGFya1dyYXBwZXI7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHZhcnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogVmFyRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS52YXJzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBleHBvcnRQZGZTbWFydHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLmV4cG9ydFBkZlNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGZhY2lsaXR5VHJlZShzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmZhY2lsaXR5VHJlZTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNtYXJ0cGFya3NBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFNtYXJ0cGFya3NBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydHBhcmtzOiBbXSxcbiAgICAgIGNvdW50U21hcnRQYXJrczogMCxcbiAgICAgIGNvdW50UGFya2luZ0xvdHM6IHRoaXMuY291bnRTbWFydHBhcmtGYWNpbGl0aWVzKFtdKVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLnNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5LmdldEFsbFNtYXJ0UGFya3MoKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IFNldFNtYXJ0UGFya0FjdGlvbihzbWFydHBhcmtzLmRhdGEsIGFjdGlvbi5yZWxvYWQpKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTbWFydHBhcmtzQmFzaWNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc0Jhc2ljQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkU21hcnRwYXJrc0Jhc2ljQWN0aW9uKSB7XG4gICAgY3R4LmRpc3BhdGNoKG5ldyBNZW51U3ViTW9kdWxlTG9hZEFjdGlvbihhY3Rpb24uc3ViTW9kdWxlKSk7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGwoYWN0aW9uLmFwcE1vZHVsZSk7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUoc3dpdGNoTWFwKHNtYXJ0cGFya0Jhc2ljID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgc21hcnRQYXJrV3JhcHBlcjogc21hcnRwYXJrQmFzaWMuZGF0YSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNtYXJ0cGFya0Jhc2ljQWxsQWN0aW9uKHNtYXJ0cGFya0Jhc2ljKSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZE1vYmlsZVNtYXJ0cGFya3NCYXNpY0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZE1vYmlsZVNtYXJ0cGFya3NCYXNpY0FjdGlvbikge1xuICAgIGN0eC5kaXNwYXRjaChuZXcgTWVudVN1Yk1vZHVsZUxvYWRBY3Rpb24oYWN0aW9uLnN1Yk1vZHVsZSkpO1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5tb2JpbGVJZGVudGl0eVNlcnZpY2VQcm94eS5tb2JpbGVHZXRTbWFydHBhcmtCYXNpY0FsbChhY3Rpb24uYXBwTW9kdWxlLCBWRVJTSU9OX1YxKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZShzd2l0Y2hNYXAoc21hcnRwYXJrQmFzaWMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzbWFydFBhcmtXcmFwcGVyOiBzbWFydHBhcmtCYXNpYy5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24oc21hcnRwYXJrQmFzaWMpKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBfOiBDbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0UGFya1dyYXBwZXI6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc1RhYmxlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBmaWx0ZXIgfTogTG9hZFNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoZmlsdGVyKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGxhdGVzdFNtYXJ0cGFya3M6IHNtYXJ0cGFya3MuZGF0YS5lbnRpdGllcyxcbiAgICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzLmRhdGEuY291bnRlcixcbiAgICAgICAgY291bnRQYXJraW5nTG90czogc21hcnRwYXJrcy5kYXRhLnN1YkNvdW50ZXJcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQmFja29mZmljZVNtYXJ0cGFya3NUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgZmlsdGVyIH06IExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU21hcnRwYXJrcyhmaWx0ZXIpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcChzbWFydHBhcmtzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbGF0ZXN0U21hcnRwYXJrczogc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzLFxuICAgICAgICBjb3VudFNtYXJ0UGFya3M6IHNtYXJ0cGFya3MuZGF0YS5jb3VudGVyLFxuICAgICAgICBjb3VudFBhcmtpbmdMb3RzOiBzbWFydHBhcmtzLmRhdGEuc3ViQ291bnRlclxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cblxuICBAQWN0aW9uKFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKVxuICBvblNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBzbWFydHBhcmtzIH06IFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc21hcnRwYXJrc1xuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTZXRTbWFydFBhcmtBY3Rpb24pXG4gIG9uU2V0U21hcnRQYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgc21hcnRwYXJrcywgcmVsb2FkIH06IFNldFNtYXJ0UGFya0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0cGFya3M6IHNtYXJ0cGFya3MgfHwgW10sXG4gICAgICBjb3VudFNtYXJ0UGFya3M6IHNtYXJ0cGFya3M/Lmxlbmd0aCB8fCAwLFxuICAgICAgY291bnRQYXJraW5nTG90czogdGhpcy5jb3VudFNtYXJ0cGFya0ZhY2lsaXRpZXMoc21hcnRwYXJrcylcbiAgICB9KTtcblxuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFya0lkKSB7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IFNlbGVjdFNtYXJ0UGFya0FjdGlvbihjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFya0lkLCByZWxvYWQpKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKFNlbGVjdFNtYXJ0UGFya0FjdGlvbilcbiAgb25TZWxlY3RTbWFydFBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdFNtYXJ0UGFya0FjdGlvbikge1xuICAgIGxldCBzZWxlY3RlZFNtYXJ0UGFyaztcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmNsZWFyTWVzc2FnZWJhcigpO1xuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtzKSB7XG4gICAgICBzZWxlY3RlZFNtYXJ0UGFyayA9IGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya3MuZmluZCgoc21hcnRwYXJrKSA9PiAoc21hcnRwYXJrIGFzIFNtYXJ0cGFya0R0bykuaWQgPT09IGFjdGlvbi5zbWFydFBhcmtJZCk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkU21hcnRQYXJrSWQ6IGFjdGlvbi5zbWFydFBhcmtJZCwgc2VsZWN0ZWRTbWFydFBhcmsgfSk7XG4gICAgICBpZiAoYWN0aW9uLnJlbG9hZCkge1xuICAgICAgICBjdHguZGlzcGF0Y2gobmV3IExvYWRQYXJrc0FjdGlvbigpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWRQYXJrc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRQYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkUGFya0RldGFpbHM6IG51bGwsIHNlbGVjdGVkUGFya0lkOiBudWxsIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbChBcHBNb2R1bGUuTWFuYWdlbWVudCkucGlwZSh0YXAoc21hcnRwYXJrTWFwID0+IHtcbiAgICAgIGNvbnN0IHsgZ3VpZCwgdHlwZSB9ID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRTbWFydFBhcms7XG4gICAgICBpZiAoc21hcnRwYXJrTWFwKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZFBhcmtJZDogbnVtYmVyO1xuICAgICAgICBjb25zdCBwYXJrcyA9IHNtYXJ0cGFya01hcC5kYXRhLnNtYXJ0UGFya3NbZ3VpZF0uZmFjaWxpdGllcztcbiAgICAgICAgaWYgKHR5cGUgPT09IFNtYXJ0UGFya1R5cGUuU3VwZXJQYXJrKSB7XG4gICAgICAgICAgY29uc3QgbXVsdGlQYXJrID0gcGFya3MuZmluZChwYXJrID0+IHBhcmsuaXNNdWx0aVBhcmspO1xuICAgICAgICAgIHNlbGVjdGVkUGFya0lkID0gbXVsdGlQYXJrID8gbXVsdGlQYXJrLmlkIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBwYXJrczogcGFya3MgfHwgW10sXG4gICAgICAgICAgc2VsZWN0ZWRQYXJrSWQ6IHNlbGVjdGVkUGFya0lkID8/IChwYXJrcz8ubGVuZ3RoICYmIHBhcmtzWzBdLmlkIHx8IG51bGwpLFxuICAgICAgICAgIHNtYXJ0cGFya0d1aWQ6IGd1aWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwYXJrcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY3R4LmRpc3BhdGNoKExvYWRQYXJrRGV2aWNlc0FjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRQYXJrRGV2aWNlc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRQYXJrRGV2aWNlcyhjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjb25zdCBwYXJrRGV0YWlsID0gY3R4LmdldFN0YXRlKCkucGFya3MuZmluZCgocGFyaykgPT4gcGFyay5pZCA9PT0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRQYXJrSWQpO1xuICAgIGNvbnN0IGd1aWQgPSBjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtHdWlkO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mYWNpbGl0eVJwY1NlcnZpY2VQcm94eS5nZXRGYWNpbGl0eShndWlkLCBwYXJrRGV0YWlsLmlkKSxcbiAgICAgIHRoaXMucmV2ZW51ZVNlcnZpY2UuZ2V0UmV2ZW51ZShwYXJrRGV0YWlsLmlkLCBndWlkKS5waXBlKGZpbHRlcihyZXZlbnVlID0+ICEhcmV2ZW51ZSkpLFxuICAgICAgdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0U21hcnRwYXJrc0RldmljZXMoZ3VpZCwgcGFya0RldGFpbC5pZCwgbnVsbCwgbnVsbCwgbnVsbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpLFxuICAgIF0pLnBpcGUodGFwKChbZmFjaWxpdHksIHJldmVudWVzLCBkZXZpY2VzXSkgPT4ge1xuICAgICAgY29uc3QgcmV2ZW51ZSA9IHBhcmtEZXRhaWwuaXNNdWx0aVBhcmsgPT0gMSA/IHRoaXMucmV2ZW51ZVNlcnZpY2UuY2FsY3VsYXRlUmV2ZW51ZUZvck11bHRpUGFyayhyZXZlbnVlcykgOiByZXZlbnVlc1twYXJrRGV0YWlsLmlkXTtcbiAgICAgIGRldmljZXM/LmRhdGEuZm9yRWFjaChkZXZpY2UgPT4gZGV2aWNlLmRldmljZVN0YXR1cyA9IGRldmljZS5kZXZpY2VTdGF0dXMgPz8gZ2V0RGVmYXVsdERldmljZVN0YXR1cyhkZXZpY2UpKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgc2VsZWN0ZWRQYXJrRGV0YWlsczoge1xuICAgICAgICAgIGZhY2lsaXR5OiBmYWNpbGl0eS5kYXRhLFxuICAgICAgICAgIGRldmljZXM6IGRldmljZXMuZGF0YSxcbiAgICAgICAgICByZXZlbnVlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG5cbiAgQEFjdGlvbihTZWxlY3RQYXJrQWN0aW9uKVxuICBvblNlbGVjdFBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdFBhcmtBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkUGFya0lkOiBhY3Rpb24ucGFya0lkIH0pO1xuICAgIGN0eC5kaXNwYXRjaChMb2FkUGFya0RldmljZXNBY3Rpb24pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlbGVjdGVkUGFya0FjdGlvbilcbiAgb25DbGVhclNlbGVjdGVkUGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBudWxsLFxuICAgICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24pXG4gIG9uQ2xlYXJTZWxlY3RlZHNtYXJ0cGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFNtYXJ0UGFya0lkOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKVxuICBvblNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBzZWxlY3RlZFBhcmtEZXRhaWxzID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRQYXJrRGV0YWlscztcbiAgICBpZiAoc2VsZWN0ZWRQYXJrRGV0YWlscykge1xuICAgICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZFBhcmtEZXRhaWxzPy5kZXZpY2VzPy5maW5kSW5kZXgoZGV2aWNlID0+IGRldmljZS5pZCA9PT0gYWN0aW9uLmRldmljZVN0YXR1cy5kZXZpY2VJRCk7XG4gICAgICBjb25zdCBjb21tdW5pY2F0aW9uUGVyY2VudGFnZSA9IHNlbGVjdGVkUGFya0RldGFpbHMuZGV2aWNlc1tpbmRleF0uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlO1xuICAgICAgY29uc3QgbmV3Q29tbVBlcmNlbnRhZ2UgPSBhY3Rpb24uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlO1xuICAgICAgaWYgKGluZGV4ID49IDAgJiYgY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgIT09IG5ld0NvbW1QZXJjZW50YWdlKSB7XG4gICAgICAgIHNlbGVjdGVkUGFya0RldGFpbHMuZGV2aWNlc1tpbmRleF0uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlID0gbmV3Q29tbVBlcmNlbnRhZ2U7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBjbG9uZURlZXAoc2VsZWN0ZWRQYXJrRGV0YWlscyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oRGlzY29ubmVjdFNtYXJ0UGFya0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkRpc2Nvbm5lY3RTbWFydHBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IHNtYXJ0UGFya0d1aWQsIHBhc3N3b3JkIH06IERpc2Nvbm5lY3RTbWFydFBhcmtBY3Rpb24pIHtcbiAgICBjb25zdCBzbWFydHBhcmskID0gdGhpcy5zbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eS5kaXNjb25uZWN0KHBhc3N3b3JkLCBzbWFydFBhcmtHdWlkKTtcbiAgICByZXR1cm4gc21hcnRwYXJrJC5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAodikgPT4ge1xuICAgICAgICBjb25zdCBzbWFydHBhcmtzID0gKGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya3MgfHwgW10pLmZpbHRlcihzcCA9PiBzcC5ndWlkICE9PSBzbWFydFBhcmtHdWlkKTtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGVkU21hcnRQYXJrOiBudWxsLFxuICAgICAgICAgIHNlbGVjdGVkUGFya0lkOiBudWxsLFxuICAgICAgICAgIHNtYXJ0cGFya3MsXG4gICAgICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzPy5sZW5ndGggfHwgMCxcbiAgICAgICAgICBjb3VudFBhcmtpbmdMb3RzOiB0aGlzLmNvdW50U21hcnRwYXJrRmFjaWxpdGllcyhzbWFydHBhcmtzKVxuICAgICAgICB9KTtcbiAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBDbGVhclNlbGVjdGVkRmFjaWxpdHlBY3Rpb24oKSk7XG4gICAgICAgIGN0eC5kaXNwYXRjaChuZXcgTmF2aWdhdGUodGhpcy5yb3V0ZVNlcnZpY2UuZ2V0TmF2aWdhdGlvblJvdXRlKFsnbWFuYWdlbWVudCcsICdzbWFydHBhcmtzJ10pKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IocGFyc2VBcGlFcnJvck1lc3NhZ2UoZSksIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMsIGlkOiAnbW9kYWwnIH0pO1xuICAgICAgfSxcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKVxuICBvblNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHZlcnNpb25zOiBhY3Rpb24udmVyc2lvbnMsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uTG9hZFNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBpZiAoY3R4LmdldFN0YXRlKCkuU3BBbmRTcGFya1ZlcnNpb25zID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZlcnNpb25zJCA9IHRoaXMuc21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0U3BBbmRTcGFya1ZlcnNpb25zKCk7XG4gICAgICByZXR1cm4gdmVyc2lvbnMkLnBpcGUodGFwKHZlcnNpb25zID0+IHtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoeyBTcEFuZFNwYXJrVmVyc2lvbnM6IHZlcnNpb25zLmRhdGEgfSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihMb2FkQmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbilcbiAgb25Mb2FkQmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBpZiAoY3R4LmdldFN0YXRlKCkuU3BBbmRTcGFya1ZlcnNpb25zID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZlcnNpb25zJCA9IHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnMoKTtcbiAgICAgIHJldHVybiB2ZXJzaW9ucyQucGlwZSh0YXAodmVyc2lvbnMgPT4ge1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7IFNwQW5kU3BhcmtWZXJzaW9uczogdmVyc2lvbnMuZGF0YSB9KTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKVxuICBvbkNsZWFyU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIFNwQW5kU3BhcmtWZXJzaW9uczogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkVmFyc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRWYXJzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkVmFyc0FjdGlvbikge1xuICAgIGNvbnN0IHZhcnMkID0gdGhpcy5zbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eS5nZXRWYXJzKGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ubWF4UmVzdWx0cywgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcbiAgICByZXR1cm4gdmFycyQucGlwZSh0YXAodmFycyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHZhcnM6IHZhcnMuZGF0YVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkQmFja29mZmljZVZhcnNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQmFja29mZmljZVZhcnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbikge1xuICAgIGNvbnN0IHZhcnMkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVZhcnMoYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLnNlYXJjaFRlcm0sXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkuY29sdW1uLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuICAgIHJldHVybiB2YXJzJC5waXBlKHRhcCh2YXJzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgdmFyczogdmFycy5kYXRhXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFN5bmNVc2Vyc0FuZFJvbGVzQnlTbWFydHBhcmtJZEFjdGlvbilcbiAgb25TeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFN5bmNVc2Vyc0FuZFJvbGVzQnlTbWFydHBhcmtJZEFjdGlvbik6IE9ic2VydmFibGU8T2JqZWN0SHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5zeW5jVXNlcnNCeVNtYXJ0cGFya0lkKGFjdGlvbi5zbWFydHBhcmsudGVuYW50SUQsIGFjdGlvbi5zbWFydHBhcmsuaWQpLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IF8gPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbi5zdWNjZXNzZnVsX3N5bmNfdXNlcnNfYW5kX3JvbGVzX2Zvcl9zbWFydHBhcmssIHsgbWVzc2FnZVBhcmFtczogeyBzbWFydHBhcmtOYW1lOiBhY3Rpb24uc21hcnRwYXJrLm5hbWUgfSB9KSxcbiAgICAgIGVycm9yOiBlID0+IHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IocGFyc2VBcGlFcnJvck1lc3NhZ2UoZSksIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5GbG9hdCB9KSxcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKEV4cG9ydFNtYXJ0cGFya0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkV4cG9ydFNtYXJ0cGFya3NBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IEV4cG9ydFNtYXJ0cGFya0FjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoYWN0aW9uLnNtYXJ0cGFya0ZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IHNtYXJ0cGFya3MgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZVJvd3M6IGFueVtdW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc21hcnRwYXJrc0xpc3Q6IFNtYXJ0cGFya0R0b1tdID0gc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzO1xuICAgICAgICBzbWFydHBhcmtzTGlzdC5mb3JFYWNoKChzbWFydHBhcmspID0+IHtcbiAgICAgICAgICB0YWJsZVJvd3MucHVzaChbXG4gICAgICAgICAgICBzbWFydHBhcmsubmFtZSxcbiAgICAgICAgICAgIFNtYXJ0UGFya1R5cGVbc21hcnRwYXJrLnR5cGVdLnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpLnRyaW0oKSxcbiAgICAgICAgICAgIHNtYXJ0cGFyay50ZW5hbnROYW1lLFxuICAgICAgICAgICAgc21hcnRwYXJrLnZlcnNpb24sXG4gICAgICAgICAgICBzbWFydHBhcmsuc3BhcmtWZXJzaW9uLFxuICAgICAgICAgICAgc21hcnRwYXJrLmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIHNtYXJ0cGFyay5ndWlkLFxuICAgICAgICAgICAgc21hcnRwYXJrLnZhck5hbWUgfHwgJy0nLFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoU21hcnRQYXJrU3RhdHVzVGV4dFtTbWFydFBhcmtTdGF0dXNbc21hcnRwYXJrLnN0YXR1c11dKVxuICAgICAgICAgIF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnQoYWN0aW9uLmZpbGVUeXBlLCB0YWJsZVJvd3MsIGFjdGlvbi5jb2x1bW5zSGVhZGVyLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uc21hcnRwYXJrKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZmFpbGVkX2V4cG9ydF9maWxlKSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihFeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25FeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGZpbHRlciB9OiBFeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBudWxsLFxuICAgIH0pO1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoZmlsdGVyKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGV4cG9ydFBkZlNtYXJ0cGFya3M6IHNtYXJ0cGFya3MuZGF0YS5lbnRpdGllcyxcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNtYXJ0cGFya3NEcm9wZG93bkFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRBbGxTbWFydHBhcmtzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkU21hcnRwYXJrc0Ryb3Bkb3duQWN0aW9uKTogT2JzZXJ2YWJsZTxTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBzbWFydHBhcmtzJCA9IHRoaXMubGljZW5zZUNsb3VkU2VydmljZVByb3h5LmJhc2VTbWFydHBhcmtzKGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ubWF4UmVzdWx0cyxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcblxuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcChmYWNpbGl0eVRyZWVEdG8gPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBmYWNpbGl0eVRyZWU6IGZhY2lsaXR5VHJlZUR0by5kYXRhLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3VudFNtYXJ0cGFya0ZhY2lsaXRpZXMoc21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnRQYXJraW5nTG90cyA9IDA7XG5cbiAgICBzbWFydHBhcmtzLmZvckVhY2goc21hcnRQYXJrID0+IHtcbiAgICAgIGlmIChzbWFydFBhcmsuZmFjaWxpdGllcykge1xuICAgICAgICBjb3VudFBhcmtpbmdMb3RzICs9IHNtYXJ0UGFyay5mYWNpbGl0aWVzLmZpbHRlcihmID0+ICFmLmlzTXVsdGlQYXJrKS5sZW5ndGg7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY291bnRQYXJraW5nTG90cztcbiAgfVxufVxuIl19
|