@loxia/mst-viewer 5.7.0 → 5.7.1-202307050944

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.
Files changed (30) hide show
  1. package/esm2020/generated.version.mjs +2 -2
  2. package/esm2020/lib/components/mstviewer/mstviewer.component.mjs +15 -31
  3. package/esm2020/lib/components/ritdelen-lijst/ritdelen-lijst.component.mjs +2 -2
  4. package/esm2020/lib/mst-viewer.module.mjs +4 -2
  5. package/esm2020/lib/services/base-rest.service.mjs +26 -0
  6. package/esm2020/lib/services/beweging-verrijker.service.mjs +7 -18
  7. package/esm2020/lib/services/connector.service.mjs +30 -0
  8. package/esm2020/lib/services/debug.service.mjs +11 -19
  9. package/esm2020/lib/services/signalerings-beeld-manager.service.mjs +4 -1
  10. package/esm2020/lib/state/actions/actions.mjs +7 -1
  11. package/esm2020/lib/state/effect/laad-signaleringsbeelden.effect.mjs +52 -20
  12. package/esm2020/lib/state/effect/rit-goedkeuren.effect.mjs +2 -2
  13. package/esm2020/lib/state/effect/svg-view.effect.mjs +49 -0
  14. package/esm2020/lib/state/mst-editor-state.mjs +3 -1
  15. package/fesm2015/loxia-mst-viewer.mjs +167 -74
  16. package/fesm2015/loxia-mst-viewer.mjs.map +1 -1
  17. package/fesm2020/loxia-mst-viewer.mjs +167 -74
  18. package/fesm2020/loxia-mst-viewer.mjs.map +1 -1
  19. package/generated.version.d.ts +1 -1
  20. package/lib/components/mstviewer/mstviewer.component.d.ts +0 -3
  21. package/lib/services/base-rest.service.d.ts +16 -0
  22. package/lib/services/beweging-verrijker.service.d.ts +3 -12
  23. package/lib/services/connector.service.d.ts +10 -0
  24. package/lib/services/signalerings-beeld-manager.service.d.ts +1 -0
  25. package/lib/state/actions/actions.d.ts +16 -1
  26. package/lib/state/effect/laad-signaleringsbeelden.effect.d.ts +11 -3
  27. package/lib/state/effect/svg-view.effect.d.ts +19 -0
  28. package/lib/state/mst-editor-state.d.ts +3 -0
  29. package/package.json +1 -1
  30. package/styles.scss +6 -1
@@ -1,2 +1,2 @@
1
- export const version = '5.7.0';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkLnZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9nZW5lcmF0ZWQudmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHZlcnNpb24gPSAnNS43LjAnO1xuXG4iXX0=
1
+ export const version = '5.7.1-SNAPSHOT';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkLnZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9nZW5lcmF0ZWQudmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjcuMS1TTkFQU0hPVCc7XG5cbiJdfQ==
@@ -8,10 +8,9 @@ import { MeldingEvent } from '../../model/melding-event';
8
8
  import { OngeplandeActie } from '../../model/ongeplande-actie';
9
9
  import { SeinOpRitdeel } from '../../model/sein-op-ritdeel';
10
10
  import * as MstActions from '../../state/actions/actions';
11
- import { AddOngeplandeActie, BepaalOngeplandeActies, BewegingInvoegen, ClearProgress, ResetNieuweRoute, SetActieOpRitSelectieIds, SetAlternatievenClickableIds, SetAlternatievenSelectieIds, SetBaseUrl, SetBeginSeinRightClickableIds, SetBeginSeinSelectieIds, SetDebug, SetEindSeinenClickableIds, SetEindSeinSelectieIds, SetGebrokenRitSelectieIds, SetGeplandeActies, SetIaVersie, SetNieuwRouteEindSein, SetOngeplandeActiesBepaald, SetRitSelectieIds, SetSignaleringsbeeldInfoDtos, SetVisibleSignaleringsbeeldInfoDtos, ShowProgress } from '../../state/actions/actions';
11
+ import { AddOngeplandeActie, BepaalOngeplandeActies, BewegingInvoegen, ClearProgress, navigeerBuitenRit, ResetNieuweRoute, SetActieOpRitSelectieIds, SetAlternatievenClickableIds, SetAlternatievenSelectieIds, SetBaseUrl, SetBeginSeinRightClickableIds, SetBeginSeinSelectieIds, SetEindSeinenClickableIds, SetEindSeinSelectieIds, SetGebrokenRitSelectieIds, SetGeplandeActies, SetIaVersie, SetNieuwRouteEindSein, SetOngeplandeActiesBepaald, SetRitSelectieIds, ShowProgress } from '../../state/actions/actions';
12
12
  import { navigeerVanaf, ritdeelInvoegen, setAlternatieveRitDelen, setRitdelenAfterUpdate, setZichtbaarheidAlleRitdelen, toggleZichtbaarheidVoorBewegingen } from '../../state/actions/ritdelen.actions';
13
13
  import { ActiePopoverBepaler } from '../../util/actie-popover-bepaler';
14
- import { MeldingBuilder } from '../../util/melding-builder';
15
14
  import { ArrayMultimap } from '../../util/multi-map';
16
15
  import Utils from '../../util/utils';
17
16
  import * as i0 from "@angular/core";
@@ -153,13 +152,10 @@ export class MstviewerComponent {
153
152
  this.hideContextMenu();
154
153
  this.store.dispatch(BewegingInvoegen(startSeinOpRitdeel, this.puicNaarEindSeinCombinatie));
155
154
  }
156
- setDebugFlag(debug = false) {
157
- this.meldingEmitterService.setDebug(debug);
158
- this.store.dispatch(SetDebug(debug));
159
- }
160
155
  handleImxviewClick(evt) {
161
156
  const puic = evt.id;
162
157
  const alternatieveRitDeel = this.puicNaarAlternatieveRoute.get(puic);
158
+ const combinatie = this.puicNaarEindSeinCombinatie.get(puic);
163
159
  if (alternatieveRitDeel) {
164
160
  alternatieveRitDeel.ritDeel.acties.forEach(actie => {
165
161
  const puics = this.actieHelper.bepaalPuicsVoorActie(actie);
@@ -169,10 +165,15 @@ export class MstviewerComponent {
169
165
  });
170
166
  this.store.dispatch(setAlternatieveRitDelen(alternatieveRitDeel));
171
167
  }
172
- const combinatie = this.puicNaarEindSeinCombinatie.get(puic);
173
- if (combinatie) {
168
+ else if (combinatie) {
174
169
  this.store.dispatch(SetNieuwRouteEindSein(combinatie));
175
170
  }
171
+ else {
172
+ const rand = this.sbmService.getTopologyElementByPuic(puic);
173
+ if (rand) {
174
+ this.store.dispatch(navigeerBuitenRit(puic));
175
+ }
176
+ }
176
177
  this.ritdelenlijst.deselectRitdeel();
177
178
  }
178
179
  handleImxviewRightClick(evt) {
@@ -292,10 +293,6 @@ export class MstviewerComponent {
292
293
  this.busyPromiseResolve = resolve;
293
294
  });
294
295
  }
295
- createSignaleringsbeeldInfoQueryDto(pplgs, iainfo) {
296
- const datum = iainfo.ingangsDatum && !isNaN(iainfo.ingangsDatum.getTime()) ? iainfo.ingangsDatum.toISOString() : undefined;
297
- return { pplgs, versie: iainfo.versie, ingangsDatum: datum };
298
- }
299
296
  focusOpBeweging(ritdeel, resolve) {
300
297
  // deselecteer alles
301
298
  this.store.dispatch(setZichtbaarheidAlleRitdelen(false));
@@ -329,26 +326,12 @@ export class MstviewerComponent {
329
326
  const obs = this.sbiResource.getBestaatIALevering({ versie: this.iaversieinfo.versie });
330
327
  this.store.dispatch(ShowProgress());
331
328
  obs.pipe(take(1)).subscribe(res => {
332
- this.laadEnVerwerkSignaleringsbeeldInfo(pplgs, ritGewijzigdToegestaan);
329
+ this.store.dispatch(MstActions.laadEnVerwerkSignaleringsbeeldInfo(this.treinpad, this.paginationSize, pplgs, ritGewijzigdToegestaan));
333
330
  }, err => {
334
331
  this.meldingen.emit(new MeldingEvent(Utils.getValidErorrMessage(err), 'info'));
335
332
  this.iaversieinfo = { versie: 'DONNA_77136_VER_1', ingangsDatum: new Date() };
336
333
  this.store.dispatch(SetIaVersie(this.iaversieinfo));
337
- this.laadEnVerwerkSignaleringsbeeldInfo(pplgs, ritGewijzigdToegestaan);
338
- });
339
- }
340
- laadEnVerwerkSignaleringsbeeldInfo(pplgs, ritGewijzigdToegestaan) {
341
- console.log('IA versie: ' + this.iaversieinfo.versie);
342
- const obs = this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto(pplgs, this.iaversieinfo));
343
- obs.pipe(take(1)).subscribe(res => {
344
- const dtos = res;
345
- if (dtos && dtos.filter(dto => dto.metVisualisatie).length > 12) {
346
- this.meldingen.emit(MeldingBuilder.meerDan12BladenGevonden(dtos.length));
347
- }
348
- this.store.dispatch(SetSignaleringsbeeldInfoDtos(dtos, this.iaversieinfo, this.treinpad, this.paginationSize, ritGewijzigdToegestaan));
349
- this.store.dispatch(SetVisibleSignaleringsbeeldInfoDtos(dtos));
350
- }, err => {
351
- this.meldingen.emit(MeldingBuilder.nietGevondenSBI(err));
334
+ this.store.dispatch(MstActions.laadEnVerwerkSignaleringsbeeldInfo(this.treinpad, this.paginationSize, pplgs, ritGewijzigdToegestaan));
352
335
  });
353
336
  }
354
337
  handleNieuweRouteToegevoegd() {
@@ -410,8 +393,9 @@ export class MstviewerComponent {
410
393
  triggerClickableIdBepaling() {
411
394
  this.subscriptions.push(combineLatest([
412
395
  this.store.select('alternatievenClickableIds'),
413
- this.store.select('eindSeinenClickableIds')
414
- ]).subscribe(([alternatievenClickableIds, eindSeinenClickableIds]) => this.clickableIds = [...alternatievenClickableIds, ...eindSeinenClickableIds]));
396
+ this.store.select('eindSeinenClickableIds'),
397
+ this.store.select('connectorClickableIds')
398
+ ]).subscribe(([alternatievenClickableIds, eindSeinenClickableIds, connectorClickableIds]) => this.clickableIds = [...alternatievenClickableIds, ...eindSeinenClickableIds, ...connectorClickableIds]));
415
399
  }
416
400
  triggerRightClickableIdBepaling() {
417
401
  this.subscriptions.push(combineLatest([this.store.select('beginSeinRightClickableIds')]).subscribe(([beginSeinRightClickableIds]) => {
@@ -461,4 +445,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImpor
461
445
  type: ViewChild,
462
446
  args: ['ritdelenlijstcontainer']
463
447
  }] } });
464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXN0dmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL21zdHZpZXdlci9tc3R2aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvbXN0dmlld2VyL21zdHZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9ILE9BQU8sRUFBRSxNQUFNLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVM1RCxPQUFPLEtBQUssVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLFVBQVUsRUFDViw2QkFBNkIsRUFDN0IsdUJBQXVC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bEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUUwQixTQUFTO3NCQUF6QyxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDTSxhQUFhO3NCQUFqRCxTQUFTO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElteFZpZXdlckNvbXBvbmVudCwgUG9wb3ZlckluZm8sIFNlbGVjdGllRXZlbnQsIFN2Z0luZm8gfSBmcm9tICdAbG94aWEvaW14LXZpZXdlcic7XG5pbXBvcnQgeyBkb21laW4sIHNiYmxhZCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4uLy4uLy4uL2dlbmVyYXRlZC52ZXJzaW9uJztcbmltcG9ydCB7IFByb2dyZXNzSW5kaWNhdG9yIH0gZnJvbSAnLi4vLi4vYXRvbWljLWNvbXBvbmVudHMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5lbnRpdHknO1xuaW1wb3J0IHsgQWx0ZXJuYXRpZWZSaXREZWVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWx0ZXJuYXRpZWYtcml0LWRlZWwnO1xuaW1wb3J0IHsgTWVsZGluZ0V2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvbWVsZGluZy1ldmVudCc7XG5pbXBvcnQgeyBPbmdlcGxhbmRlQWN0aWUgfSBmcm9tICcuLi8uLi9tb2RlbC9vbmdlcGxhbmRlLWFjdGllJztcbmltcG9ydCB7IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUgfSBmcm9tICcuLi8uLi9tb2RlbC9yaWp3ZWdwbGFuLXJpandlZy1kd2FuZy1jb21iaW5hdGllJztcbmltcG9ydCB7IFJpdGRlZWwgfSBmcm9tICcuLi8uLi9tb2RlbC9yaXRkZWVsJztcbmltcG9ydCB7IFNlaW5PcFJpdGRlZWwgfSBmcm9tICcuLi8uLi9tb2RlbC9zZWluLW9wLXJpdGRlZWwnO1xuaW1wb3J0IHsgQWN0aWUsIEluZnJhTW9kZWwsIFJpdCB9IGZyb20gJy4uLy4uL29wdGltbyc7XG5pbXBvcnQgeyBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvLCBTaWduYWxlcmluZ3NiZWVsZEluZm9SZXNvdXJjZSB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9zaWduYWxlcmluZ3NiZWVsZGluZm8ucmVzb3VyY2UnO1xuaW1wb3J0IHsgQmV3ZWdpbmdVdGlscyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jld2VnaW5nLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVidWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGVidWcuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVsZGluZ0VtaXR0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVsZGluZy1lbWl0dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld2VyQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXItY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIE1zdEFjdGlvbnMgZnJvbSAnLi4vLi4vc3RhdGUvYWN0aW9ucy9hY3Rpb25zJztcbmltcG9ydCB7XG4gICAgQWRkT25nZXBsYW5kZUFjdGllLFxuICAgIEJlcGFhbE9uZ2VwbGFuZGVBY3RpZXMsXG4gICAgQmV3ZWdpbmdJbnZvZWdlbixcbiAgICBDbGVhclByb2dyZXNzLFxuICAgIFJlc2V0TmlldXdlUm91dGUsXG4gICAgU2V0QWN0aWVPcFJpdFNlbGVjdGllSWRzLFxuICAgIFNldEFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMsXG4gICAgU2V0QWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzLFxuICAgIFNldEJhc2VVcmwsXG4gICAgU2V0QmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMsXG4gICAgU2V0QmVnaW5TZWluU2VsZWN0aWVJZHMsXG4gICAgU2V0RGVidWcsXG4gICAgU2V0RWluZFNlaW5lbkNsaWNrYWJsZUlkcyxcbiAgICBTZXRFaW5kU2VpblNlbGVjdGllSWRzLFxuICAgIFNldEdlYnJva2VuUml0U2VsZWN0aWVJZHMsXG4gICAgU2V0R2VwbGFuZGVBY3RpZXMsXG4gICAgU2V0SWFWZXJzaWUsXG4gICAgU2V0TmlldXdSb3V0ZUVpbmRTZWluLFxuICAgIFNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkLFxuICAgIFNldFJpdFNlbGVjdGllSWRzLFxuICAgIFNldFNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsXG4gICAgU2V0VmlzaWJsZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsXG4gICAgU2hvd1Byb2dyZXNzXG59IGZyb20gJy4uLy4uL3N0YXRlL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIG5hdmlnZWVyVmFuYWYsXG4gICAgcml0ZGVlbEludm9lZ2VuLFxuICAgIHNldEFsdGVybmF0aWV2ZVJpdERlbGVuLFxuICAgIHNldFJpdGRlbGVuQWZ0ZXJVcGRhdGUsXG4gICAgc2V0WmljaHRiYWFyaGVpZEFsbGVSaXRkZWxlbixcbiAgICB0b2dnbGVaaWNodGJhYXJoZWlkVm9vckJld2VnaW5nZW5cbn0gZnJvbSAnLi4vLi4vc3RhdGUvYWN0aW9ucy9yaXRkZWxlbi5hY3Rpb25zJztcbmltcG9ydCB7IE1zdEVkaXRvclN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvbXN0LWVkaXRvci1zdGF0ZSc7XG5pbXBvcnQgeyBBY3RpZUhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWwvYWN0aWUtaGVscGVyJztcbmltcG9ydCB7IEFjdGllUG9wb3ZlckJlcGFsZXIgfSBmcm9tICcuLi8uLi91dGlsL2FjdGllLXBvcG92ZXItYmVwYWxlcic7XG5pbXBvcnQgeyBNZWxkaW5nQnVpbGRlciB9IGZyb20gJy4uLy4uL3V0aWwvbWVsZGluZy1idWlsZGVyJztcbmltcG9ydCB7IEFycmF5TXVsdGltYXAgfSBmcm9tICcuLi8uLi91dGlsL211bHRpLW1hcCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQgeyBSaXRkZWxlbkxpanN0Q29tcG9uZW50IH0gZnJvbSAnLi4vcml0ZGVsZW4tbGlqc3Qvcml0ZGVsZW4tbGlqc3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtc3Qtdmlld2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbXN0dmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tc3R2aWV3ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNc3R2aWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBpYXZlcnNpZWluZm86IEluZnJhTW9kZWw7XG4gICAgQElucHV0KCkgdHJlaW5wYWQ6IFJpdDtcbiAgICBASW5wdXQoKSBvbmdlcGxhbmRlQWN0aWVzOiBBY3RpZVtdO1xuICAgIEBJbnB1dCgpIHBhZ2luYXRpb25TaXplID0gNDtcbiAgICBASW5wdXQoKSBiYXNldXJsID0gJ2h0dHBzOi8vYWNjZXB0YXRpZS5yYWlsZGVzaWduLm5sJztcbiAgICBASW5wdXQoKSBkZWJ1ZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB2aWV3ZXI6IGJvb2xlYW47XG4gICAgQElucHV0KCkgdXNlQ2xpY2tBcmVhOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIG1lbGRpbmdlbiA9IHRoaXMubWVsZGluZ0VtaXR0ZXJTZXJ2aWNlLmdldEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgZ29lZGdla2V1cmQ6IEV2ZW50RW1pdHRlcjxSaXQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW14dmlld2VyY29udGFpbmVyJykgaW14dmlld2VyOiBJbXhWaWV3ZXJDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgncml0ZGVsZW5saWpzdGNvbnRhaW5lcicpIHJpdGRlbGVubGlqc3Q6IFJpdGRlbGVuTGlqc3RDb21wb25lbnQ7XG5cbiAgICBidXN5OiBQcm9taXNlPGFueT47XG5cbiAgICBwb3BvdmVySW5mb3M6IFBvcG92ZXJJbmZvW10gPSBbXTtcbiAgICBzdmdJbmZvczogU3ZnSW5mb1tdID0gW107XG4gICAgY2xpY2thYmxlSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcmlnaHRDbGlja2FibGVJZHM6IHN0cmluZ1tdID0gW107XG4gICAgY29udGV4dE1lbnVBY3Rpb25zOiBhbnkgPSBbXTtcbiAgICBjb250ZXh0TWVudVN0eWxlOiBhbnkgPSB7IGRpc3BsYXk6ICdub25lJyB9O1xuICAgIGVkaXRhYmxlOiBib29sZWFuO1xuXG4gICAgdmFsaWRlUml0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICAgIHByaW50aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgYnVzeVByb21pc2VSZXNvbHZlO1xuICAgIHByb2dyZXNzSW5kaWNhdG9yJDogT2JzZXJ2YWJsZTxQcm9ncmVzc0luZGljYXRvcj47XG5cbiAgICBwcml2YXRlIHB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbCA9IG5ldyBNYXA8c3RyaW5nLCBTZWluT3BSaXRkZWVsPigpO1xuICAgIHByaXZhdGUgcHVpY05hYXJFaW5kU2VpbkNvbWJpbmF0aWUgPSBuZXcgTWFwPHN0cmluZywgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZT4oKTtcbiAgICBwcml2YXRlIHB1aWNOYWFyQWx0ZXJuYXRpZXZlUm91dGUgPSBuZXcgTWFwPHN0cmluZywgQWx0ZXJuYXRpZWZSaXREZWVsPigpO1xuICAgIHByaXZhdGUgb25nZXBsYW5kZUFjdGllc0JlcGFhbGQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNiaVJlc291cmNlOiBTaWduYWxlcmluZ3NiZWVsZEluZm9SZXNvdXJjZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPixcbiAgICAgICAgICAgICAgICBwcml2YXRlIG1lbGRpbmdFbWl0dGVyU2VydmljZTogTWVsZGluZ0VtaXR0ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHB1YmxpYyB2aWV3ZXJDb250cm9sc1NlcnZpY2U6IFZpZXdlckNvbnRyb2xTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgYWN0aWVIZWxwZXI6IEFjdGllSGVscGVyLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgYmV3ZWdpbmdVdGlsczogQmV3ZWdpbmdVdGlscyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGRlYnVnU2VydmljZTogRGVidWdTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMub25SaXRkZWxlblVwZGF0ZSgpO1xuICAgICAgICB0aGlzLnRyaWdnZXJDbGlja2FibGVJZEJlcGFsaW5nKCk7XG4gICAgICAgIHRoaXMudHJpZ2dlclJpZ2h0Q2xpY2thYmxlSWRCZXBhbGluZygpO1xuICAgICAgICB0aGlzLmhhbmRsZU5pZXV3ZVJvdXRlVG9lZ2V2b2VnZCgpO1xuICAgICAgICB0aGlzLnNldHVwVHJpZ2dlclBvcG92ZXJCZXBhbGluZygpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnNlbGVjdCgnc3ZnSW5mb3MnKS5zdWJzY3JpYmUoc3ZnSW5mb3MgPT4gdGhpcy5zdmdJbmZvcyA9IHN2Z0luZm9zKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RvcmUuc2VsZWN0KCdidXN5Jykuc3Vic2NyaWJlKGIgPT4gYiA/IHRoaXMuY3JlYXRlUHJvbWlzZVJlc29sdmUoKSA6IHRoaXMucmVzb2x2ZUJ1c3lQcm9taXNlKCkpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdG9yZS5zZWxlY3QoJ2RlYnVnJykuc3Vic2NyaWJlKGRlYnVnID0+IHRoaXMuZGVidWcgPSBkZWJ1ZykpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnNlbGVjdCgnZWRpdGFibGUnKS5zdWJzY3JpYmUoZWRpdGFibGUgPT4gdGhpcy5lZGl0YWJsZSA9IGVkaXRhYmxlKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RvcmUuc2VsZWN0KCdvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkID0+IHRoaXMub25nZXBsYW5kZUFjdGllc0JlcGFhbGQgPSBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnNlbGVjdCgnbmlldXdlQmV3ZWdpbmdlbicpLnN1YnNjcmliZShuaWV1d2VSaXQgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlaW5wYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyZWlucGFkLmJld2VnaW5nZW4gPSBuaWV1d2VSaXQ7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goc2V0Uml0ZGVsZW5BZnRlclVwZGF0ZShbXSkpO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKFNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkKGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxTYkluZm9zKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzID0+IHMucHJvZ3Jlc3NTdGF0ZT8ucHJvZ3Jlc3NJbmRpY2F0b3IpKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc29sZS5sb2coJ01TVCB2aWV3ZXIgdmVyc2llOiAnICsgdmVyc2lvbik7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZXh0TWVudScpLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB0aGlzLmhpZGVDb250ZXh0TWVudSgpKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyh7IGRlYnVnLCBiYXNldXJsLCB0cmVpbnBhZCwgb25nZXBsYW5kZUFjdGllcywgaWF2ZXJzaWVpbmZvIH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnU2VydmljZS5zZXREZWJ1Z0ZsYWcoZGVidWcuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmFzZXVybCkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRCYXNlVXJsKGJhc2V1cmwuY3VycmVudFZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyZWlucGFkIHx8IG9uZ2VwbGFuZGVBY3RpZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYmVwYWFsU2JJbmZvcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpYXZlcnNpZWluZm8pIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0SWFWZXJzaWUodGhpcy5pYXZlcnNpZWluZm8pKTtcbiAgICAgICAgICAgIHRoaXMuYmVwYWFsU2JJbmZvcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvbmdlcGxhbmRlQWN0aWVzKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkKGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWJ1Z1NlcnZpY2Uuc2V0RGVidWdGbGFnKGZhbHNlKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIGZvY3VzUml0ZGVlbChyaXRkZWVsOiBSaXRkZWVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvcG9FbGVtZW50ZW4gPSB0aGlzLnNibVNlcnZpY2UuYmVwYWFsUm91dGVFbGVtZW50ZW4ocml0ZGVlbC5nZXRSb3V0ZSgpKTtcbiAgICAgICAgY29uc3QgZHdhbmdQdWljcyA9IHRoaXMuZ2V0UHVpY3ModG9wb0VsZW1lbnRlbik7XG5cbiAgICAgICAgaWYgKHJpdGRlZWwuaXNOaWV0QmVzY2hpa2JhYXIoKSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRPbmdlcGxhbmRlQWN0aWVzQmVwYWFsZChmYWxzZSkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuYXZpZ2VlclZhbmFmKHRoaXMucGFnaW5hdGlvblNpemUsIHRoaXMuaWF2ZXJzaWVpbmZvLCByaXRkZWVsKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlteHZpZXdlci5mb2N1c09uSWRzKGR3YW5nUHVpY3MpO1xuICAgIH1cblxuICAgIGZvY3VzUHVpYyhwdWljczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbXh2aWV3ZXIuZm9jdXNPbklkcyhwdWljcyk7XG4gICAgfVxuXG4gICAgYmVwYWFsT25nZXBsYW5kZUFjdGllcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub25nZXBsYW5kZUFjdGllcyAmJiB0aGlzLnRyZWlucGFkKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEJlcGFhbE9uZ2VwbGFuZGVBY3RpZXModGhpcy5vbmdlcGxhbmRlQWN0aWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiZXBhYWxTYkluZm9zKHJpdEdld2lqemlnZFRvZWdlc3RhYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50cmVpbnBhZCAmJiB0aGlzLm9uZ2VwbGFuZGVBY3RpZXMgJiYgdGhpcy5pYXZlcnNpZWluZm8/LnZlcnNpZSkge1xuICAgICAgICAgICAgbGV0IHBwbGdzID0gdGhpcy5iZXBhYWxQcGxncyh0aGlzLnRyZWlucGFkKTtcbiAgICAgICAgICAgIHBwbGdzID0gdGhpcy5iZXBhYWxQcGxnc1VpdEFjdGllcyh0aGlzLm9uZ2VwbGFuZGVBY3RpZXMsIHBwbGdzKTtcbiAgICAgICAgICAgIGlmIChwcGxncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYWFkU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHBwbGdzLCByaXRHZXdpanppZ2RUb2VnZXN0YWFuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJlcGFhbFBwbGdzKHRyZWlucGFkOiBSaXQpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHBsZ3MgPSBbXTtcbiAgICAgICAgaWYgKHRyZWlucGFkICYmIHRyZWlucGFkLmJld2VnaW5nZW4pIHtcbiAgICAgICAgICAgIHRyZWlucGFkLmJld2VnaW5nZW4uZm9yRWFjaChiZXdlZ2luZyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52b2VnTmlldXdlUHBsZ1RvZShwcGxncywgYmV3ZWdpbmcudmFuUHBsZyk7XG4gICAgICAgICAgICAgICAgdGhpcy52b2VnTmlldXdlUHBsZ1RvZShwcGxncywgYmV3ZWdpbmcubmFhclBwbGcpO1xuICAgICAgICAgICAgICAgIHRoaXMudm9lZ05pZXV3ZVBwbGdUb2UocHBsZ3MsIGJld2VnaW5nLnZhblNlaW5QcGxnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZvZWdOaWV1d2VQcGxnVG9lKHBwbGdzLCBiZXdlZ2luZy5uYWFyU2VpblBwbGcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBwbGdzO1xuICAgIH1cblxuICAgIGJlcGFhbFBwbGdzVWl0QWN0aWVzKGFjdGllczogQWN0aWVbXSwgcHBsZ3M6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgICAgICBhY3RpZXMuZm9yRWFjaChhY3RpZSA9PiB0aGlzLnZvZWdOaWV1d2VQcGxnVG9lKHBwbGdzLCBhY3RpZS5wcGxnTmFhbSkpO1xuICAgICAgICByZXR1cm4gcHBsZ3M7XG4gICAgfVxuXG4gICAgYmV3ZWdpbmdJbnZvZWdlbihzdGFydFNlaW5PcFJpdGRlZWw6IFNlaW5PcFJpdGRlZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRlQ29udGV4dE1lbnUoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChCZXdlZ2luZ0ludm9lZ2VuKHN0YXJ0U2Vpbk9wUml0ZGVlbCwgdGhpcy5wdWljTmFhckVpbmRTZWluQ29tYmluYXRpZSkpO1xuICAgIH1cblxuICAgIHNldERlYnVnRmxhZyhkZWJ1ZzogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVsZGluZ0VtaXR0ZXJTZXJ2aWNlLnNldERlYnVnKGRlYnVnKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXREZWJ1ZyhkZWJ1ZykpO1xuICAgIH1cblxuICAgIGhhbmRsZUlteHZpZXdDbGljayhldnQ6IFNlbGVjdGllRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHVpYyA9IGV2dC5pZDtcbiAgICAgICAgY29uc3QgYWx0ZXJuYXRpZXZlUml0RGVlbCA9IHRoaXMucHVpY05hYXJBbHRlcm5hdGlldmVSb3V0ZS5nZXQocHVpYyk7XG4gICAgICAgIGlmIChhbHRlcm5hdGlldmVSaXREZWVsKSB7XG4gICAgICAgICAgICBhbHRlcm5hdGlldmVSaXREZWVsLnJpdERlZWwuYWN0aWVzLmZvckVhY2goYWN0aWUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHB1aWNzID0gdGhpcy5hY3RpZUhlbHBlci5iZXBhYWxQdWljc1Zvb3JBY3RpZShhY3RpZSk7XG4gICAgICAgICAgICAgICAgaWYgKHB1aWNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZGRPbmdlcGxhbmRlQWN0aWUobmV3IE9uZ2VwbGFuZGVBY3RpZShhY3RpZSwgcHVpY3MpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goc2V0QWx0ZXJuYXRpZXZlUml0RGVsZW4oYWx0ZXJuYXRpZXZlUml0RGVlbCkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbWJpbmF0aWUgPSB0aGlzLnB1aWNOYWFyRWluZFNlaW5Db21iaW5hdGllLmdldChwdWljKTtcbiAgICAgICAgaWYgKGNvbWJpbmF0aWUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0TmlldXdSb3V0ZUVpbmRTZWluKGNvbWJpbmF0aWUpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJpdGRlbGVubGlqc3QuZGVzZWxlY3RSaXRkZWVsKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlSW14dmlld1JpZ2h0Q2xpY2soZXZ0OiBTZWxlY3RpZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRTZWluT3BSaXRkZWVsID0gdGhpcy5wdWljTmFhckJlZ2luU2VpblJpdGRlZWwuZ2V0KGV2dC5pZCk7XG4gICAgICAgICAgICBpZiAoc3RhcnRTZWluT3BSaXRkZWVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZXdlZ2luZ0ludm9lZ2VuKHN0YXJ0U2Vpbk9wUml0ZGVlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVBY3Rpb25zID0gW107XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVBY3Rpb25zLnB1c2goeyBsYWJlbDogJ2Jld2VnaW5nIGludm9lZ2VuJywgY2xpY2s6IGZuIH0pO1xuICAgICAgICB0aGlzLmNvbnRleHRNZW51U3R5bGUgPSB7XG4gICAgICAgICAgICBsZWZ0OiAoZXZ0LmV2ZW50Lm9mZnNldFggLSA1KSArICdweCcsXG4gICAgICAgICAgICB0b3A6IChldnQuZXZlbnQub2Zmc2V0WSAtIDUpICsgJ3B4JyxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUnLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZSdcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBoaWRlQ29udGV4dE1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTdHlsZSA9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmVzb2x2ZUJ1c3lQcm9taXNlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5idXN5UHJvbWlzZVJlc29sdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYnVzeVByb21pc2VSZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbENvbnRleHRNZW51Vm9vckJlZ2luU2VpbmVuKHJpdERlbGVuOiBSaXRkZWVsW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNibVNlcnZpY2UuaXNSZWFkeSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaWRzID0gW107XG4gICAgICAgIHJpdERlbGVuLmZpbHRlcihyaXREZWVsID0+IHJpdERlZWwuaXNaaWNodGJhYXIoKSkuZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHB1aWNzID0gcml0RGVlbC5nZXRTZWluZW4oKS5mbGF0TWFwKHNlaW4gPT4gdGhpcy52ZXJ6YW1lbEJlZ2luU2VpbkluZm9ybWF0aWUoc2Vpbiwgcml0RGVlbCkpO1xuICAgICAgICAgICAgaWRzID0gaWRzLmNvbmNhdChwdWljcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMoaWRzKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QmVnaW5TZWluU2VsZWN0aWVJZHMoW10pKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRFaW5kU2VpblNlbGVjdGllSWRzKFtdKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0RWluZFNlaW5lbkNsaWNrYWJsZUlkcyhbXSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyemFtZWxCZWdpblNlaW5JbmZvcm1hdGllKHNlaW46IGRvbWVpbi5TZWluLCByaXREZWVsOiBSaXRkZWVsKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBwdWljczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc2JTZWluID0gdGhpcy5zYm1TZXJ2aWNlLmdldFNCU2VpbihzZWluKTtcbiAgICAgICAgaWYgKHNiU2Vpbikge1xuICAgICAgICAgICAgY29uc3QgcHVpYyA9IHNiU2Vpbi5nZXRQdWljKCk7XG4gICAgICAgICAgICBwdWljcy5wdXNoKHB1aWMpO1xuICAgICAgICAgICAgdGhpcy5wdWljTmFhckJlZ2luU2VpblJpdGRlZWwuc2V0KHB1aWMsIG5ldyBTZWluT3BSaXRkZWVsKHNlaW4sIHJpdERlZWwpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbHRTYlNlaW4gPSB0aGlzLnNibVNlcnZpY2UuZ2V0VGVjaG5pc2NoQWx0ZXJuYXRpZWZTQlNlaW4oc2JTZWluKTtcbiAgICAgICAgaWYgKGFsdFNiU2Vpbikge1xuICAgICAgICAgICAgY29uc3QgcHVpYyA9IGFsdFNiU2Vpbi5nZXRQdWljKCk7XG4gICAgICAgICAgICBwdWljcy5wdXNoKHB1aWMpO1xuICAgICAgICAgICAgY29uc3QgcndwID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmdldFJpandlZ3BsYW4oYWx0U2JTZWluLmdldFBQTEcoKSk7XG4gICAgICAgICAgICBjb25zdCBkb21laW5TZWluID0gcndwLmdldEJlZ2luU2VpbihhbHRTYlNlaW4uZ2V0TmFtZSgpKTtcbiAgICAgICAgICAgIC8vIHNlaW4ga2FuIG5pZXQgYWx0aWpkIGdldm9uZGVuIHdvcmRlbiBvbWRhdCBlciBuaWV0IGFsdGlqZCBlZW4gcmlqd2VnIHZhbmFmIGRpdCBzZWluIGlzLCBiaWp2IGJpaiB2ZWVyd2lzc2VsLlxuICAgICAgICAgICAgaWYgKGRvbWVpblNlaW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbC5zZXQocHVpYywgbmV3IFNlaW5PcFJpdGRlZWwoZG9tZWluU2Vpbiwgcml0RGVlbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwdWljcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFJvdXRlSGlnaGxpZ2h0cyhyaXREZWxlbjogUml0ZGVlbFtdKTogdm9pZCB7XG4gICAgICAgIGxldCByaXRTZWxlY3RpZVB1aWNzID0gW107XG4gICAgICAgIGNvbnN0IGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzID0gbmV3IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4oKTtcbiAgICAgICAgbGV0IGdlYnJva2VuUml0U2VsZWN0aWVQdWljcyA9IFtdO1xuICAgICAgICBjb25zdCBhbHRlcm5hdGlldmVSb3V0ZVB1aWNzID0gW107XG4gICAgICAgIGNvbnN0IGNsaWNrYWJsZUlkcyA9IFtdO1xuICAgICAgICBsZXQgbGFhdHN0ZU5hYXJTcG9vcjtcbiAgICAgICAgY29uc3QgYmVzdGFhdFVpdDFSaXRkZWVsID0gcml0RGVsZW4ubGVuZ3RoID09PSAxO1xuICAgICAgICBsZXQgZ2Vicm9rZW5SaXQgPSBmYWxzZTtcbiAgICAgICAgcml0RGVsZW4uZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgICAgIGlmIChyaXREZWVsLmlzWmljaHRiYWFyKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXA6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4gPSB0aGlzLmFjdGllSGVscGVyLmJlcGFhbEFjdGllUHVpY3NVaXRSaXRkZWVsKHJpdERlZWwpO1xuICAgICAgICAgICAgICAgIG1hcC5rZXlzKCkuZm9yRWFjaChrZXkgPT4gYWN0aWVPcFJpdFNlbGVjdGllUHVpY3MucHV0QWxsKGtleSwgbWFwLmdldChrZXkpKSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0dlYnJva2VuUml0ZGVlbCA9ICFiZXN0YWF0VWl0MVJpdGRlZWwgJiYgdGhpcy5pc0dlYnJva2VuUml0ZGVlbChyaXREZWVsLCBsYWF0c3RlTmFhclNwb29yKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkd2FuZ1B1aWNzID0gdGhpcy5nZXRQdWljcyhyaXREZWVsLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpKTtcbiAgICAgICAgICAgICAgICBpZiAoZHdhbmdQdWljcyAmJiBpc0dlYnJva2VuUml0ZGVlbCkge1xuICAgICAgICAgICAgICAgICAgICBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3MgPSBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3MuY29uY2F0KGR3YW5nUHVpY3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZHdhbmdQdWljcykge1xuICAgICAgICAgICAgICAgICAgICByaXRTZWxlY3RpZVB1aWNzID0gcml0U2VsZWN0aWVQdWljcy5jb25jYXQoZHdhbmdQdWljcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxBbHRlcm5hdGl2ZW4ocml0RGVlbCwgY2xpY2thYmxlSWRzLCBhbHRlcm5hdGlldmVSb3V0ZVB1aWNzKTtcblxuICAgICAgICAgICAgICAgIGdlYnJva2VuUml0ID0gZ2Vicm9rZW5SaXQgPyBnZWJyb2tlblJpdCA6IGlzR2Vicm9rZW5SaXRkZWVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFhdHN0ZU5hYXJTcG9vciA9IHJpdERlZWwuZ2V0VmlzdWVlbE5hYXJQcmxTcG9vcigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnZhbGlkZVJpdCQubmV4dCghZ2Vicm9rZW5SaXQpO1xuXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0R2VwbGFuZGVBY3RpZXMoYWN0aWVPcFJpdFNlbGVjdGllUHVpY3MpKTtcbiAgICAgICAgY29uc3QgYWN0aWVPcFJpdFNlbGVjdGllUHVpY3NBcnJheSA9IFV0aWxzLmZsYXRNYXAoQXJyYXkuZnJvbShhY3RpZU9wUml0U2VsZWN0aWVQdWljcy52YWx1ZXMoKSksIHggPT4geCk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QWN0aWVPcFJpdFNlbGVjdGllSWRzKGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzQXJyYXkpKTtcbiAgICAgICAgcml0U2VsZWN0aWVQdWljcyA9IHJpdFNlbGVjdGllUHVpY3MuZmlsdGVyKGl0ZW0gPT4gYWN0aWVPcFJpdFNlbGVjdGllUHVpY3NBcnJheS5pbmRleE9mKGl0ZW0pIDwgMCk7IC8vIG1ha2UgbXV0dWFsbHkgZXhjbHVzaXZlXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0Uml0U2VsZWN0aWVJZHMocml0U2VsZWN0aWVQdWljcykpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEdlYnJva2VuUml0U2VsZWN0aWVJZHMoZ2Vicm9rZW5SaXRTZWxlY3RpZVB1aWNzKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkcyh0aGlzLmVkaXRhYmxlID8gY2xpY2thYmxlSWRzIDogW10pKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRBbHRlcm5hdGlldmVuU2VsZWN0aWVJZHModGhpcy5lZGl0YWJsZSA/IGFsdGVybmF0aWV2ZVJvdXRlUHVpY3MgOiBbXSkpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENsZWFyUHJvZ3Jlc3MoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxBbHRlcm5hdGl2ZW4ocml0RGVlbDogUml0ZGVlbCwgY2xpY2thYmxlSWRzOiBzdHJpbmdbXSwgYWx0ZXJuYXRpZXZlUm91dGVQdWljczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgcml0RGVlbC5nZXRBbHRlcm5hdGlldmVSb3V0ZXMoKT8uZm9yRWFjaChhbHRlcm5hdGlldmVSb3V0ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbHRlcm5hdGlldmVUb3BvRWxlbWVudGVuID1cbiAgICAgICAgICAgICAgICB0aGlzLnNibVNlcnZpY2UuYmVwYWFsQWx0ZXJuYXRpdmVSb3V0ZUhpZ2hsaWdodHMoYWx0ZXJuYXRpZXZlUm91dGUsIHJpdERlZWwuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkpO1xuXG4gICAgICAgICAgICBjb25zdCBhbHRQdWljcyA9IHRoaXMuZ2V0UHVpY3MoYWx0ZXJuYXRpZXZlVG9wb0VsZW1lbnRlbik7XG4gICAgICAgICAgICBpZiAoYWx0UHVpY3MpIHtcbiAgICAgICAgICAgICAgICBjbGlja2FibGVJZHMucHVzaCguLi5hbHRQdWljcyk7XG4gICAgICAgICAgICAgICAgYWx0UHVpY3MuZm9yRWFjaChwdWljID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdWljTmFhckFsdGVybmF0aWV2ZVJvdXRlLnNldChwdWljLCBuZXcgQWx0ZXJuYXRpZWZSaXREZWVsKHJpdERlZWwsIGFsdGVybmF0aWV2ZVJvdXRlKSk7XG4gICAgICAgICAgICAgICAgICAgIGFsdGVybmF0aWV2ZVJvdXRlUHVpY3MucHVzaChwdWljKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVQcm9taXNlUmVzb2x2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idXN5ID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnVzeVByb21pc2VSZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVTaWduYWxlcmluZ3NiZWVsZEluZm9RdWVyeUR0byhwcGxnczogc3RyaW5nW10sIGlhaW5mbzogSW5mcmFNb2RlbCkge1xuICAgICAgICBjb25zdCBkYXR1bSA9IGlhaW5mby5pbmdhbmdzRGF0dW0gJiYgIWlzTmFOKGlhaW5mby5pbmdhbmdzRGF0dW0uZ2V0VGltZSgpKSA/IGlhaW5mby5pbmdhbmdzRGF0dW0udG9JU09TdHJpbmcoKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHsgcHBsZ3MsIHZlcnNpZTogaWFpbmZvLnZlcnNpZSwgaW5nYW5nc0RhdHVtOiBkYXR1bSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPcEJld2VnaW5nKHJpdGRlZWw6IFJpdGRlZWwsIHJlc29sdmU6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIC8vIGRlc2VsZWN0ZWVyIGFsbGVzXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goc2V0WmljaHRiYWFyaGVpZEFsbGVSaXRkZWxlbihmYWxzZSkpO1xuICAgICAgICAvLyBlbmFibGUgcml0YWN0aWVzIChjaGVja2JveCkgdm9vciBhbGxlIHJpdGRlbGVuIG1ldCBiZXdlZ2luZyBkaWUgbWF0Y2hlZCBtZXQgYmV3ZWdpbmdJZChzKVxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRvZ2dsZVppY2h0YmFhcmhlaWRWb29yQmV3ZWdpbmdlbihbcGFyc2VJbnQocml0ZGVlbC5nZXRCZXdlZ2luZ0lkKCksIDEwKV0pKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICAgICAgICAgIC8vIGRpdCBuZWVtdCBuaWV0IGRlIHZyaWplYmFhbiBlbGVtZW50ZW4gbWVlXG4gICAgICAgICAgICBjb25zdCB0b3BvRWxlbWVudGVuID0gdGhpcy5zYm1TZXJ2aWNlLmJlcGFhbFJvdXRlRWxlbWVudGVuKHJpdGRlZWwuZ2V0Um91dGUoKSk7XG4gICAgICAgICAgICBjb25zdCBkd2FuZ1B1aWNzID0gdGhpcy5nZXRQdWljcyh0b3BvRWxlbWVudGVuKTtcbiAgICAgICAgICAgIHRoaXMuaW14dmlld2VyLmZvY3VzT25JZHMoZHdhbmdQdWljcyk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlc29sdmUgZGUgcHJvbWlzZSwgb20gYWFuIHRlIGdldmVuIGRhdCBmb2N1cyBrbGFhciBpc1xuICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDbGVhclByb2dyZXNzKCkpO1xuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHVpY3ModG9wb0VsZW1lbnRlbjogc2JibGFkLkhhc0lkZW50aWZpZXJbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRvcG9FbGVtZW50ZW4ubWFwKGUgPT4gZS5nZXRQdWljKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNHZWJyb2tlblJpdGRlZWwocml0RGVlbCwgbGFhdHN0ZU5hYXJTcG9vcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpc0dlYnJva2VuUml0ZGVlbCA9ICEoIWxhYXRzdGVOYWFyU3Bvb3IgfHwgcml0RGVlbC5nZXRWYW5QcmxTcG9vcigpID09PSBsYWF0c3RlTmFhclNwb29yKTtcbiAgICAgICAgaWYgKGlzR2Vicm9rZW5SaXRkZWVsKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUml0IHZhbiAnICsgcml0RGVlbC5nZXRWYW5QcmxTcG9vcigpICsgJyBuYWFyICcgKyByaXREZWVsLmdldE5hYXJQcmxTcG9vcigpXG4gICAgICAgICAgICAgICAgKyAnIGluIHBwbGcgJyArIHJpdERlZWwuZ2V0UHBsZygpICsgJyBzbHVpdCBuaWV0IGFhbiBvcCB2b3JpZ2UgYmV3ZWdpbmcuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzR2Vicm9rZW5SaXRkZWVsO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGFhZFNpZ25hbGVyaW5nc2JlZWxkSW5mbyhwcGxnczogc3RyaW5nW10sIHJpdEdld2lqemlnZFRvZWdlc3RhYW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLlNldEJ1c3kodHJ1ZSkpO1xuICAgICAgICBjb25zdCBvYnMgPSB0aGlzLnNiaVJlc291cmNlLmdldEJlc3RhYXRJQUxldmVyaW5nKHsgdmVyc2llOiB0aGlzLmlhdmVyc2llaW5mby52ZXJzaWUgfSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2hvd1Byb2dyZXNzKCkpO1xuICAgICAgICBvYnMucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMubGFhZEVuVmVyd2Vya1NpZ25hbGVyaW5nc2JlZWxkSW5mbyhwcGxncywgcml0R2V3aWp6aWdkVG9lZ2VzdGFhbik7XG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLm1lbGRpbmdlbi5lbWl0KG5ldyBNZWxkaW5nRXZlbnQoVXRpbHMuZ2V0VmFsaWRFcm9yck1lc3NhZ2UoZXJyKSwgJ2luZm8nKSk7XG4gICAgICAgICAgICB0aGlzLmlhdmVyc2llaW5mbyA9IHsgdmVyc2llOiAnRE9OTkFfNzcxMzZfVkVSXzEnLCBpbmdhbmdzRGF0dW06IG5ldyBEYXRlKCkgfTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0SWFWZXJzaWUodGhpcy5pYXZlcnNpZWluZm8pKTtcbiAgICAgICAgICAgIHRoaXMubGFhZEVuVmVyd2Vya1NpZ25hbGVyaW5nc2JlZWxkSW5mbyhwcGxncywgcml0R2V3aWp6aWdkVG9lZ2VzdGFhbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGFhZEVuVmVyd2Vya1NpZ25hbGVyaW5nc2JlZWxkSW5mbyhwcGxnczogc3RyaW5nW10sIHJpdEdld2lqemlnZFRvZWdlc3RhYW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0lBIHZlcnNpZTogJyArIHRoaXMuaWF2ZXJzaWVpbmZvLnZlcnNpZSk7XG4gICAgICAgIGNvbnN0IG9icyA9IHRoaXMuc2JpUmVzb3VyY2UubGFhZFNpZ25hbGVyaW5nc2JlZWxkSW5mbyh0aGlzLmNyZWF0ZVNpZ25hbGVyaW5nc2JlZWxkSW5mb1F1ZXJ5RHRvKHBwbGdzLCB0aGlzLmlhdmVyc2llaW5mbykpO1xuICAgICAgICBvYnMucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSA9IHJlcztcbiAgICAgICAgICAgIGlmIChkdG9zICYmIGR0b3MuZmlsdGVyKGR0byA9PiBkdG8ubWV0VmlzdWFsaXNhdGllKS5sZW5ndGggPiAxMikge1xuICAgICAgICAgICAgICAgIHRoaXMubWVsZGluZ2VuLmVtaXQoTWVsZGluZ0J1aWxkZXIubWVlckRhbjEyQmxhZGVuR2V2b25kZW4oZHRvcy5sZW5ndGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0U2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyhkdG9zLCB0aGlzLmlhdmVyc2llaW5mbywgdGhpcy50cmVpbnBhZCwgdGhpcy5wYWdpbmF0aW9uU2l6ZSwgcml0R2V3aWp6aWdkVG9lZ2VzdGFhbikpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyhkdG9zKSk7XG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLm1lbGRpbmdlbi5lbWl0KE1lbGRpbmdCdWlsZGVyLm5pZXRHZXZvbmRlblNCSShlcnIpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOaWV1d2VSb3V0ZVRvZWdldm9lZ2QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCduaWV1d2VSb3V0ZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChuaWV1d2VSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmlldXdlUm91dGUuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJlc2V0TmlldXdlUm91dGUoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHJpdGRlZWxJbnZvZWdlbihuaWV1d2VSb3V0ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUml0ZGVsZW5VcGRhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RvcmUuc2VsZWN0KCdyaXREZWxlbicpLnN1YnNjcmliZShyaXREZWxlbiA9PiB7XG4gICAgICAgICAgICBpZiAocml0RGVsZW4gJiYgcml0RGVsZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVwYWFsUm91dGVIaWdobGlnaHRzKHJpdERlbGVuKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lZGl0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlcGFhbENvbnRleHRNZW51Vm9vckJlZ2luU2VpbmVuKHJpdERlbGVuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmVwYWFsT25nZXBsYW5kZUFjdGllcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHByaW50Rm9jdXNCZXdlZ2luZyhiZXdlZ2luZ0lkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgdGVtcFJpdERlbGVuID0gdGhpcy52aWV3ZXJDb250cm9sc1NlcnZpY2Uucml0ZGVsZW47XG4gICAgICAgIGNvbnN0IGdldm9uZGVuUml0ZGVlbDogUml0ZGVlbFtdID0gdGVtcFJpdERlbGVuLmZpbHRlcihyID0+IHBhcnNlSW50KHIuZ2V0QmV3ZWdpbmdJZCgpLCAxMCkgPT09IGJld2VnaW5nSWQpO1xuXG4gICAgICAgIC8vIGhpZGUvc2hvdyBkZSBrbm9wcGVuXG4gICAgICAgIGNvbnN0IHByaW50aW5nID0gISFiZXdlZ2luZ0lkICYmIGdldm9uZGVuUml0ZGVlbC5sZW5ndGggPT09IDE7XG4gICAgICAgIHRoaXMucHJpbnRpbmckLm5leHQocHJpbnRpbmcpO1xuXG4gICAgICAgIGlmICghcHJpbnRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgnR2VlbiBiZXdlZ2luZyBnZXZvbmRlbiB2b29yICcgKyBiZXdlZ2luZ0lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcml0ZGVlbCA9IGdldm9uZGVuUml0ZGVlbFswXTtcbiAgICAgICAgICAgIGlmIChyaXRkZWVsLmlzTmlldEJlc2NoaWtiYWFyKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5hdmlnZWVyVmFuYWYodGhpcy5wYWdpbmF0aW9uU2l6ZSwgdGhpcy5pYXZlcnNpZWluZm8sIHJpdGRlZWwpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNob3dQcm9ncmVzcygpKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c09wQmV3ZWdpbmcocml0ZGVlbCwgcmVzb2x2ZSk7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPcEJld2VnaW5nKHJpdGRlZWwsIHJlc29sdmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwVHJpZ2dlclBvcG92ZXJCZXBhbGluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgncml0RGVsZW4nKSxcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdvbmdlcGxhbmRlQWN0aWVzJyksXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnZ2VwbGFuZGVBY3RpZXMnKV1cbiAgICAgICAgKS5zdWJzY3JpYmUoKFtyaXRkZWxlbiwgb25nZXBsYW5kZUFjdGllcywgZ2VwbGFuZGVBY3RpZXNdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJpdGRlbGVuICYmIHJpdGRlbGVuLmxlbmd0aCA+IDAgJiYgZ2VwbGFuZGVBY3RpZXMgJiYgb25nZXBsYW5kZUFjdGllcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJJbmZvcyA9IEFjdGllUG9wb3ZlckJlcGFsZXIuYmVwYWFsUG9wb3ZlckluZm9zKHJpdGRlbGVuLCBnZXBsYW5kZUFjdGllcywgb25nZXBsYW5kZUFjdGllcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaWdnZXJDbGlja2FibGVJZEJlcGFsaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzJyksXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnZWluZFNlaW5lbkNsaWNrYWJsZUlkcycpXVxuICAgICAgICApLnN1YnNjcmliZSgoW2FsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMsIGVpbmRTZWluZW5DbGlja2FibGVJZHNdKSA9PlxuICAgICAgICAgICAgdGhpcy5jbGlja2FibGVJZHMgPSBbLi4uYWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkcywgLi4uZWluZFNlaW5lbkNsaWNrYWJsZUlkc10pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaWdnZXJSaWdodENsaWNrYWJsZUlkQmVwYWxpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbWJpbmVMYXRlc3QoW3RoaXMuc3RvcmUuc2VsZWN0KCdiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkcycpXVxuICAgICAgICApLnN1YnNjcmliZSgoW2JlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGlkcy5wdXNoKC4uLmJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0Q2xpY2thYmxlSWRzID0gaWRzO1xuICAgICAgICAgICAgfVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZvZWdOaWV1d2VQcGxnVG9lKHBwbGdzOiBBcnJheTxzdHJpbmc+LCBwcGxnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHBwbGcgJiYgcHBsZ3MuaW5kZXhPZihwcGxnKSA8IDApIHtcbiAgICAgICAgICAgIHBwbGdzLnB1c2gocHBsZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBrZXVyQWxsZUFjdGllc0dvZWQoKSB7XG4gICAgICAgIHRoaXMudmlld2VyQ29udHJvbHNTZXJ2aWNlLmtldXJBbGxlQWN0aWVzR29lZCh0aGlzLm9uZ2VwbGFuZGVBY3RpZXMpO1xuICAgIH1cbn1cbiIsIjxsb3hpYS1vdmVybGF5ICpuZ0lmPVwiKHByb2dyZXNzSW5kaWNhdG9yJCB8IGFzeW5jKVwiPlxuICAgIDxsb3hpYS1wcm9ncmVzcy1pbmRpY2F0b3IgaWQ9XCJwcm9ncmVzcy1pbmRpY2F0b3JcIiBbYm9yZGVyXT1cImZhbHNlXCIgdXBwZXJUZXh0PVwiXCI+XG4gICAgPC9sb3hpYS1wcm9ncmVzcy1pbmRpY2F0b3I+XG48L2xveGlhLW92ZXJsYXk+XG48ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XG4gICAgPHJwZS1jb21wb25lbnQgW2Jhc2V1cmxdPVwiYmFzZXVybFwiIHBhdGg9XCIvbXN0L2VkaXRvci9lZGl0b3Iubm9jYWNoZS5qc1wiPjwvcnBlLWNvbXBvbmVudD5cblxuICAgIDxpbXgtdmlld2VyIFt1c2VDbGlja0FyZWFdPVwidXNlQ2xpY2tBcmVhXCIgI2lteHZpZXdlcmNvbnRhaW5lciBbc3ZnSW5mb109XCJzdmdJbmZvc1wiIFtzZWxlY3RpZUluZm9zXT1cInZpZXdlckNvbnRyb2xzU2VydmljZS5zZWxlY3RpZUluZm9zXCJcbiAgICAgICAgICAgICAgICBbY2xpY2thYmxlSWRzXT1cImNsaWNrYWJsZUlkc1wiIFtyaWdodENsaWNrYWJsZUlkc109XCJyaWdodENsaWNrYWJsZUlkc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrSGFuZGxlcik9XCJoYW5kbGVJbXh2aWV3Q2xpY2soJGV2ZW50KVwiIChyaWdodENsaWNrSGFuZGxlcik9XCJoYW5kbGVJbXh2aWV3UmlnaHRDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbcG9wb3ZlckluZm9zXT1cInBvcG92ZXJJbmZvc1wiIFtpbmxpbmVEZ25Dc3NJbXBvcnRdPVwiZmFsc2VcIj48L2lteC12aWV3ZXI+XG5cbiAgICA8bmF2IFtjbGFzcy5hY3RpdmVdPVwiKHZpZXdlckNvbnRyb2xzU2VydmljZS5zaWRlTmF2T3BlbiQgfCBhc3luYykgPT09IGZhbHNlXCIgaWQ9XCJzaWRlYmFyXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJkaXNtaXNzXCI+XG4gICAgICAgICAgICA8ZW0gaWQ9XCJ2ZXJiZXJnU2lkZU5hdlwiIGNsYXNzPVwiZmEgZmEtYXJyb3ctbGVmdFwiIChjbGljayk9XCJ2aWV3ZXJDb250cm9sc1NlcnZpY2UudG9nZ2xlU2lkZU5hdlZpc2libGUoKVwiPiZ0aW1lczs8L2VtPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHJpdGRlbGVuLWxpanN0ICpuZ0lmPVwiIXZpZXdlclwiIChmb2N1c0VtaXR0ZXIpPVwiZm9jdXNSaXRkZWVsKCRldmVudClcIiAoa2V1ckFsbGVBY3RpZXNHb2VkKT1cImtldXJBbGxlQWN0aWVzR29lZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvbmdlcGxhbmRlQWN0aWVzXT1cIm9uZ2VwbGFuZGVBY3RpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI3JpdGRlbGVubGlqc3Rjb250YWluZXI+PC9yaXRkZWxlbi1saWpzdD5cbiAgICAgICAgPHJpdGRlbGVuLXZpZXcgKm5nSWY9XCJ2aWV3ZXJcIiAoZm9jdXNFbWl0dGVyKT1cImZvY3VzUml0ZGVlbCgkZXZlbnQpXCIgI3JpdGRlbGVubGlqc3Rjb250YWluZXI+PC9yaXRkZWxlbi12aWV3PlxuICAgIDwvbmF2PlxuXG4gICAgPHZpZXdlci1jb250cm9scyBbcGFnaW5hdGlvblNpemVdPVwicGFnaW5hdGlvblNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgW2lhdmVyc2llaW5mb109XCJpYXZlcnNpZWluZm9cIlxuICAgICAgICAgICAgICAgICAgICAgW3RyZWlucGFkXT1cInRyZWlucGFkXCJcbiAgICAgICAgICAgICAgICAgICAgIFtnb2VkZ2VrZXVyZF09XCJnb2VkZ2VrZXVyZFwiXG4gICAgICAgICAgICAgICAgICAgICBbcHJpbnRpbmckXT1cInByaW50aW5nJFwiXG4gICAgICAgICAgICAgICAgICAgICBbdmFsaWRlUml0JF09XCJ2YWxpZGVSaXQkXCJcbiAgICA+PC92aWV3ZXItY29udHJvbHM+XG5cbiAgICA8dWwgaWQ9XCJjb250ZXh0TWVudVwiIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIHJvbGU9XCJtZW51XCIgW25nU3R5bGVdPVwiY29udGV4dE1lbnVTdHlsZVwiPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb250ZXh0TWVudUFjdGlvbnNcIj48YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24uY2xpY2soKVwiPnt7YWN0aW9uLmxhYmVsfX08L2E+PC9saT5cbiAgICA8L3VsPlxuPC9kaXY+XG4iXX0=
448
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXN0dmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL21zdHZpZXdlci9tc3R2aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvbXN0dmlld2VyL21zdHZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9ILE9BQU8sRUFBRSxNQUFNLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVM1RCxPQUFPLEtBQUssVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIsNEJBQTRCLEVBQzVCLDJCQUEyQixFQUMzQixVQUFVLEVBQ1YsNkJBQTZC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U0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbXhWaWV3ZXJDb21wb25lbnQsIFBvcG92ZXJJbmZvLCBTZWxlY3RpZUV2ZW50LCBTdmdJbmZvIH0gZnJvbSAnQGxveGlhL2lteC12aWV3ZXInO1xuaW1wb3J0IHsgZG9tZWluLCBzYmJsYWQgfSBmcm9tICdAbG94aWEvcmlqd2VnZW4nO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMvU3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi8uLi8uLi9nZW5lcmF0ZWQudmVyc2lvbic7XG5pbXBvcnQgeyBQcm9ncmVzc0luZGljYXRvciB9IGZyb20gJy4uLy4uL2F0b21pYy1jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3IuZW50aXR5JztcbmltcG9ydCB7IEFsdGVybmF0aWVmUml0RGVlbCB9IGZyb20gJy4uLy4uL21vZGVsL2FsdGVybmF0aWVmLXJpdC1kZWVsJztcbmltcG9ydCB7IE1lbGRpbmdFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsL21lbGRpbmctZXZlbnQnO1xuaW1wb3J0IHsgT25nZXBsYW5kZUFjdGllIH0gZnJvbSAnLi4vLi4vbW9kZWwvb25nZXBsYW5kZS1hY3RpZSc7XG5pbXBvcnQgeyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIH0gZnJvbSAnLi4vLi4vbW9kZWwvcmlqd2VncGxhbi1yaWp3ZWctZHdhbmctY29tYmluYXRpZSc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBTZWluT3BSaXRkZWVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2Vpbi1vcC1yaXRkZWVsJztcbmltcG9ydCB7IEFjdGllLCBJbmZyYU1vZGVsLCBSaXQgfSBmcm9tICcuLi8uLi9vcHRpbW8nO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzYmVlbGRJbmZvUmVzb3VyY2UgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvc2lnbmFsZXJpbmdzYmVlbGRpbmZvLnJlc291cmNlJztcbmltcG9ydCB7IEJld2VnaW5nVXRpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iZXdlZ2luZy11dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IERlYnVnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RlYnVnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbGRpbmdFbWl0dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lbGRpbmctZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaWduYWxlcmluZ3MtYmVlbGQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFZpZXdlckNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlld2VyLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBNc3RBY3Rpb25zIGZyb20gJy4uLy4uL3N0YXRlL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIEFkZE9uZ2VwbGFuZGVBY3RpZSxcbiAgICBCZXBhYWxPbmdlcGxhbmRlQWN0aWVzLFxuICAgIEJld2VnaW5nSW52b2VnZW4sXG4gICAgQ2xlYXJQcm9ncmVzcyxcbiAgICBuYXZpZ2VlckJ1aXRlblJpdCxcbiAgICBSZXNldE5pZXV3ZVJvdXRlLFxuICAgIFNldEFjdGllT3BSaXRTZWxlY3RpZUlkcyxcbiAgICBTZXRBbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzLFxuICAgIFNldEFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkcyxcbiAgICBTZXRCYXNlVXJsLFxuICAgIFNldEJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzLFxuICAgIFNldEJlZ2luU2VpblNlbGVjdGllSWRzLFxuICAgIFNldEVpbmRTZWluZW5DbGlja2FibGVJZHMsXG4gICAgU2V0RWluZFNlaW5TZWxlY3RpZUlkcyxcbiAgICBTZXRHZWJyb2tlblJpdFNlbGVjdGllSWRzLFxuICAgIFNldEdlcGxhbmRlQWN0aWVzLFxuICAgIFNldElhVmVyc2llLFxuICAgIFNldE5pZXV3Um91dGVFaW5kU2VpbixcbiAgICBTZXRPbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCxcbiAgICBTZXRSaXRTZWxlY3RpZUlkcyxcbiAgICBTaG93UHJvZ3Jlc3Ncbn0gZnJvbSAnLi4vLi4vc3RhdGUvYWN0aW9ucy9hY3Rpb25zJztcbmltcG9ydCB7XG4gICAgbmF2aWdlZXJWYW5hZixcbiAgICByaXRkZWVsSW52b2VnZW4sXG4gICAgc2V0QWx0ZXJuYXRpZXZlUml0RGVsZW4sXG4gICAgc2V0Uml0ZGVsZW5BZnRlclVwZGF0ZSxcbiAgICBzZXRaaWNodGJhYXJoZWlkQWxsZVJpdGRlbGVuLFxuICAgIHRvZ2dsZVppY2h0YmFhcmhlaWRWb29yQmV3ZWdpbmdlblxufSBmcm9tICcuLi8uLi9zdGF0ZS9hY3Rpb25zL3JpdGRlbGVuLmFjdGlvbnMnO1xuaW1wb3J0IHsgTXN0RWRpdG9yU3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlJztcbmltcG9ydCB7IEFjdGllSGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9hY3RpZS1oZWxwZXInO1xuaW1wb3J0IHsgQWN0aWVQb3BvdmVyQmVwYWxlciB9IGZyb20gJy4uLy4uL3V0aWwvYWN0aWUtcG9wb3Zlci1iZXBhbGVyJztcbmltcG9ydCB7IEFycmF5TXVsdGltYXAgfSBmcm9tICcuLi8uLi91dGlsL211bHRpLW1hcCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQgeyBSaXRkZWxlbkxpanN0Q29tcG9uZW50IH0gZnJvbSAnLi4vcml0ZGVsZW4tbGlqc3Qvcml0ZGVsZW4tbGlqc3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtc3Qtdmlld2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbXN0dmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tc3R2aWV3ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNc3R2aWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBpYXZlcnNpZWluZm86IEluZnJhTW9kZWw7XG4gICAgQElucHV0KCkgdHJlaW5wYWQ6IFJpdDtcbiAgICBASW5wdXQoKSBvbmdlcGxhbmRlQWN0aWVzOiBBY3RpZVtdO1xuICAgIEBJbnB1dCgpIHBhZ2luYXRpb25TaXplID0gNDtcbiAgICBASW5wdXQoKSBiYXNldXJsID0gJ2h0dHBzOi8vYWNjZXB0YXRpZS5yYWlsZGVzaWduLm5sJztcbiAgICBASW5wdXQoKSBkZWJ1ZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB2aWV3ZXI6IGJvb2xlYW47XG4gICAgQElucHV0KCkgdXNlQ2xpY2tBcmVhOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIG1lbGRpbmdlbiA9IHRoaXMubWVsZGluZ0VtaXR0ZXJTZXJ2aWNlLmdldEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgZ29lZGdla2V1cmQ6IEV2ZW50RW1pdHRlcjxSaXQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW14dmlld2VyY29udGFpbmVyJykgaW14dmlld2VyOiBJbXhWaWV3ZXJDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgncml0ZGVsZW5saWpzdGNvbnRhaW5lcicpIHJpdGRlbGVubGlqc3Q6IFJpdGRlbGVuTGlqc3RDb21wb25lbnQ7XG5cbiAgICBidXN5OiBQcm9taXNlPGFueT47XG5cbiAgICBwb3BvdmVySW5mb3M6IFBvcG92ZXJJbmZvW10gPSBbXTtcbiAgICBzdmdJbmZvczogU3ZnSW5mb1tdID0gW107XG4gICAgY2xpY2thYmxlSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcmlnaHRDbGlja2FibGVJZHM6IHN0cmluZ1tdID0gW107XG4gICAgY29udGV4dE1lbnVBY3Rpb25zOiBhbnkgPSBbXTtcbiAgICBjb250ZXh0TWVudVN0eWxlOiBhbnkgPSB7IGRpc3BsYXk6ICdub25lJyB9O1xuICAgIGVkaXRhYmxlOiBib29sZWFuO1xuXG4gICAgdmFsaWRlUml0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICAgIHByaW50aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgYnVzeVByb21pc2VSZXNvbHZlO1xuICAgIHByb2dyZXNzSW5kaWNhdG9yJDogT2JzZXJ2YWJsZTxQcm9ncmVzc0luZGljYXRvcj47XG5cbiAgICBwcml2YXRlIHB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbCA9IG5ldyBNYXA8c3RyaW5nLCBTZWluT3BSaXRkZWVsPigpO1xuICAgIHByaXZhdGUgcHVpY05hYXJFaW5kU2VpbkNvbWJpbmF0aWUgPSBuZXcgTWFwPHN0cmluZywgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZT4oKTtcbiAgICBwcml2YXRlIHB1aWNOYWFyQWx0ZXJuYXRpZXZlUm91dGUgPSBuZXcgTWFwPHN0cmluZywgQWx0ZXJuYXRpZWZSaXREZWVsPigpO1xuICAgIHByaXZhdGUgb25nZXBsYW5kZUFjdGllc0JlcGFhbGQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNiaVJlc291cmNlOiBTaWduYWxlcmluZ3NiZWVsZEluZm9SZXNvdXJjZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPixcbiAgICAgICAgICAgICAgICBwcml2YXRlIG1lbGRpbmdFbWl0dGVyU2VydmljZTogTWVsZGluZ0VtaXR0ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHB1YmxpYyB2aWV3ZXJDb250cm9sc1NlcnZpY2U6IFZpZXdlckNvbnRyb2xTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgYWN0aWVIZWxwZXI6IEFjdGllSGVscGVyLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgYmV3ZWdpbmdVdGlsczogQmV3ZWdpbmdVdGlscyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGRlYnVnU2VydmljZTogRGVidWdTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMub25SaXRkZWxlblVwZGF0ZSgpO1xuICAgICAgICB0aGlzLnRyaWdnZXJDbGlja2FibGVJZEJlcGFsaW5nKCk7XG4gICAgICAgIHRoaXMudHJpZ2dlclJpZ2h0Q2xpY2thYmxlSWRCZXBhbGluZygpO1xuICAgICAgICB0aGlzLmhhbmRsZU5pZXV3ZVJvdXRlVG9lZ2V2b2VnZCgpO1xuICAgICAgICB0aGlzLnNldHVwVHJpZ2dlclBvcG92ZXJCZXBhbGluZygpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnNlbGVjdCgnc3ZnSW5mb3MnKS5zdWJzY3JpYmUoc3ZnSW5mb3MgPT4gdGhpcy5zdmdJbmZvcyA9IHN2Z0luZm9zKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RvcmUuc2VsZWN0KCdidXN5Jykuc3Vic2NyaWJlKGIgPT4gYiA/IHRoaXMuY3JlYXRlUHJvbWlzZVJlc29sdmUoKSA6IHRoaXMucmVzb2x2ZUJ1c3lQcm9taXNlKCkpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdG9yZS5zZWxlY3QoJ2RlYnVnJykuc3Vic2NyaWJlKGRlYnVnID0+IHRoaXMuZGVidWcgPSBkZWJ1ZykpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnNlbGVjdCgnZWRpdGFibGUnKS5zdWJzY3JpYmUoZWRpdGFibGUgPT4gdGhpcy5lZGl0YWJsZSA9IGVkaXRhYmxlKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RvcmUuc2VsZWN0KCdvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkID0+IHRoaXMub25nZXBsYW5kZUFjdGllc0JlcGFhbGQgPSBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnNlbGVjdCgnbmlldXdlQmV3ZWdpbmdlbicpLnN1YnNjcmliZShuaWV1d2VSaXQgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlaW5wYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyZWlucGFkLmJld2VnaW5nZW4gPSBuaWV1d2VSaXQ7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goc2V0Uml0ZGVsZW5BZnRlclVwZGF0ZShbXSkpO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKFNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkKGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxTYkluZm9zKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzID0+IHMucHJvZ3Jlc3NTdGF0ZT8ucHJvZ3Jlc3NJbmRpY2F0b3IpKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc29sZS5sb2coJ01TVCB2aWV3ZXIgdmVyc2llOiAnICsgdmVyc2lvbik7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZXh0TWVudScpLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB0aGlzLmhpZGVDb250ZXh0TWVudSgpKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyh7IGRlYnVnLCBiYXNldXJsLCB0cmVpbnBhZCwgb25nZXBsYW5kZUFjdGllcywgaWF2ZXJzaWVpbmZvIH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnU2VydmljZS5zZXREZWJ1Z0ZsYWcoZGVidWcuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmFzZXVybCkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRCYXNlVXJsKGJhc2V1cmwuY3VycmVudFZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyZWlucGFkIHx8IG9uZ2VwbGFuZGVBY3RpZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYmVwYWFsU2JJbmZvcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpYXZlcnNpZWluZm8pIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0SWFWZXJzaWUodGhpcy5pYXZlcnNpZWluZm8pKTtcbiAgICAgICAgICAgIHRoaXMuYmVwYWFsU2JJbmZvcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvbmdlcGxhbmRlQWN0aWVzKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkKGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWJ1Z1NlcnZpY2Uuc2V0RGVidWdGbGFnKGZhbHNlKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIGZvY3VzUml0ZGVlbChyaXRkZWVsOiBSaXRkZWVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvcG9FbGVtZW50ZW4gPSB0aGlzLnNibVNlcnZpY2UuYmVwYWFsUm91dGVFbGVtZW50ZW4ocml0ZGVlbC5nZXRSb3V0ZSgpKTtcbiAgICAgICAgY29uc3QgZHdhbmdQdWljcyA9IHRoaXMuZ2V0UHVpY3ModG9wb0VsZW1lbnRlbik7XG5cbiAgICAgICAgaWYgKHJpdGRlZWwuaXNOaWV0QmVzY2hpa2JhYXIoKSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRPbmdlcGxhbmRlQWN0aWVzQmVwYWFsZChmYWxzZSkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuYXZpZ2VlclZhbmFmKHRoaXMucGFnaW5hdGlvblNpemUsIHRoaXMuaWF2ZXJzaWVpbmZvLCByaXRkZWVsKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlteHZpZXdlci5mb2N1c09uSWRzKGR3YW5nUHVpY3MpO1xuICAgIH1cblxuICAgIGZvY3VzUHVpYyhwdWljczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbXh2aWV3ZXIuZm9jdXNPbklkcyhwdWljcyk7XG4gICAgfVxuXG4gICAgYmVwYWFsT25nZXBsYW5kZUFjdGllcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub25nZXBsYW5kZUFjdGllcyAmJiB0aGlzLnRyZWlucGFkKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEJlcGFhbE9uZ2VwbGFuZGVBY3RpZXModGhpcy5vbmdlcGxhbmRlQWN0aWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiZXBhYWxTYkluZm9zKHJpdEdld2lqemlnZFRvZWdlc3RhYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50cmVpbnBhZCAmJiB0aGlzLm9uZ2VwbGFuZGVBY3RpZXMgJiYgdGhpcy5pYXZlcnNpZWluZm8/LnZlcnNpZSkge1xuICAgICAgICAgICAgbGV0IHBwbGdzID0gdGhpcy5iZXBhYWxQcGxncyh0aGlzLnRyZWlucGFkKTtcbiAgICAgICAgICAgIHBwbGdzID0gdGhpcy5iZXBhYWxQcGxnc1VpdEFjdGllcyh0aGlzLm9uZ2VwbGFuZGVBY3RpZXMsIHBwbGdzKTtcbiAgICAgICAgICAgIGlmIChwcGxncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYWFkU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHBwbGdzLCByaXRHZXdpanppZ2RUb2VnZXN0YWFuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJlcGFhbFBwbGdzKHRyZWlucGFkOiBSaXQpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHBsZ3MgPSBbXTtcbiAgICAgICAgaWYgKHRyZWlucGFkICYmIHRyZWlucGFkLmJld2VnaW5nZW4pIHtcbiAgICAgICAgICAgIHRyZWlucGFkLmJld2VnaW5nZW4uZm9yRWFjaChiZXdlZ2luZyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52b2VnTmlldXdlUHBsZ1RvZShwcGxncywgYmV3ZWdpbmcudmFuUHBsZyk7XG4gICAgICAgICAgICAgICAgdGhpcy52b2VnTmlldXdlUHBsZ1RvZShwcGxncywgYmV3ZWdpbmcubmFhclBwbGcpO1xuICAgICAgICAgICAgICAgIHRoaXMudm9lZ05pZXV3ZVBwbGdUb2UocHBsZ3MsIGJld2VnaW5nLnZhblNlaW5QcGxnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZvZWdOaWV1d2VQcGxnVG9lKHBwbGdzLCBiZXdlZ2luZy5uYWFyU2VpblBwbGcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBwbGdzO1xuICAgIH1cblxuICAgIGJlcGFhbFBwbGdzVWl0QWN0aWVzKGFjdGllczogQWN0aWVbXSwgcHBsZ3M6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgICAgICBhY3RpZXMuZm9yRWFjaChhY3RpZSA9PiB0aGlzLnZvZWdOaWV1d2VQcGxnVG9lKHBwbGdzLCBhY3RpZS5wcGxnTmFhbSkpO1xuICAgICAgICByZXR1cm4gcHBsZ3M7XG4gICAgfVxuXG4gICAgYmV3ZWdpbmdJbnZvZWdlbihzdGFydFNlaW5PcFJpdGRlZWw6IFNlaW5PcFJpdGRlZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRlQ29udGV4dE1lbnUoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChCZXdlZ2luZ0ludm9lZ2VuKHN0YXJ0U2Vpbk9wUml0ZGVlbCwgdGhpcy5wdWljTmFhckVpbmRTZWluQ29tYmluYXRpZSkpO1xuICAgIH1cblxuICAgIGhhbmRsZUlteHZpZXdDbGljayhldnQ6IFNlbGVjdGllRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHVpYyA9IGV2dC5pZDtcbiAgICAgICAgY29uc3QgYWx0ZXJuYXRpZXZlUml0RGVlbCA9IHRoaXMucHVpY05hYXJBbHRlcm5hdGlldmVSb3V0ZS5nZXQocHVpYyk7XG4gICAgICAgIGNvbnN0IGNvbWJpbmF0aWUgPSB0aGlzLnB1aWNOYWFyRWluZFNlaW5Db21iaW5hdGllLmdldChwdWljKTtcbiAgICAgICAgaWYgKGFsdGVybmF0aWV2ZVJpdERlZWwpIHtcbiAgICAgICAgICAgIGFsdGVybmF0aWV2ZVJpdERlZWwucml0RGVlbC5hY3RpZXMuZm9yRWFjaChhY3RpZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHVpY3MgPSB0aGlzLmFjdGllSGVscGVyLmJlcGFhbFB1aWNzVm9vckFjdGllKGFjdGllKTtcbiAgICAgICAgICAgICAgICBpZiAocHVpY3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkZE9uZ2VwbGFuZGVBY3RpZShuZXcgT25nZXBsYW5kZUFjdGllKGFjdGllLCBwdWljcykpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzZXRBbHRlcm5hdGlldmVSaXREZWxlbihhbHRlcm5hdGlldmVSaXREZWVsKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRpZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXROaWV1d1JvdXRlRWluZFNlaW4oY29tYmluYXRpZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmFuZCA9IHRoaXMuc2JtU2VydmljZS5nZXRUb3BvbG9neUVsZW1lbnRCeVB1aWMocHVpYyk7XG4gICAgICAgICAgICBpZiAocmFuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmF2aWdlZXJCdWl0ZW5SaXQocHVpYykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucml0ZGVsZW5saWpzdC5kZXNlbGVjdFJpdGRlZWwoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVJbXh2aWV3UmlnaHRDbGljayhldnQ6IFNlbGVjdGllRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm4gPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGFydFNlaW5PcFJpdGRlZWwgPSB0aGlzLnB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbC5nZXQoZXZ0LmlkKTtcbiAgICAgICAgICAgIGlmIChzdGFydFNlaW5PcFJpdGRlZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJld2VnaW5nSW52b2VnZW4oc3RhcnRTZWluT3BSaXRkZWVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudUFjdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudUFjdGlvbnMucHVzaCh7IGxhYmVsOiAnYmV3ZWdpbmcgaW52b2VnZW4nLCBjbGljazogZm4gfSk7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTdHlsZSA9IHtcbiAgICAgICAgICAgIGxlZnQ6IChldnQuZXZlbnQub2Zmc2V0WCAtIDUpICsgJ3B4JyxcbiAgICAgICAgICAgIHRvcDogKGV2dC5ldmVudC5vZmZzZXRZIC0gNSkgKyAncHgnLFxuICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGhpZGVDb250ZXh0TWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudVN0eWxlID0ge1xuICAgICAgICAgICAgZGlzcGxheTogJ25vbmUnLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZSdcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXNvbHZlQnVzeVByb21pc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmJ1c3lQcm9taXNlUmVzb2x2ZSkge1xuICAgICAgICAgICAgdGhpcy5idXN5UHJvbWlzZVJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsQ29udGV4dE1lbnVWb29yQmVnaW5TZWluZW4ocml0RGVsZW46IFJpdGRlZWxbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2JtU2VydmljZS5pc1JlYWR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpZHMgPSBbXTtcbiAgICAgICAgcml0RGVsZW4uZmlsdGVyKHJpdERlZWwgPT4gcml0RGVlbC5pc1ppY2h0YmFhcigpKS5mb3JFYWNoKHJpdERlZWwgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHVpY3MgPSByaXREZWVsLmdldFNlaW5lbigpLmZsYXRNYXAoc2VpbiA9PiB0aGlzLnZlcnphbWVsQmVnaW5TZWluSW5mb3JtYXRpZShzZWluLCByaXREZWVsKSk7XG4gICAgICAgICAgICBpZHMgPSBpZHMuY29uY2F0KHB1aWNzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRCZWdpblNlaW5SaWdodENsaWNrYWJsZUlkcyhpZHMpKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRCZWdpblNlaW5TZWxlY3RpZUlkcyhbXSkpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEVpbmRTZWluU2VsZWN0aWVJZHMoW10pKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRFaW5kU2VpbmVuQ2xpY2thYmxlSWRzKFtdKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJ6YW1lbEJlZ2luU2VpbkluZm9ybWF0aWUoc2VpbjogZG9tZWluLlNlaW4sIHJpdERlZWw6IFJpdGRlZWwpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHB1aWNzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCBzYlNlaW4gPSB0aGlzLnNibVNlcnZpY2UuZ2V0U0JTZWluKHNlaW4pO1xuICAgICAgICBpZiAoc2JTZWluKSB7XG4gICAgICAgICAgICBjb25zdCBwdWljID0gc2JTZWluLmdldFB1aWMoKTtcbiAgICAgICAgICAgIHB1aWNzLnB1c2gocHVpYyk7XG4gICAgICAgICAgICB0aGlzLnB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbC5zZXQocHVpYywgbmV3IFNlaW5PcFJpdGRlZWwoc2Vpbiwgcml0RGVlbCkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsdFNiU2VpbiA9IHRoaXMuc2JtU2VydmljZS5nZXRUZWNobmlzY2hBbHRlcm5hdGllZlNCU2VpbihzYlNlaW4pO1xuICAgICAgICBpZiAoYWx0U2JTZWluKSB7XG4gICAgICAgICAgICBjb25zdCBwdWljID0gYWx0U2JTZWluLmdldFB1aWMoKTtcbiAgICAgICAgICAgIHB1aWNzLnB1c2gocHVpYyk7XG4gICAgICAgICAgICBjb25zdCByd3AgPSB0aGlzLmVkaXRvclNlcnZpY2UuZ2V0Umlqd2VncGxhbihhbHRTYlNlaW4uZ2V0UFBMRygpKTtcbiAgICAgICAgICAgIGNvbnN0IGRvbWVpblNlaW4gPSByd3AuZ2V0QmVnaW5TZWluKGFsdFNiU2Vpbi5nZXROYW1lKCkpO1xuICAgICAgICAgICAgLy8gc2VpbiBrYW4gbmlldCBhbHRpamQgZ2V2b25kZW4gd29yZGVuIG9tZGF0IGVyIG5pZXQgYWx0aWpkIGVlbiByaWp3ZWcgdmFuYWYgZGl0IHNlaW4gaXMsIGJpanYgYmlqIHZlZXJ3aXNzZWwuXG4gICAgICAgICAgICBpZiAoZG9tZWluU2Vpbikge1xuICAgICAgICAgICAgICAgIHRoaXMucHVpY05hYXJCZWdpblNlaW5SaXRkZWVsLnNldChwdWljLCBuZXcgU2Vpbk9wUml0ZGVlbChkb21laW5TZWluLCByaXREZWVsKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHB1aWNzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsUm91dGVIaWdobGlnaHRzKHJpdERlbGVuOiBSaXRkZWVsW10pOiB2b2lkIHtcbiAgICAgICAgbGV0IHJpdFNlbGVjdGllUHVpY3MgPSBbXTtcbiAgICAgICAgY29uc3QgYWN0aWVPcFJpdFNlbGVjdGllUHVpY3MgPSBuZXcgQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPigpO1xuICAgICAgICBsZXQgZ2Vicm9rZW5SaXRTZWxlY3RpZVB1aWNzID0gW107XG4gICAgICAgIGNvbnN0IGFsdGVybmF0aWV2ZVJvdXRlUHVpY3MgPSBbXTtcbiAgICAgICAgY29uc3QgY2xpY2thYmxlSWRzID0gW107XG4gICAgICAgIGxldCBsYWF0c3RlTmFhclNwb29yO1xuICAgICAgICBjb25zdCBiZXN0YWF0VWl0MVJpdGRlZWwgPSByaXREZWxlbi5sZW5ndGggPT09IDE7XG4gICAgICAgIGxldCBnZWJyb2tlblJpdCA9IGZhbHNlO1xuICAgICAgICByaXREZWxlbi5mb3JFYWNoKHJpdERlZWwgPT4ge1xuICAgICAgICAgICAgaWYgKHJpdERlZWwuaXNaaWNodGJhYXIoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcDogQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPiA9IHRoaXMuYWN0aWVIZWxwZXIuYmVwYWFsQWN0aWVQdWljc1VpdFJpdGRlZWwocml0RGVlbCk7XG4gICAgICAgICAgICAgICAgbWFwLmtleXMoKS5mb3JFYWNoKGtleSA9PiBhY3RpZU9wUml0U2VsZWN0aWVQdWljcy5wdXRBbGwoa2V5LCBtYXAuZ2V0KGtleSkpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzR2Vicm9rZW5SaXRkZWVsID0gIWJlc3RhYXRVaXQxUml0ZGVlbCAmJiB0aGlzLmlzR2Vicm9rZW5SaXRkZWVsKHJpdERlZWwsIGxhYXRzdGVOYWFyU3Bvb3IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGR3YW5nUHVpY3MgPSB0aGlzLmdldFB1aWNzKHJpdERlZWwuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkpO1xuICAgICAgICAgICAgICAgIGlmIChkd2FuZ1B1aWNzICYmIGlzR2Vicm9rZW5SaXRkZWVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGdlYnJva2VuUml0U2VsZWN0aWVQdWljcyA9IGdlYnJva2VuUml0U2VsZWN0aWVQdWljcy5jb25jYXQoZHdhbmdQdWljcyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkd2FuZ1B1aWNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJpdFNlbGVjdGllUHVpY3MgPSByaXRTZWxlY3RpZVB1aWNzLmNvbmNhdChkd2FuZ1B1aWNzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmJlcGFhbEFsdGVybmF0aXZlbihyaXREZWVsLCBjbGlja2FibGVJZHMsIGFsdGVybmF0aWV2ZVJvdXRlUHVpY3MpO1xuXG4gICAgICAgICAgICAgICAgZ2Vicm9rZW5SaXQgPSBnZWJyb2tlblJpdCA/IGdlYnJva2VuUml0IDogaXNHZWJyb2tlblJpdGRlZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYWF0c3RlTmFhclNwb29yID0gcml0RGVlbC5nZXRWaXN1ZWVsTmFhclBybFNwb29yKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudmFsaWRlUml0JC5uZXh0KCFnZWJyb2tlblJpdCk7XG5cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRHZXBsYW5kZUFjdGllcyhhY3RpZU9wUml0U2VsZWN0aWVQdWljcykpO1xuICAgICAgICBjb25zdCBhY3RpZU9wUml0U2VsZWN0aWVQdWljc0FycmF5ID0gVXRpbHMuZmxhdE1hcChBcnJheS5mcm9tKGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzLnZhbHVlcygpKSwgeCA9PiB4KTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRBY3RpZU9wUml0U2VsZWN0aWVJZHMoYWN0aWVPcFJpdFNlbGVjdGllUHVpY3NBcnJheSkpO1xuICAgICAgICByaXRTZWxlY3RpZVB1aWNzID0gcml0U2VsZWN0aWVQdWljcy5maWx0ZXIoaXRlbSA9PiBhY3RpZU9wUml0U2VsZWN0aWVQdWljc0FycmF5LmluZGV4T2YoaXRlbSkgPCAwKTsgLy8gbWFrZSBtdXR1YWxseSBleGNsdXNpdmVcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRSaXRTZWxlY3RpZUlkcyhyaXRTZWxlY3RpZVB1aWNzKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0R2Vicm9rZW5SaXRTZWxlY3RpZUlkcyhnZWJyb2tlblJpdFNlbGVjdGllUHVpY3MpKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRBbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzKHRoaXMuZWRpdGFibGUgPyBjbGlja2FibGVJZHMgOiBbXSkpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkcyh0aGlzLmVkaXRhYmxlID8gYWx0ZXJuYXRpZXZlUm91dGVQdWljcyA6IFtdKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ2xlYXJQcm9ncmVzcygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbEFsdGVybmF0aXZlbihyaXREZWVsOiBSaXRkZWVsLCBjbGlja2FibGVJZHM6IHN0cmluZ1tdLCBhbHRlcm5hdGlldmVSb3V0ZVB1aWNzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICByaXREZWVsLmdldEFsdGVybmF0aWV2ZVJvdXRlcygpPy5mb3JFYWNoKGFsdGVybmF0aWV2ZVJvdXRlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFsdGVybmF0aWV2ZVRvcG9FbGVtZW50ZW4gPVxuICAgICAgICAgICAgICAgIHRoaXMuc2JtU2VydmljZS5iZXBhYWxBbHRlcm5hdGl2ZVJvdXRlSGlnaGxpZ2h0cyhhbHRlcm5hdGlldmVSb3V0ZSwgcml0RGVlbC5nZXRUb3BvbG9naWVFbGVtZW50ZW4oKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFsdFB1aWNzID0gdGhpcy5nZXRQdWljcyhhbHRlcm5hdGlldmVUb3BvRWxlbWVudGVuKTtcbiAgICAgICAgICAgIGlmIChhbHRQdWljcykge1xuICAgICAgICAgICAgICAgIGNsaWNrYWJsZUlkcy5wdXNoKC4uLmFsdFB1aWNzKTtcbiAgICAgICAgICAgICAgICBhbHRQdWljcy5mb3JFYWNoKHB1aWMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1aWNOYWFyQWx0ZXJuYXRpZXZlUm91dGUuc2V0KHB1aWMsIG5ldyBBbHRlcm5hdGllZlJpdERlZWwocml0RGVlbCwgYWx0ZXJuYXRpZXZlUm91dGUpKTtcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpZXZlUm91dGVQdWljcy5wdXNoKHB1aWMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVByb21pc2VSZXNvbHZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1c3kgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5idXN5UHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzT3BCZXdlZ2luZyhyaXRkZWVsOiBSaXRkZWVsLCByZXNvbHZlOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICAvLyBkZXNlbGVjdGVlciBhbGxlc1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNldFppY2h0YmFhcmhlaWRBbGxlUml0ZGVsZW4oZmFsc2UpKTtcbiAgICAgICAgLy8gZW5hYmxlIHJpdGFjdGllcyAoY2hlY2tib3gpIHZvb3IgYWxsZSByaXRkZWxlbiBtZXQgYmV3ZWdpbmcgZGllIG1hdGNoZWQgbWV0IGJld2VnaW5nSWQocylcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0b2dnbGVaaWNodGJhYXJoZWlkVm9vckJld2VnaW5nZW4oW3BhcnNlSW50KHJpdGRlZWwuZ2V0QmV3ZWdpbmdJZCgpLCAxMCldKSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuXG4gICAgICAgICAgICAvLyBkaXQgbmVlbXQgbmlldCBkZSB2cmlqZWJhYW4gZWxlbWVudGVuIG1lZVxuICAgICAgICAgICAgY29uc3QgdG9wb0VsZW1lbnRlbiA9IHRoaXMuc2JtU2VydmljZS5iZXBhYWxSb3V0ZUVsZW1lbnRlbihyaXRkZWVsLmdldFJvdXRlKCkpO1xuICAgICAgICAgICAgY29uc3QgZHdhbmdQdWljcyA9IHRoaXMuZ2V0UHVpY3ModG9wb0VsZW1lbnRlbik7XG4gICAgICAgICAgICB0aGlzLmlteHZpZXdlci5mb2N1c09uSWRzKGR3YW5nUHVpY3MpO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyByZXNvbHZlIGRlIHByb21pc2UsIG9tIGFhbiB0ZSBnZXZlbiBkYXQgZm9jdXMga2xhYXIgaXNcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ2xlYXJQcm9ncmVzcygpKTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFB1aWNzKHRvcG9FbGVtZW50ZW46IHNiYmxhZC5IYXNJZGVudGlmaWVyW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0b3BvRWxlbWVudGVuLm1hcChlID0+IGUuZ2V0UHVpYygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzR2Vicm9rZW5SaXRkZWVsKHJpdERlZWwsIGxhYXRzdGVOYWFyU3Bvb3IpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaXNHZWJyb2tlblJpdGRlZWwgPSAhKCFsYWF0c3RlTmFhclNwb29yIHx8IHJpdERlZWwuZ2V0VmFuUHJsU3Bvb3IoKSA9PT0gbGFhdHN0ZU5hYXJTcG9vcik7XG4gICAgICAgIGlmIChpc0dlYnJva2VuUml0ZGVlbCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1JpdCB2YW4gJyArIHJpdERlZWwuZ2V0VmFuUHJsU3Bvb3IoKSArICcgbmFhciAnICsgcml0RGVlbC5nZXROYWFyUHJsU3Bvb3IoKVxuICAgICAgICAgICAgICAgICsgJyBpbiBwcGxnICcgKyByaXREZWVsLmdldFBwbGcoKSArICcgc2x1aXQgbmlldCBhYW4gb3Agdm9yaWdlIGJld2VnaW5nLicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0dlYnJva2VuUml0ZGVlbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxhYWRTaWduYWxlcmluZ3NiZWVsZEluZm8ocHBsZ3M6IHN0cmluZ1tdLCByaXRHZXdpanppZ2RUb2VnZXN0YWFuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5TZXRCdXN5KHRydWUpKTtcbiAgICAgICAgY29uc3Qgb2JzID0gdGhpcy5zYmlSZXNvdXJjZS5nZXRCZXN0YWF0SUFMZXZlcmluZyh7IHZlcnNpZTogdGhpcy5pYXZlcnNpZWluZm8udmVyc2llIH0pO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNob3dQcm9ncmVzcygpKTtcbiAgICAgICAgb2JzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKE1zdEFjdGlvbnMubGFhZEVuVmVyd2Vya1NpZ25hbGVyaW5nc2JlZWxkSW5mbyh0aGlzLnRyZWlucGFkLCB0aGlzLnBhZ2luYXRpb25TaXplLCBwcGxncywgcml0R2V3aWp6aWdkVG9lZ2VzdGFhbikpO1xuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5tZWxkaW5nZW4uZW1pdChuZXcgTWVsZGluZ0V2ZW50KFV0aWxzLmdldFZhbGlkRXJvcnJNZXNzYWdlKGVyciksICdpbmZvJykpO1xuICAgICAgICAgICAgdGhpcy5pYXZlcnNpZWluZm8gPSB7IHZlcnNpZTogJ0RPTk5BXzc3MTM2X1ZFUl8xJywgaW5nYW5nc0RhdHVtOiBuZXcgRGF0ZSgpIH07XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldElhVmVyc2llKHRoaXMuaWF2ZXJzaWVpbmZvKSk7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKE1zdEFjdGlvbnMubGFhZEVuVmVyd2Vya1NpZ25hbGVyaW5nc2JlZWxkSW5mbyh0aGlzLnRyZWlucGFkLCB0aGlzLnBhZ2luYXRpb25TaXplLCBwcGxncywgcml0R2V3aWp6aWdkVG9lZ2VzdGFhbikpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZU5pZXV3ZVJvdXRlVG9lZ2V2b2VnZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ25pZXV3ZVJvdXRlJylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG5pZXV3ZVJvdXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuaWV1d2VSb3V0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUmVzZXROaWV1d2VSb3V0ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gocml0ZGVlbEludm9lZ2VuKG5pZXV3ZVJvdXRlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25SaXRkZWxlblVwZGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdG9yZS5zZWxlY3QoJ3JpdERlbGVuJykuc3Vic2NyaWJlKHJpdERlbGVuID0+IHtcbiAgICAgICAgICAgIGlmIChyaXREZWxlbiAmJiByaXREZWxlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxSb3V0ZUhpZ2hsaWdodHMocml0RGVsZW4pO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmVwYWFsQ29udGV4dE1lbnVWb29yQmVnaW5TZWluZW4ocml0RGVsZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMub25nZXBsYW5kZUFjdGllc0JlcGFhbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxPbmdlcGxhbmRlQWN0aWVzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJpbnRGb2N1c0Jld2VnaW5nKGJld2VnaW5nSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCB0ZW1wUml0RGVsZW4gPSB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5yaXRkZWxlbjtcbiAgICAgICAgY29uc3QgZ2V2b25kZW5SaXRkZWVsOiBSaXRkZWVsW10gPSB0ZW1wUml0RGVsZW4uZmlsdGVyKHIgPT4gcGFyc2VJbnQoci5nZXRCZXdlZ2luZ0lkKCksIDEwKSA9PT0gYmV3ZWdpbmdJZCk7XG5cbiAgICAgICAgLy8gaGlkZS9zaG93IGRlIGtub3BwZW5cbiAgICAgICAgY29uc3QgcHJpbnRpbmcgPSAhIWJld2VnaW5nSWQgJiYgZ2V2b25kZW5SaXRkZWVsLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgdGhpcy5wcmludGluZyQubmV4dChwcmludGluZyk7XG5cbiAgICAgICAgaWYgKCFwcmludGluZykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdHZWVuIGJld2VnaW5nIGdldm9uZGVuIHZvb3IgJyArIGJld2VnaW5nSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByaXRkZWVsID0gZ2V2b25kZW5SaXRkZWVsWzBdO1xuICAgICAgICAgICAgaWYgKHJpdGRlZWwuaXNOaWV0QmVzY2hpa2JhYXIoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmF2aWdlZXJWYW5hZih0aGlzLnBhZ2luYXRpb25TaXplLCB0aGlzLmlhdmVyc2llaW5mbywgcml0ZGVlbCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2hvd1Byb2dyZXNzKCkpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzT3BCZXdlZ2luZyhyaXRkZWVsLCByZXNvbHZlKTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09wQmV3ZWdpbmcocml0ZGVlbCwgcmVzb2x2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBUcmlnZ2VyUG9wb3ZlckJlcGFsaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdyaXREZWxlbicpLFxuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ29uZ2VwbGFuZGVBY3RpZXMnKSxcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdnZXBsYW5kZUFjdGllcycpXVxuICAgICAgICApLnN1YnNjcmliZSgoW3JpdGRlbGVuLCBvbmdlcGxhbmRlQWN0aWVzLCBnZXBsYW5kZUFjdGllc10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocml0ZGVsZW4gJiYgcml0ZGVsZW4ubGVuZ3RoID4gMCAmJiBnZXBsYW5kZUFjdGllcyAmJiBvbmdlcGxhbmRlQWN0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlckluZm9zID0gQWN0aWVQb3BvdmVyQmVwYWxlci5iZXBhYWxQb3BvdmVySW5mb3Mocml0ZGVsZW4sIGdlcGxhbmRlQWN0aWVzLCBvbmdlcGxhbmRlQWN0aWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJpZ2dlckNsaWNrYWJsZUlkQmVwYWxpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2FsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMnKSxcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdlaW5kU2VpbmVuQ2xpY2thYmxlSWRzJyksXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnY29ubmVjdG9yQ2xpY2thYmxlSWRzJyldXG4gICAgICAgICkuc3Vic2NyaWJlKChbYWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkcywgZWluZFNlaW5lbkNsaWNrYWJsZUlkcywgY29ubmVjdG9yQ2xpY2thYmxlSWRzXSkgPT5cbiAgICAgICAgICAgIHRoaXMuY2xpY2thYmxlSWRzID0gWy4uLmFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMsIC4uLmVpbmRTZWluZW5DbGlja2FibGVJZHMsIC4uLmNvbm5lY3RvckNsaWNrYWJsZUlkc10pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaWdnZXJSaWdodENsaWNrYWJsZUlkQmVwYWxpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbWJpbmVMYXRlc3QoW3RoaXMuc3RvcmUuc2VsZWN0KCdiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkcycpXVxuICAgICAgICApLnN1YnNjcmliZSgoW2JlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGlkcy5wdXNoKC4uLmJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0Q2xpY2thYmxlSWRzID0gaWRzO1xuICAgICAgICAgICAgfVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZvZWdOaWV1d2VQcGxnVG9lKHBwbGdzOiBBcnJheTxzdHJpbmc+LCBwcGxnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHBwbGcgJiYgcHBsZ3MuaW5kZXhPZihwcGxnKSA8IDApIHtcbiAgICAgICAgICAgIHBwbGdzLnB1c2gocHBsZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBrZXVyQWxsZUFjdGllc0dvZWQoKSB7XG4gICAgICAgIHRoaXMudmlld2VyQ29udHJvbHNTZXJ2aWNlLmtldXJBbGxlQWN0aWVzR29lZCh0aGlzLm9uZ2VwbGFuZGVBY3RpZXMpO1xuICAgIH1cbn1cbiIsIjxsb3hpYS1vdmVybGF5ICpuZ0lmPVwiKHByb2dyZXNzSW5kaWNhdG9yJCB8IGFzeW5jKVwiPlxuICAgIDxsb3hpYS1wcm9ncmVzcy1pbmRpY2F0b3IgaWQ9XCJwcm9ncmVzcy1pbmRpY2F0b3JcIiBbYm9yZGVyXT1cImZhbHNlXCIgdXBwZXJUZXh0PVwiXCI+XG4gICAgPC9sb3hpYS1wcm9ncmVzcy1pbmRpY2F0b3I+XG48L2xveGlhLW92ZXJsYXk+XG48ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XG4gICAgPHJwZS1jb21wb25lbnQgW2Jhc2V1cmxdPVwiYmFzZXVybFwiIHBhdGg9XCIvbXN0L2VkaXRvci9lZGl0b3Iubm9jYWNoZS5qc1wiPjwvcnBlLWNvbXBvbmVudD5cblxuICAgIDxpbXgtdmlld2VyIFt1c2VDbGlja0FyZWFdPVwidXNlQ2xpY2tBcmVhXCIgI2lteHZpZXdlcmNvbnRhaW5lciBbc3ZnSW5mb109XCJzdmdJbmZvc1wiIFtzZWxlY3RpZUluZm9zXT1cInZpZXdlckNvbnRyb2xzU2VydmljZS5zZWxlY3RpZUluZm9zXCJcbiAgICAgICAgICAgICAgICBbY2xpY2thYmxlSWRzXT1cImNsaWNrYWJsZUlkc1wiIFtyaWdodENsaWNrYWJsZUlkc109XCJyaWdodENsaWNrYWJsZUlkc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrSGFuZGxlcik9XCJoYW5kbGVJbXh2aWV3Q2xpY2soJGV2ZW50KVwiIChyaWdodENsaWNrSGFuZGxlcik9XCJoYW5kbGVJbXh2aWV3UmlnaHRDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbcG9wb3ZlckluZm9zXT1cInBvcG92ZXJJbmZvc1wiIFtpbmxpbmVEZ25Dc3NJbXBvcnRdPVwiZmFsc2VcIj48L2lteC12aWV3ZXI+XG5cbiAgICA8bmF2IFtjbGFzcy5hY3RpdmVdPVwiKHZpZXdlckNvbnRyb2xzU2VydmljZS5zaWRlTmF2T3BlbiQgfCBhc3luYykgPT09IGZhbHNlXCIgaWQ9XCJzaWRlYmFyXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJkaXNtaXNzXCI+XG4gICAgICAgICAgICA8ZW0gaWQ9XCJ2ZXJiZXJnU2lkZU5hdlwiIGNsYXNzPVwiZmEgZmEtYXJyb3ctbGVmdFwiIChjbGljayk9XCJ2aWV3ZXJDb250cm9sc1NlcnZpY2UudG9nZ2xlU2lkZU5hdlZpc2libGUoKVwiPiZ0aW1lczs8L2VtPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHJpdGRlbGVuLWxpanN0ICpuZ0lmPVwiIXZpZXdlclwiIChmb2N1c0VtaXR0ZXIpPVwiZm9jdXNSaXRkZWVsKCRldmVudClcIiAoa2V1ckFsbGVBY3RpZXNHb2VkKT1cImtldXJBbGxlQWN0aWVzR29lZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvbmdlcGxhbmRlQWN0aWVzXT1cIm9uZ2VwbGFuZGVBY3RpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI3JpdGRlbGVubGlqc3Rjb250YWluZXI+PC9yaXRkZWxlbi1saWpzdD5cbiAgICAgICAgPHJpdGRlbGVuLXZpZXcgKm5nSWY9XCJ2aWV3ZXJcIiAoZm9jdXNFbWl0dGVyKT1cImZvY3VzUml0ZGVlbCgkZXZlbnQpXCIgI3JpdGRlbGVubGlqc3Rjb250YWluZXI+PC9yaXRkZWxlbi12aWV3PlxuICAgIDwvbmF2PlxuXG4gICAgPHZpZXdlci1jb250cm9scyBbcGFnaW5hdGlvblNpemVdPVwicGFnaW5hdGlvblNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgW2lhdmVyc2llaW5mb109XCJpYXZlcnNpZWluZm9cIlxuICAgICAgICAgICAgICAgICAgICAgW3RyZWlucGFkXT1cInRyZWlucGFkXCJcbiAgICAgICAgICAgICAgICAgICAgIFtnb2VkZ2VrZXVyZF09XCJnb2VkZ2VrZXVyZFwiXG4gICAgICAgICAgICAgICAgICAgICBbcHJpbnRpbmckXT1cInByaW50aW5nJFwiXG4gICAgICAgICAgICAgICAgICAgICBbdmFsaWRlUml0JF09XCJ2YWxpZGVSaXQkXCJcbiAgICA+PC92aWV3ZXItY29udHJvbHM+XG5cbiAgICA8dWwgaWQ9XCJjb250ZXh0TWVudVwiIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIHJvbGU9XCJtZW51XCIgW25nU3R5bGVdPVwiY29udGV4dE1lbnVTdHlsZVwiPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb250ZXh0TWVudUFjdGlvbnNcIj48YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24uY2xpY2soKVwiPnt7YWN0aW9uLmxhYmVsfX08L2E+PC9saT5cbiAgICA8L3VsPlxuPC9kaXY+XG4iXX0=
@@ -230,10 +230,10 @@ export class RitdelenLijstComponent {
230
230
  }
231
231
  }
232
232
  RitdelenLijstComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: RitdelenLijstComponent, deps: [{ token: i1.Store }, { token: i2.SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Component });
233
- RitdelenLijstComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: RitdelenLijstComponent, selector: "ritdelen-lijst", inputs: { ongeplandeActies: "ongeplandeActies" }, outputs: { focusEmitter: "focusEmitter", keurAlleActiesGoed: "keurAlleActiesGoed" }, ngImport: i0, template: "<div id=\"ritdelen-lijst\">\n <div class=\"sidebar-header\">\n <h3 data-test-id=\"title-rit-details\">Ritdetails</h3>\n </div>\n <div class=\"panes-container\">\n <div class=\"top-pane tableFixHead\" id=\"top-pane\">\n <table class=\"table\" aria-hidden=\"true\" data-test-id=\"table-rit-details\">\n <thead>\n <tr>\n <th scope=\"col\">\n <input #input\n type=\"checkbox\"\n checked\n class=\"checkbox col-visibility\"\n (change)=\"toggleZichtbaarheidAlleRitdelen(input.checked)\"\n id=\"ritdetails-selecteerAlles\"\n title=\"Selecteer alles\">\n </th>\n <th scope=\"col\"></th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">DW</th>\n <th scope=\"col\">PPLG(s)</th>\n <th scope=\"col\">Treinnr.</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n\n <tr *ngFor=\"let ritdeel of ritdelen; let i = index\"\n class=\"{{ selectedRitdeelClass(ritdeel) }}\" id=\"ritdetails-r{{i}}\">\n <td>\n <input id=\"ritdetails-r{{i}}-zichtbaar\"\n type=\"checkbox\"\n class=\"checkbox col-visibility\"\n [checked]=\"isRitdeelZichtbaar(ritdeel)\"\n [title]=\"getTitle(ritdeel)\"\n (change)=\"toggleRitdeelZichtbaarheid(ritdeel)\"\n [hidden]=\"ritdeel.isNietBeschikbaar()\"/>\n </td>\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel($event, ritdeel)\">{{isRitdeelNieuw(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getVanPrlSpoor()}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getNaarPrlSpoorText()}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getDwangNummer()}}</td>\n <td id=\"ritdetails-r{{i}}-pplgs\" (click)=\"selectRitdeel($event, ritdeel)\">{{getPplgString(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{getTreinNummer(ritdeel)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-r{{i}}-del\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteRitdeel(ritdeel)\">X\n </button>\n </td>\n </tr>\n\n </table>\n </div>\n <div class=\"actie-pane\">\n <div *ngIf=\"selectedRitdeel && (selectedRitdeelActies.length > 0 || selectedRitdeelOngeplandeActies.length > 0) \"\n id=\"actie-pane\">\n <h4>Geplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelActies.length===0\"\n id=\"bulkSetOngeplandButton\"\n data-test-id=\"unplan-all-actions\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteActiesUitRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let actie of selectedRitdeelActies; let i = index\" id=\"ritdetails-a{{i}}\">\n <td id=\"ritdetails-a{{i}}-omschrijving\" class=\"nowrap\">{{ actieOmschrijvingTekst(actie) }}</td>\n <td id=\"ritdetails-a{{i}}-vanKmLint\">{{ actieVanKmTekst(actie)}}</td>\n <td id=\"ritdetails-a{{i}}-totKmLint\">{{ actieTotKmTekst(actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-a{{i}}-del\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteActieUitRit(actie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </td>\n </tr>\n </table>\n <h4>Ongeplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelOngeplandeActies.length===0\"\n id=\"bulkSetGeplandButton\"\n data-test-id=\"plan-all-actions\"\n type=\"button\"\n class=\"btn btn-success btn-sm\"\n (click)=\"voegActiesToeAanRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let ongeplandeActie of selectedRitdeelOngeplandeActies; let i = index\"\n id=\"ritdetails-oa{{i}}\">\n <td id=\"ritdetails-oa{{i}}-omschrijving\" class=\"nowrap\">{{actieOmschrijvingTekst(ongeplandeActie.actie) }}</td>\n <td id=\"ritdetails-oa{{i}}-vanKmLint\">{{ actieVanKmTekst(ongeplandeActie.actie)}}</td>\n <td id=\"ritdetails-oa{{i}}-totKmLint\">{{ actieTotKmTekst(ongeplandeActie.actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-oa{{i}}-del\"\n type=\"button\"\n class=\"btn btn-success btn-sm\"\n (click)=\"voegActieToeAanRit(ongeplandeActie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"knop-pane\">\n <button type=\"button\"\n class=\"btn btn-primary btn-sm\"\n data-test-id=\"plan-all-actions-for-file\"\n [innerText]=\"'Plan acties hele rit'\"\n (click)=\"planAlleRitActies()\">\n </button>\n </div>\n </div>\n</div>\n", styles: [".panes-container{display:inline;height:100%;border:1px solid black}table{width:100%}th{padding:5px}td{padding:4px}tr:nth-child(even){background:#F0F0F0}tr:nth-child(odd){background:#FFF}.top-pane{height:45vh;overflow:auto}.actie-pane{height:35vh;overflow:auto}.knop-pane{height:5vh;justify-content:center;display:flex;align-items:center}.panes-container,.panes-separator,.top-pane,.actie-pane{margin:0;padding:0;width:100%}.selected{background:#ffff80!important}.disabled{background:gray!important}.visible-outside-window{background:lightskyblue!important}.table-scroll-header-fix tbody{display:block;height:40vh;overflow:auto}.tableFixHead{overflow-y:auto}.tableFixHead thead th{position:sticky;top:0;background-color:#fff}.table{margin-bottom:0}.table td,.table th{border-top:none;border-bottom:none;padding-left:.75em}\n"], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
233
+ RitdelenLijstComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: RitdelenLijstComponent, selector: "ritdelen-lijst", inputs: { ongeplandeActies: "ongeplandeActies" }, outputs: { focusEmitter: "focusEmitter", keurAlleActiesGoed: "keurAlleActiesGoed" }, ngImport: i0, template: "<div id=\"ritdelen-lijst\">\n <div class=\"sidebar-header\">\n <h3 data-test-id=\"title-rit-details\">Ritdetails</h3>\n </div>\n <div class=\"panes-container\">\n <div class=\"top-pane tableFixHead\" id=\"top-pane\">\n <table class=\"table\" aria-hidden=\"true\" data-test-id=\"table-rit-details\">\n <thead>\n <tr>\n <th scope=\"col\">\n <input #input\n type=\"checkbox\"\n checked\n class=\"checkbox col-visibility\"\n (change)=\"toggleZichtbaarheidAlleRitdelen(input.checked)\"\n id=\"ritdetails-selecteerAlles\"\n title=\"Selecteer alles\">\n </th>\n <th scope=\"col\"></th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">DW</th>\n <th scope=\"col\">PPLG(s)</th>\n <th scope=\"col\">Treinnr.</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n\n <tr *ngFor=\"let ritdeel of ritdelen; let i = index\"\n class=\"{{ selectedRitdeelClass(ritdeel) }}\" id=\"ritdetails-r{{i}}\">\n <td>\n <input id=\"ritdetails-r{{i}}-zichtbaar\"\n type=\"checkbox\"\n class=\"checkbox col-visibility\"\n [checked]=\"isRitdeelZichtbaar(ritdeel)\"\n [title]=\"getTitle(ritdeel)\"\n (change)=\"toggleRitdeelZichtbaarheid(ritdeel)\"\n [hidden]=\"ritdeel.isNietBeschikbaar()\"/>\n </td>\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel($event, ritdeel)\">{{isRitdeelNieuw(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getVanPrlSpoor()}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getNaarPrlSpoorText()}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getDwangNummer()}}</td>\n <td id=\"ritdetails-r{{i}}-pplgs\" (click)=\"selectRitdeel($event, ritdeel)\">{{getPplgString(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{getTreinNummer(ritdeel)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-r{{i}}-del\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteRitdeel(ritdeel)\">X\n </button>\n </td>\n </tr>\n\n </table>\n </div>\n <div class=\"actie-pane\">\n <div *ngIf=\"selectedRitdeel && (selectedRitdeelActies.length > 0 || selectedRitdeelOngeplandeActies.length > 0) \"\n id=\"actie-pane\">\n <h4>Geplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelActies.length===0\"\n id=\"bulkSetOngeplandButton\"\n data-test-id=\"unplan-all-actions\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteActiesUitRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let actie of selectedRitdeelActies; let i = index\" id=\"ritdetails-a{{i}}\">\n <td id=\"ritdetails-a{{i}}-omschrijving\" class=\"nowrap\">{{ actieOmschrijvingTekst(actie) }}</td>\n <td id=\"ritdetails-a{{i}}-vanKmLint\">{{ actieVanKmTekst(actie)}}</td>\n <td id=\"ritdetails-a{{i}}-totKmLint\">{{ actieTotKmTekst(actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-a{{i}}-del\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteActieUitRit(actie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </td>\n </tr>\n </table>\n <h4>Ongeplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelOngeplandeActies.length===0\"\n id=\"bulkSetGeplandButton\"\n data-test-id=\"plan-all-actions\"\n type=\"button\"\n class=\"btn btn-success btn-sm\"\n (click)=\"voegActiesToeAanRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let ongeplandeActie of selectedRitdeelOngeplandeActies; let i = index\"\n id=\"ritdetails-oa{{i}}\">\n <td id=\"ritdetails-oa{{i}}-omschrijving\" class=\"nowrap\">{{actieOmschrijvingTekst(ongeplandeActie.actie) }}</td>\n <td id=\"ritdetails-oa{{i}}-vanKmLint\">{{ actieVanKmTekst(ongeplandeActie.actie)}}</td>\n <td id=\"ritdetails-oa{{i}}-totKmLint\">{{ actieTotKmTekst(ongeplandeActie.actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-oa{{i}}-del\"\n type=\"button\"\n class=\"btn btn-success btn-sm\"\n (click)=\"voegActieToeAanRit(ongeplandeActie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"knop-pane\">\n <button type=\"button\"\n class=\"btn btn-primary btn-sm\"\n data-test-id=\"plan-all-actions-for-file\"\n [innerText]=\"'Plan acties hele rit'\"\n (click)=\"planAlleRitActies()\">\n </button>\n </div>\n </div>\n</div>\n", styles: [".panes-container{display:inline;height:100%;border:1px solid black}table{width:100%}th{padding:5px;z-index:1000}td{padding:4px}tr:nth-child(even){background:#F0F0F0}tr:nth-child(odd){background:#FFF}.top-pane{height:45vh;overflow:auto}.actie-pane{height:35vh;overflow:auto}.knop-pane{height:5vh;justify-content:center;display:flex;align-items:center}.panes-container,.panes-separator,.top-pane,.actie-pane{margin:0;padding:0;width:100%}.selected{background:#ffff80!important}.disabled{background:gray!important}.visible-outside-window{background:lightskyblue!important}.table-scroll-header-fix tbody{display:block;height:40vh;overflow:auto}.tableFixHead{overflow-y:auto}.tableFixHead thead th{position:sticky;top:0;background-color:#fff}.table{margin-bottom:0}.table td,.table th{border-top:none;border-bottom:none;padding-left:.75em}\n"], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
234
234
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: RitdelenLijstComponent, decorators: [{
235
235
  type: Component,
236
- args: [{ selector: 'ritdelen-lijst', template: "<div id=\"ritdelen-lijst\">\n <div class=\"sidebar-header\">\n <h3 data-test-id=\"title-rit-details\">Ritdetails</h3>\n </div>\n <div class=\"panes-container\">\n <div class=\"top-pane tableFixHead\" id=\"top-pane\">\n <table class=\"table\" aria-hidden=\"true\" data-test-id=\"table-rit-details\">\n <thead>\n <tr>\n <th scope=\"col\">\n <input #input\n type=\"checkbox\"\n checked\n class=\"checkbox col-visibility\"\n (change)=\"toggleZichtbaarheidAlleRitdelen(input.checked)\"\n id=\"ritdetails-selecteerAlles\"\n title=\"Selecteer alles\">\n </th>\n <th scope=\"col\"></th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">DW</th>\n <th scope=\"col\">PPLG(s)</th>\n <th scope=\"col\">Treinnr.</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n\n <tr *ngFor=\"let ritdeel of ritdelen; let i = index\"\n class=\"{{ selectedRitdeelClass(ritdeel) }}\" id=\"ritdetails-r{{i}}\">\n <td>\n <input id=\"ritdetails-r{{i}}-zichtbaar\"\n type=\"checkbox\"\n class=\"checkbox col-visibility\"\n [checked]=\"isRitdeelZichtbaar(ritdeel)\"\n [title]=\"getTitle(ritdeel)\"\n (change)=\"toggleRitdeelZichtbaarheid(ritdeel)\"\n [hidden]=\"ritdeel.isNietBeschikbaar()\"/>\n </td>\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel($event, ritdeel)\">{{isRitdeelNieuw(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getVanPrlSpoor()}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getNaarPrlSpoorText()}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getDwangNummer()}}</td>\n <td id=\"ritdetails-r{{i}}-pplgs\" (click)=\"selectRitdeel($event, ritdeel)\">{{getPplgString(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{getTreinNummer(ritdeel)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-r{{i}}-del\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteRitdeel(ritdeel)\">X\n </button>\n </td>\n </tr>\n\n </table>\n </div>\n <div class=\"actie-pane\">\n <div *ngIf=\"selectedRitdeel && (selectedRitdeelActies.length > 0 || selectedRitdeelOngeplandeActies.length > 0) \"\n id=\"actie-pane\">\n <h4>Geplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelActies.length===0\"\n id=\"bulkSetOngeplandButton\"\n data-test-id=\"unplan-all-actions\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteActiesUitRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let actie of selectedRitdeelActies; let i = index\" id=\"ritdetails-a{{i}}\">\n <td id=\"ritdetails-a{{i}}-omschrijving\" class=\"nowrap\">{{ actieOmschrijvingTekst(actie) }}</td>\n <td id=\"ritdetails-a{{i}}-vanKmLint\">{{ actieVanKmTekst(actie)}}</td>\n <td id=\"ritdetails-a{{i}}-totKmLint\">{{ actieTotKmTekst(actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-a{{i}}-del\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteActieUitRit(actie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </td>\n </tr>\n </table>\n <h4>Ongeplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelOngeplandeActies.length===0\"\n id=\"bulkSetGeplandButton\"\n data-test-id=\"plan-all-actions\"\n type=\"button\"\n class=\"btn btn-success btn-sm\"\n (click)=\"voegActiesToeAanRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let ongeplandeActie of selectedRitdeelOngeplandeActies; let i = index\"\n id=\"ritdetails-oa{{i}}\">\n <td id=\"ritdetails-oa{{i}}-omschrijving\" class=\"nowrap\">{{actieOmschrijvingTekst(ongeplandeActie.actie) }}</td>\n <td id=\"ritdetails-oa{{i}}-vanKmLint\">{{ actieVanKmTekst(ongeplandeActie.actie)}}</td>\n <td id=\"ritdetails-oa{{i}}-totKmLint\">{{ actieTotKmTekst(ongeplandeActie.actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-oa{{i}}-del\"\n type=\"button\"\n class=\"btn btn-success btn-sm\"\n (click)=\"voegActieToeAanRit(ongeplandeActie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"knop-pane\">\n <button type=\"button\"\n class=\"btn btn-primary btn-sm\"\n data-test-id=\"plan-all-actions-for-file\"\n [innerText]=\"'Plan acties hele rit'\"\n (click)=\"planAlleRitActies()\">\n </button>\n </div>\n </div>\n</div>\n", styles: [".panes-container{display:inline;height:100%;border:1px solid black}table{width:100%}th{padding:5px}td{padding:4px}tr:nth-child(even){background:#F0F0F0}tr:nth-child(odd){background:#FFF}.top-pane{height:45vh;overflow:auto}.actie-pane{height:35vh;overflow:auto}.knop-pane{height:5vh;justify-content:center;display:flex;align-items:center}.panes-container,.panes-separator,.top-pane,.actie-pane{margin:0;padding:0;width:100%}.selected{background:#ffff80!important}.disabled{background:gray!important}.visible-outside-window{background:lightskyblue!important}.table-scroll-header-fix tbody{display:block;height:40vh;overflow:auto}.tableFixHead{overflow-y:auto}.tableFixHead thead th{position:sticky;top:0;background-color:#fff}.table{margin-bottom:0}.table td,.table th{border-top:none;border-bottom:none;padding-left:.75em}\n"] }]
236
+ args: [{ selector: 'ritdelen-lijst', template: "<div id=\"ritdelen-lijst\">\n <div class=\"sidebar-header\">\n <h3 data-test-id=\"title-rit-details\">Ritdetails</h3>\n </div>\n <div class=\"panes-container\">\n <div class=\"top-pane tableFixHead\" id=\"top-pane\">\n <table class=\"table\" aria-hidden=\"true\" data-test-id=\"table-rit-details\">\n <thead>\n <tr>\n <th scope=\"col\">\n <input #input\n type=\"checkbox\"\n checked\n class=\"checkbox col-visibility\"\n (change)=\"toggleZichtbaarheidAlleRitdelen(input.checked)\"\n id=\"ritdetails-selecteerAlles\"\n title=\"Selecteer alles\">\n </th>\n <th scope=\"col\"></th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">DW</th>\n <th scope=\"col\">PPLG(s)</th>\n <th scope=\"col\">Treinnr.</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n\n <tr *ngFor=\"let ritdeel of ritdelen; let i = index\"\n class=\"{{ selectedRitdeelClass(ritdeel) }}\" id=\"ritdetails-r{{i}}\">\n <td>\n <input id=\"ritdetails-r{{i}}-zichtbaar\"\n type=\"checkbox\"\n class=\"checkbox col-visibility\"\n [checked]=\"isRitdeelZichtbaar(ritdeel)\"\n [title]=\"getTitle(ritdeel)\"\n (change)=\"toggleRitdeelZichtbaarheid(ritdeel)\"\n [hidden]=\"ritdeel.isNietBeschikbaar()\"/>\n </td>\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel($event, ritdeel)\">{{isRitdeelNieuw(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getVanPrlSpoor()}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getNaarPrlSpoorText()}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getDwangNummer()}}</td>\n <td id=\"ritdetails-r{{i}}-pplgs\" (click)=\"selectRitdeel($event, ritdeel)\">{{getPplgString(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{getTreinNummer(ritdeel)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-r{{i}}-del\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteRitdeel(ritdeel)\">X\n </button>\n </td>\n </tr>\n\n </table>\n </div>\n <div class=\"actie-pane\">\n <div *ngIf=\"selectedRitdeel && (selectedRitdeelActies.length > 0 || selectedRitdeelOngeplandeActies.length > 0) \"\n id=\"actie-pane\">\n <h4>Geplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelActies.length===0\"\n id=\"bulkSetOngeplandButton\"\n data-test-id=\"unplan-all-actions\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteActiesUitRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let actie of selectedRitdeelActies; let i = index\" id=\"ritdetails-a{{i}}\">\n <td id=\"ritdetails-a{{i}}-omschrijving\" class=\"nowrap\">{{ actieOmschrijvingTekst(actie) }}</td>\n <td id=\"ritdetails-a{{i}}-vanKmLint\">{{ actieVanKmTekst(actie)}}</td>\n <td id=\"ritdetails-a{{i}}-totKmLint\">{{ actieTotKmTekst(actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-a{{i}}-del\"\n type=\"button\"\n class=\"btn btn-danger btn-sm\"\n (click)=\"deleteActieUitRit(actie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </td>\n </tr>\n </table>\n <h4>Ongeplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelOngeplandeActies.length===0\"\n id=\"bulkSetGeplandButton\"\n data-test-id=\"plan-all-actions\"\n type=\"button\"\n class=\"btn btn-success btn-sm\"\n (click)=\"voegActiesToeAanRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let ongeplandeActie of selectedRitdeelOngeplandeActies; let i = index\"\n id=\"ritdetails-oa{{i}}\">\n <td id=\"ritdetails-oa{{i}}-omschrijving\" class=\"nowrap\">{{actieOmschrijvingTekst(ongeplandeActie.actie) }}</td>\n <td id=\"ritdetails-oa{{i}}-vanKmLint\">{{ actieVanKmTekst(ongeplandeActie.actie)}}</td>\n <td id=\"ritdetails-oa{{i}}-totKmLint\">{{ actieTotKmTekst(ongeplandeActie.actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-oa{{i}}-del\"\n type=\"button\"\n class=\"btn btn-success btn-sm\"\n (click)=\"voegActieToeAanRit(ongeplandeActie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"knop-pane\">\n <button type=\"button\"\n class=\"btn btn-primary btn-sm\"\n data-test-id=\"plan-all-actions-for-file\"\n [innerText]=\"'Plan acties hele rit'\"\n (click)=\"planAlleRitActies()\">\n </button>\n </div>\n </div>\n</div>\n", styles: [".panes-container{display:inline;height:100%;border:1px solid black}table{width:100%}th{padding:5px;z-index:1000}td{padding:4px}tr:nth-child(even){background:#F0F0F0}tr:nth-child(odd){background:#FFF}.top-pane{height:45vh;overflow:auto}.actie-pane{height:35vh;overflow:auto}.knop-pane{height:5vh;justify-content:center;display:flex;align-items:center}.panes-container,.panes-separator,.top-pane,.actie-pane{margin:0;padding:0;width:100%}.selected{background:#ffff80!important}.disabled{background:gray!important}.visible-outside-window{background:lightskyblue!important}.table-scroll-header-fix tbody{display:block;height:40vh;overflow:auto}.tableFixHead{overflow-y:auto}.tableFixHead thead th{position:sticky;top:0;background-color:#fff}.table{margin-bottom:0}.table td,.table th{border-top:none;border-bottom:none;padding-left:.75em}\n"] }]
237
237
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.SignaleringsBeeldManagerService }]; }, propDecorators: { ongeplandeActies: [{
238
238
  type: Input
239
239
  }], focusEmitter: [{
@@ -27,6 +27,7 @@ import { LaadRouteFilesEffect } from './state/effect/laad-route-files.effect';
27
27
  import { LaadSignaleringsbeeldenEffect } from './state/effect/laad-signaleringsbeelden.effect';
28
28
  import { RitGoedkeurenEffect } from './state/effect/rit-goedkeuren.effect';
29
29
  import { RitdelenEffect } from './state/effect/ritdelen.effect';
30
+ import { SvgViewEffect } from './state/effect/svg-view.effect';
30
31
  import { storeReducers } from './state/mst-editor-state';
31
32
  import { ActieHelper } from './util/actie-helper';
32
33
  import { LoggingHelper } from './util/logging-helper';
@@ -62,7 +63,8 @@ const imports = [
62
63
  BepaalOngeplandeActiesEffect,
63
64
  BewegingInvoegenEffect,
64
65
  RitdelenEffect,
65
- RitGoedkeurenEffect
66
+ RitGoedkeurenEffect,
67
+ SvgViewEffect
66
68
  ])
67
69
  ];
68
70
  export class MstViewerModule {
@@ -130,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImpor
130
132
  ]
131
133
  }]
132
134
  }], ctorParameters: function () { return [{ type: i1.EditorService }, { type: i2.ZoneUtil }]; } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXN0LXZpZXdlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvbXN0LXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsa0ZBQWtGO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1D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Z0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsdUJBQXVCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsa0JBQWtCO3FCQUNyQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsUUFBUTt3QkFDUiw2QkFBNkI7d0JBQzdCLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYiwrQkFBK0I7d0JBQy9CLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGFBQWE7d0JBQ2Isd0JBQXdCO3FCQUMzQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gaW1wb3J0IHsgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICdAbG94aWEvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IElteFZpZXdlck1vZHVsZSB9IGZyb20gJ0Bsb3hpYS9pbXgtdmlld2VyJztcbmltcG9ydCB7IEVmZmVjdHNNb2R1bGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IFN0b3JlTW9kdWxlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgUmVzb3VyY2VNb2R1bGUgfSBmcm9tICdAbmd4LXJlc291cmNlL2hhbmRsZXItbmd4LWh0dHAnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vYXRvbWljLWNvbXBvbmVudHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi9hdG9taWMtY29tcG9uZW50cy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9hdG9taWMtY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3IvcHJvZ3Jlc3MtaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNc3R2aWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbXN0dmlld2VyL21zdHZpZXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUml0ZGVsZW5MaWpzdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yaXRkZWxlbi1saWpzdC9yaXRkZWxlbi1saWpzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUml0ZGVsZW5WaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JpdGRlbGVuLXZpZXcvcml0ZGVsZW4tdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUnBlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JwZS9ycGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1zdExvZ2dpbmdSZXNvdXJjZSB9IGZyb20gJy4vcmVzb3VyY2VzL21zdGxvZ2dpbmcucmVzb3VyY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzYmVlbGRJbmZvUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlcy9zaWduYWxlcmluZ3NiZWVsZGluZm8ucmVzb3VyY2UnO1xuaW1wb3J0IHsgQmV3ZWdpbmdVdGlscyB9IGZyb20gJy4vc2VydmljZXMvYmV3ZWdpbmctdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBCZXdlZ2luZ1ZlcnJpamtlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Jld2VnaW5nLXZlcnJpamtlci5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFJpdExlemVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcml0LWxlemVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvc2lnbmFsZXJpbmdzLWJlZWxkLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCZXBhYWxPbmdlcGxhbmRlQWN0aWVzRWZmZWN0IH0gZnJvbSAnLi9zdGF0ZS9lZmZlY3QvYmVwYWFsLW9uZ2VwbGFuZGUtYWN0aWVzLmVmZmVjdCc7XG5pbXBvcnQgeyBCZXdlZ2luZ0ludm9lZ2VuRWZmZWN0IH0gZnJvbSAnLi9zdGF0ZS9lZmZlY3QvYmV3ZWdpbmctaW52b2VnZW4uZWZmZWN0JztcbmltcG9ydCB7IERlbGV0ZU9uZ2VwbGFuZGVBY3RpZUVmZmVjdCB9IGZyb20gJy4vc3RhdGUvZWZmZWN0L2RlbGV0ZS1vbmdlcGxhbmRlLWFjdGllLmVmZmVjdCc7XG5pbXBvcnQgeyBMYWFkUm91dGVGaWxlc0VmZmVjdCB9IGZyb20gJy4vc3RhdGUvZWZmZWN0L2xhYWQtcm91dGUtZmlsZXMuZWZmZWN0JztcbmltcG9ydCB7IExhYWRTaWduYWxlcmluZ3NiZWVsZGVuRWZmZWN0IH0gZnJvbSAnLi9zdGF0ZS9lZmZlY3QvbGFhZC1zaWduYWxlcmluZ3NiZWVsZGVuLmVmZmVjdCc7XG5pbXBvcnQgeyBSaXRHb2Vka2V1cmVuRWZmZWN0IH0gZnJvbSAnLi9zdGF0ZS9lZmZlY3Qvcml0LWdvZWRrZXVyZW4uZWZmZWN0JztcbmltcG9ydCB7IFJpdGRlbGVuRWZmZWN0IH0gZnJvbSAnLi9zdGF0ZS9lZmZlY3Qvcml0ZGVsZW4uZWZmZWN0JztcbmltcG9ydCB7IHN0b3JlUmVkdWNlcnMgfSBmcm9tICcuL3N0YXRlL21zdC1lZGl0b3Itc3RhdGUnO1xuaW1wb3J0IHsgQWN0aWVIZWxwZXIgfSBmcm9tICcuL3V0aWwvYWN0aWUtaGVscGVyJztcbmltcG9ydCB7IExvZ2dpbmdIZWxwZXIgfSBmcm9tICcuL3V0aWwvbG9nZ2luZy1oZWxwZXInO1xuaW1wb3J0IHsgWm9uZVV0aWwgfSBmcm9tICcuL3V0aWwvem9uZS11dGlsJztcbmltcG9ydCB7IENhcm91c2VsQ29udHJvbHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2Fyb3VzZWwtY29udHJvbHMvY2Fyb3VzZWwtY29udHJvbHMuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlckNvbnRyb2xzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ZpZXdlci1jb250cm9scy92aWV3ZXItY29udHJvbHMuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IFNUT1JFX0NPTkZJRyA9IHtcbiAgICBydW50aW1lQ2hlY2tzOiB7XG4gICAgICAgIHN0cmljdFN0YXRlSW1tdXRhYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgc3RyaWN0QWN0aW9uSW1tdXRhYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgLy8gc3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6IHRydWUsIC8vIGdlZWZ0IG5vZyBydW50aW1lIGVycm9ycywgem91IG1vb2kgemlqbiBvbSBhYW4gdGUga3VubmVuIHpldHRlblxuICAgICAgICAvLyBzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6IHRydWUsIC8vIGdlZWZ0IG5vZyBydW50aW1lIGVycm9ycywgem91IG1vb2kgemlqbiBvbSBhYW4gdGUga3VubmVuIHpldHRlblxuICAgICAgICBzdHJpY3RBY3Rpb25UeXBlVW5pcXVlbmVzczogZmFsc2VcbiAgICB9XG59O1xuXG5jb25zdCBpbXBvcnRzID0gW1xuICAgIEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJbXhWaWV3ZXJNb2R1bGUsXG4gICAgUmVzb3VyY2VNb2R1bGUuZm9yUm9vdCgpLFxuICAgIC8vIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxuICAgIFN0b3JlTW9kdWxlLmZvclJvb3QoIHN0b3JlUmVkdWNlcnMsIFNUT1JFX0NPTkZJRyksXG4gICAgRWZmZWN0c01vZHVsZS5mb3JSb290KFtcbiAgICAgICAgRGVsZXRlT25nZXBsYW5kZUFjdGllRWZmZWN0LFxuICAgICAgICBMYWFkU2lnbmFsZXJpbmdzYmVlbGRlbkVmZmVjdCxcbiAgICAgICAgTGFhZFJvdXRlRmlsZXNFZmZlY3QsXG4gICAgICAgIEJlcGFhbE9uZ2VwbGFuZGVBY3RpZXNFZmZlY3QsXG4gICAgICAgIEJld2VnaW5nSW52b2VnZW5FZmZlY3QsXG4gICAgICAgIFJpdGRlbGVuRWZmZWN0LFxuICAgICAgICBSaXRHb2Vka2V1cmVuRWZmZWN0XG4gICAgXSlcbl07XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0cyxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgSWNvbkNvbXBvbmVudCxcbiAgICAgICAgTXN0dmlld2VyQ29tcG9uZW50LFxuICAgICAgICBPdmVybGF5Q29tcG9uZW50LFxuICAgICAgICBQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudCxcbiAgICAgICAgUnBlQ29tcG9uZW50LFxuICAgICAgICBSaXRkZWxlbkxpanN0Q29tcG9uZW50LFxuICAgICAgICBSaXRkZWxlblZpZXdDb21wb25lbnQsXG4gICAgICAgIENhcm91c2VsQ29udHJvbHNDb21wb25lbnQsXG4gICAgICAgIFZpZXdlckNvbnRyb2xzQ29tcG9uZW50XG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIE1zdHZpZXdlckNvbXBvbmVudFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFpvbmVVdGlsLFxuICAgICAgICBTaWduYWxlcmluZ3NiZWVsZEluZm9SZXNvdXJjZSxcbiAgICAgICAgTXN0TG9nZ2luZ1Jlc291cmNlLFxuICAgICAgICBFZGl0b3JTZXJ2aWNlLFxuICAgICAgICBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICBSaXRMZXplclNlcnZpY2UsXG4gICAgICAgIEJld2VnaW5nVXRpbHMsXG4gICAgICAgIEFjdGllSGVscGVyLFxuICAgICAgICBMb2dnaW5nSGVscGVyLFxuICAgICAgICBCZXdlZ2luZ1ZlcnJpamtlclNlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE1zdFZpZXdlck1vZHVsZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLCB6b25lVXRpbDogWm9uZVV0aWwpIHtcbiAgICAgICAgLy8gbWFhayBkZSBFZGl0b3JTZXJ2aWNlIHRvZWdhbmtlbGlqayB2b29yIEdXVCBjb2RlXG4gICAgICAgIHdpbmRvd1sncnBlJ10gPSB7XG4gICAgICAgICAgICBFZGl0b3JTZXJ2aWNlOiB6b25lVXRpbC5wcm94eShzZXJ2aWNlKVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXN0LXZpZXdlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvbXN0LXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsa0ZBQWtGO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1D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TixPQUFPO29CQUNQLFlBQVksRUFBRTt3QkFDVixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsdUJBQXVCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsa0JBQWtCO3FCQUNyQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsUUFBUTt3QkFDUiw2QkFBNkI7d0JBQzdCLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYiwrQkFBK0I7d0JBQy9CLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGFBQWE7d0JBQ2Isd0JBQXdCO3FCQUMzQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gaW1wb3J0IHsgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICdAbG94aWEvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IElteFZpZXdlck1vZHVsZSB9IGZyb20gJ0Bsb3hpYS9pbXgtdmlld2VyJztcbmltcG9ydCB7IEVmZmVjdHNNb2R1bGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IFN0b3JlTW9kdWxlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgUmVzb3VyY2VNb2R1bGUgfSBmcm9tICdAbmd4LXJlc291cmNlL2hhbmRsZXItbmd4LWh0dHAnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vYXRvbWljLWNvbXBvbmVudHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi9hdG9taWMtY29tcG9uZW50cy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9hdG9taWMtY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3IvcHJvZ3Jlc3MtaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNc3R2aWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbXN0dmlld2VyL21zdHZpZXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUml0ZGVsZW5MaWpzdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yaXRkZWxlbi1saWpzdC9yaXRkZWxlbi1saWpzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUml0ZGVsZW5WaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JpdGRlbGVuLXZpZXcvcml0ZGVsZW4tdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUnBlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JwZS9ycGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1zdExvZ2dpbmdSZXNvdXJjZSB9IGZyb20gJy4vcmVzb3VyY2VzL21zdGxvZ2dpbmcucmVzb3VyY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzYmVlbGRJbmZvUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlcy9zaWduYWxlcmluZ3NiZWVsZGluZm8ucmVzb3VyY2UnO1xuaW1wb3J0IHsgQmV3ZWdpbmdVdGlscyB9IGZyb20gJy4vc2VydmljZXMvYmV3ZWdpbmctdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBCZXdlZ2luZ1ZlcnJpamtlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Jld2VnaW5nLXZlcnJpamtlci5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFJpdExlemVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcml0LWxlemVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvc2lnbmFsZXJpbmdzLWJlZWxkLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCZXBhYWxPbmdlcGxhbmRlQWN0aWVzRWZmZWN0IH0gZnJvbSAnLi9zdGF0ZS9lZmZlY3QvYmVwYWFsLW9uZ2VwbGFuZGUtYWN0aWVzLmVmZmVjdCc7XG5pbXBvcnQgeyBCZXdlZ2luZ0ludm9lZ2VuRWZmZWN0IH0gZnJvbSAnLi9zdGF0ZS9lZmZlY3QvYmV3ZWdpbmctaW52b2VnZW4uZWZmZWN0JztcbmltcG9ydCB7IERlbGV0ZU9uZ2VwbGFuZGVBY3RpZUVmZmVjdCB9IGZyb20gJy4vc3RhdGUvZWZmZWN0L2RlbGV0ZS1vbmdlcGxhbmRlLWFjdGllLmVmZmVjdCc7XG5pbXBvcnQgeyBMYWFkUm91dGVGaWxlc0VmZmVjdCB9IGZyb20gJy4vc3RhdGUvZWZmZWN0L2xhYWQtcm91dGUtZmlsZXMuZWZmZWN0JztcbmltcG9ydCB7IExhYWRTaWduYWxlcmluZ3NiZWVsZGVuRWZmZWN0IH0gZnJvbSAnLi9zdGF0ZS9lZmZlY3QvbGFhZC1zaWduYWxlcmluZ3NiZWVsZGVuLmVmZmVjdCc7XG5pbXBvcnQgeyBSaXRHb2Vka2V1cmVuRWZmZWN0IH0gZnJvbSAnLi9zdGF0ZS9lZmZlY3Qvcml0LWdvZWRrZXVyZW4uZWZmZWN0JztcbmltcG9ydCB7IFJpdGRlbGVuRWZmZWN0IH0gZnJvbSAnLi9zdGF0ZS9lZmZlY3Qvcml0ZGVsZW4uZWZmZWN0JztcbmltcG9ydCB7IFN2Z1ZpZXdFZmZlY3QgfSBmcm9tICcuL3N0YXRlL2VmZmVjdC9zdmctdmlldy5lZmZlY3QnO1xuaW1wb3J0IHsgc3RvcmVSZWR1Y2VycyB9IGZyb20gJy4vc3RhdGUvbXN0LWVkaXRvci1zdGF0ZSc7XG5pbXBvcnQgeyBBY3RpZUhlbHBlciB9IGZyb20gJy4vdXRpbC9hY3RpZS1oZWxwZXInO1xuaW1wb3J0IHsgTG9nZ2luZ0hlbHBlciB9IGZyb20gJy4vdXRpbC9sb2dnaW5nLWhlbHBlcic7XG5pbXBvcnQgeyBab25lVXRpbCB9IGZyb20gJy4vdXRpbC96b25lLXV0aWwnO1xuaW1wb3J0IHsgQ2Fyb3VzZWxDb250cm9sc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJvdXNlbC1jb250cm9scy9jYXJvdXNlbC1jb250cm9scy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyQ29udHJvbHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdmlld2VyLWNvbnRyb2xzL3ZpZXdlci1jb250cm9scy5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgU1RPUkVfQ09ORklHID0ge1xuICAgIHJ1bnRpbWVDaGVja3M6IHtcbiAgICAgICAgc3RyaWN0U3RhdGVJbW11dGFiaWxpdHk6IGZhbHNlLFxuICAgICAgICBzdHJpY3RBY3Rpb25JbW11dGFiaWxpdHk6IGZhbHNlLFxuICAgICAgICAvLyBzdHJpY3RTdGF0ZVNlcmlhbGl6YWJpbGl0eTogdHJ1ZSwgLy8gZ2VlZnQgbm9nIHJ1bnRpbWUgZXJyb3JzLCB6b3UgbW9vaSB6aWpuIG9tIGFhbiB0ZSBrdW5uZW4gemV0dGVuXG4gICAgICAgIC8vIHN0cmljdEFjdGlvblNlcmlhbGl6YWJpbGl0eTogdHJ1ZSwgLy8gZ2VlZnQgbm9nIHJ1bnRpbWUgZXJyb3JzLCB6b3UgbW9vaSB6aWpuIG9tIGFhbiB0ZSBrdW5uZW4gemV0dGVuXG4gICAgICAgIHN0cmljdEFjdGlvblR5cGVVbmlxdWVuZXNzOiBmYWxzZVxuICAgIH1cbn07XG5cbmNvbnN0IGltcG9ydHMgPSBbXG4gICAgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElteFZpZXdlck1vZHVsZSxcbiAgICBSZXNvdXJjZU1vZHVsZS5mb3JSb290KCksXG4gICAgLy8gQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXG4gICAgU3RvcmVNb2R1bGUuZm9yUm9vdCggc3RvcmVSZWR1Y2VycywgU1RPUkVfQ09ORklHKSxcbiAgICBFZmZlY3RzTW9kdWxlLmZvclJvb3QoW1xuICAgICAgICBEZWxldGVPbmdlcGxhbmRlQWN0aWVFZmZlY3QsXG4gICAgICAgIExhYWRTaWduYWxlcmluZ3NiZWVsZGVuRWZmZWN0LFxuICAgICAgICBMYWFkUm91dGVGaWxlc0VmZmVjdCxcbiAgICAgICAgQmVwYWFsT25nZXBsYW5kZUFjdGllc0VmZmVjdCxcbiAgICAgICAgQmV3ZWdpbmdJbnZvZWdlbkVmZmVjdCxcbiAgICAgICAgUml0ZGVsZW5FZmZlY3QsXG4gICAgICAgIFJpdEdvZWRrZXVyZW5FZmZlY3QsXG4gICAgICAgIFN2Z1ZpZXdFZmZlY3RcbiAgICBdKVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBNc3R2aWV3ZXJDb21wb25lbnQsXG4gICAgICAgIE92ZXJsYXlDb21wb25lbnQsXG4gICAgICAgIFByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50LFxuICAgICAgICBScGVDb21wb25lbnQsXG4gICAgICAgIFJpdGRlbGVuTGlqc3RDb21wb25lbnQsXG4gICAgICAgIFJpdGRlbGVuVmlld0NvbXBvbmVudCxcbiAgICAgICAgQ2Fyb3VzZWxDb250cm9sc0NvbXBvbmVudCxcbiAgICAgICAgVmlld2VyQ29udHJvbHNDb21wb25lbnRcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgTXN0dmlld2VyQ29tcG9uZW50XG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgWm9uZVV0aWwsXG4gICAgICAgIFNpZ25hbGVyaW5nc2JlZWxkSW5mb1Jlc291cmNlLFxuICAgICAgICBNc3RMb2dnaW5nUmVzb3VyY2UsXG4gICAgICAgIEVkaXRvclNlcnZpY2UsXG4gICAgICAgIFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UsXG4gICAgICAgIFJpdExlemVyU2VydmljZSxcbiAgICAgICAgQmV3ZWdpbmdVdGlscyxcbiAgICAgICAgQWN0aWVIZWxwZXIsXG4gICAgICAgIExvZ2dpbmdIZWxwZXIsXG4gICAgICAgIEJld2VnaW5nVmVycmlqa2VyU2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTXN0Vmlld2VyTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IEVkaXRvclNlcnZpY2UsIHpvbmVVdGlsOiBab25lVXRpbCkge1xuICAgICAgICAvLyBtYWFrIGRlIEVkaXRvclNlcnZpY2UgdG9lZ2Fua2VsaWprIHZvb3IgR1dUIGNvZGVcbiAgICAgICAgd2luZG93WydycGUnXSA9IHtcbiAgICAgICAgICAgIEVkaXRvclNlcnZpY2U6IHpvbmVVdGlsLnByb3h5KHNlcnZpY2UpXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
@@ -0,0 +1,26 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subscription } from 'rxjs/Subscription';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common/http";
5
+ import * as i2 from "@ngrx/store";
6
+ export class BaseRestService {
7
+ constructor(httpClient, store) {
8
+ this.httpClient = httpClient;
9
+ this.store = store;
10
+ this.subscriptions = new Subscription();
11
+ this.subscriptions.add(this.store.select('baseUrl').subscribe(baseUrl => this.baseUrl = baseUrl));
12
+ this.subscriptions.add(this.store.select('iaVersie').subscribe(iaVersie => this.iaVersie = iaVersie.versie));
13
+ }
14
+ ngOnDestroy() {
15
+ this.subscriptions.unsubscribe();
16
+ }
17
+ }
18
+ BaseRestService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: BaseRestService, deps: [{ token: i1.HttpClient }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable });
19
+ BaseRestService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: BaseRestService, providedIn: 'root' });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: BaseRestService, decorators: [{
21
+ type: Injectable,
22
+ args: [{
23
+ providedIn: 'root'
24
+ }]
25
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Store }]; } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvc2VydmljZXMvYmFzZS1yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFNakQsTUFBTSxPQUFPLGVBQWU7SUFNeEIsWUFBc0IsVUFBc0IsRUFBWSxLQUE0QjtRQUE5RCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVksVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFKNUUsa0JBQWEsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUtyRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQzs7NEdBYlEsZUFBZTtnSEFBZixlQUFlLGNBRlosTUFBTTsyRkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgTXN0RWRpdG9yU3RhdGUgfSBmcm9tICcuLi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYXNlUmVzdFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJvdGVjdGVkIGJhc2VVcmw6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgaWFWZXJzaWU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPikge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc3RvcmUuc2VsZWN0KCdiYXNlVXJsJykuc3Vic2NyaWJlKGJhc2VVcmwgPT4gdGhpcy5iYXNlVXJsID0gYmFzZVVybCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc3RvcmUuc2VsZWN0KCdpYVZlcnNpZScpLnN1YnNjcmliZShpYVZlcnNpZSA9PiB0aGlzLmlhVmVyc2llID0gaWFWZXJzaWUudmVyc2llKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiJdfQ==