speechrecorderng 3.10.11 → 3.10.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@ For backwards compatibility to server REST API v1 set the property `apiVersion:
9
9
 
10
10
  ### Install NPM package
11
11
  Speechrecorder module is available as NPM package.
12
- Add `"speechrecorderng": "3.10.11"` to the `dependencies` array property in the `package.json` file of your application. Run `npm install` to install the package.
12
+ Add `"speechrecorderng": "3.10.12"` to the `dependencies` array property in the `package.json` file of your application. Run `npm install` to install the package.
13
13
  ### Module integration
14
14
  Add SpeechRecorderNg module to imports property of your `AppModule` annotation. The module main component `SpeechRecorder` should be activated by an Angular route.
15
15
 
@@ -1,6 +1,7 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { MessageDialog } from "../../../ui/message_dialog";
3
3
  import { RecordingFileViewComponent } from "./recording-file-view.component";
4
+ import { ErrorHelper } from "../../../utils/utils";
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "./recordingfile-service";
6
7
  import * as i2 from "../../recordings/recordings.service";
@@ -73,13 +74,15 @@ export class RecordingFileUI extends RecordingFileViewComponent {
73
74
  sf = s.startFrame;
74
75
  ef = s.endFrame;
75
76
  }
76
- this.recordingFileService.saveEditSelection(this.recordingFile.recordingFileId, sr, sf, ef).subscribe({ next: (value) => { },
77
- error: () => {
77
+ this.recordingFileService.saveEditSelection(this.recordingFile.recordingFileId, sr, sf, ef).subscribe({
78
+ next: () => { },
79
+ error: (err) => {
80
+ const errMsg = ErrorHelper.message('Could not save edit selection to server', err);
78
81
  this.dialog.open(MessageDialog, {
79
82
  data: {
80
83
  type: 'error',
81
84
  title: 'Save selection edit error',
82
- msg: "Could not save edit selection to WikiSpeech server!",
85
+ msg: errMsg,
83
86
  advice: "Please check network connection and server state."
84
87
  }
85
88
  });
@@ -140,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
140
143
  <button mat-raised-button color="accent" (click)="applySelection()" [disabled]="editSaved">{{this.applyButtonText()}}</button>
141
144
  `, styles: [":host{flex:2;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#fff}\n", ".ctrlview{display:flex;flex-direction:row}\n", "audio-display-control{flex:3}\n"] }]
142
145
  }], ctorParameters: () => [{ type: i1.RecordingFileService }, { type: i2.RecordingService }, { type: i3.SessionService }, { type: i4.Router }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i5.MatDialog }, { type: i6.MatSnackBar }] });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWZpbGUtdS1pLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL3JlY29yZGluZ2ZpbGUvcmVjb3JkaW5nLWZpbGUtdS1pLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlWLE1BQU0sZUFBZSxDQUFBO0FBT3RCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQXNEM0UsTUFBTSxPQUFPLGVBQWdCLFNBQVEsMEJBQTBCO0lBSzdELFlBQXNCLG9CQUF5QyxFQUFXLGdCQUFpQyxFQUFXLGNBQTZCLEVBQVcsTUFBYSxFQUFXLEtBQXFCLEVBQVksR0FBc0IsRUFBVyxJQUFlLEVBQVksTUFBZ0IsRUFBUyxRQUFxQjtRQUMvVCxLQUFLLENBQUMsb0JBQW9CLEVBQUMsZ0JBQWdCLEVBQUMsY0FBYyxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsR0FBRyxFQUFDLElBQUksRUFBQyxNQUFNLENBQUMsQ0FBQTtRQURwRSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQVcscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUFXLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQVcsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUFXLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVksUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQWE7UUFIalUsdUJBQWtCLEdBQWdCLElBQUksQ0FBQztRQUN2QyxjQUFTLEdBQVMsSUFBSSxDQUFBO1FBSXBCLElBQUksQ0FBQyxPQUFPLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7SUFFdkMsQ0FBQztJQUVELGVBQWU7UUFDYixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUE7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQTtZQUNoQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNOLE9BQU8sOENBQThDLENBQUM7WUFDeEQsQ0FBQztpQkFBSSxDQUFDO2dCQUNKLE9BQU8sOEJBQThCLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUM7UUFDRCxtQkFBbUI7UUFDbkIsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRVMsV0FBVyxDQUFDLElBQW9CO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVPLGFBQWE7UUFDckIsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RCLElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtnQkFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDM0ksQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQSxJQUFJLENBQUM7UUFDdkUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7SUFDdkIsQ0FBQztJQUVDLGNBQWM7UUFDWixJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQixJQUFJLEVBQUUsR0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztZQUN0QyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQTtZQUNoQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxDQUFDO2dCQUU5QyxJQUFJLEVBQUUsR0FBRSxJQUFJLENBQUM7Z0JBQ2IsSUFBSSxFQUFFLEdBQUMsSUFBSSxDQUFDO2dCQUNaLElBQUksRUFBRSxHQUFDLElBQUksQ0FBQztnQkFDWixJQUFHLENBQUMsRUFBRSxDQUFDO29CQUNMLEVBQUUsR0FBRSxFQUFFLENBQUMsVUFBVSxDQUFDO29CQUNsQixFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQztvQkFDbEIsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xCLENBQUM7Z0JBQ0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUNqRyxFQUFDLElBQUksRUFBQyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUUsQ0FBQztvQkFDekIsS0FBSyxFQUFDLEdBQUcsRUFBRTt3QkFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7NEJBRTlCLElBQUksRUFBRTtnQ0FDSixJQUFJLEVBQUUsT0FBTztnQ0FDYixLQUFLLEVBQUUsMkJBQTJCO2dDQUNsQyxHQUFHLEVBQUUscURBQXFEO2dDQUMxRCxNQUFNLEVBQUUsbURBQW1EOzZCQUM1RDt5QkFDRixDQUFDLENBQUE7b0JBQ0osQ0FBQyxFQUFFLFFBQVEsRUFBQyxHQUFHLEVBQUU7d0JBQ1gsK0NBQStDO3dCQUMvQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFBO3dCQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTt3QkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsSUFBSSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7b0JBQ2xGLENBQUM7aUJBQ04sQ0FBQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQWhGVSxlQUFlO2tHQUFmLGVBQWUscUZBN0NoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlQ7OzJGQXlCVSxlQUFlO2tCQWpEM0IsU0FBUzsrQkFFRSx3QkFBd0IsWUFFeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBFbGVtZW50UmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuXHJcblxyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtSZWNvcmRpbmdGaWxlU2VydmljZX0gZnJvbSBcIi4vcmVjb3JkaW5nZmlsZS1zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi4vLi4vLi4vYXVkaW8vcGVyc2lzdG9yXCI7XHJcbmltcG9ydCB7TWVzc2FnZURpYWxvZ30gZnJvbSBcIi4uLy4uLy4uL3VpL21lc3NhZ2VfZGlhbG9nXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZVZpZXdDb21wb25lbnR9IGZyb20gXCIuL3JlY29yZGluZy1maWxlLXZpZXcuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7U2Vzc2lvblNlcnZpY2V9IGZyb20gXCIuLi9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtSZWNvcmRpbmdTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vcmVjb3JkaW5ncy9yZWNvcmRpbmdzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtNYXRTbmFja0Jhcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLWF1ZGlvZGlzcGxheXBsYXllcicsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxoMT5SZWNvcmRpbmcgZmlsZSBlZGl0aW5nPC9oMT5cclxuICAgICAgPHA+T24gZXhwb3J0IG9yIGRlbGl2ZXJ5IHRoZSBlZGl0aW5nIHNlbGVjdGlvbiBvZiB0aGUgcmVjb3JkaW5nIGZpbGUgaXMgY3V0IG91dC4gSWYgbm8gZWRpdGluZyBzZWxlY3Rpb24gaXMgYXBwbGllZCB0aGUgb3JpZ2luYWwgZmlsZSBpcyBleHBvcnRlZC48L3A+XHJcblxyXG4gICAgPGF1ZGlvLWRpc3BsYXktc2Nyb2xsLXBhbmUgI2F1ZGlvRGlzcGxheVNjcm9sbFBhbmU+PC9hdWRpby1kaXNwbGF5LXNjcm9sbC1wYW5lPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY3RybHZpZXdcIj5cclxuICAgICAgICA8YXBwLXJlY29yZGluZy1maWxlLW1ldGEgW3Nlc3Npb25JZF09XCJzZXNzaW9uSWRcIiAgW3JlY29yZGluZ0ZpbGVdPVwicmVjb3JkaW5nRmlsZVwiIFtzdGF0ZUxvYWRpbmddPVwiYXVkaW9GZXRjaGluZ1wiPjwvYXBwLXJlY29yZGluZy1maWxlLW1ldGE+XHJcbiAgICA8YXVkaW8tZGlzcGxheS1jb250cm9sIFthdWRpb0NsaXBdPVwiYXVkaW9DbGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0YXJ0QWN0aW9uXT1cInBsYXlTdGFydEFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTZWxlY3Rpb25BY3Rpb25dPVwicGxheVNlbGVjdGlvbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTdG9wQWN0aW9uXT1cInBsYXlTdG9wQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbl09XCJhcD8uYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21JbkFjdGlvbl09XCJ6b29tSW5BY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tT3V0QWN0aW9uXT1cInpvb21PdXRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tU2VsZWN0ZWRBY3Rpb25dPVwiem9vbVNlbGVjdGVkQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21GaXRUb1BhbmVsQWN0aW9uXT1cInpvb21GaXRUb1BhbmVsQWN0aW9uXCI+PC9hdWRpby1kaXNwbGF5LWNvbnRyb2w+XHJcbiAgICAgICAgPGFwcC1yZWNvcmRpbmctZmlsZS1uYXZpIFtpdGVtc109XCJhdmFpbFJlY0ZpbGVzPy5sZW5ndGhcIiBbaXRlbVBvc109XCJwb3NJbkxpc3RcIiBbdmVyc2lvbl09XCJyZWNvcmRpbmdGaWxlVmVyc2lvblwiIFt2ZXJzaW9uc109XCJ2ZXJzaW9uc1wiIFtmaXJzdEFjdGlvbl09XCJmaXJzdEFjdGlvblwiIFtwcmV2QWN0aW9uXT1cInByZXZBY3Rpb25cIiBbbmV4dEFjdGlvbl09XCJuZXh0QWN0aW9uXCIgW2xhc3RBY3Rpb25dPVwibGFzdEFjdGlvblwiIFtzZWxlY3RWZXJzaW9uXT1cInRvVmVyc2lvbkFjdGlvblwiIFtuYXZpSW5mb0xvYWRpbmddPVwibmF2aUluZm9Mb2FkaW5nXCI+PC9hcHAtcmVjb3JkaW5nLWZpbGUtbmF2aT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgKGNsaWNrKT1cImFwcGx5U2VsZWN0aW9uKClcIiBbZGlzYWJsZWRdPVwiZWRpdFNhdmVkXCI+e3t0aGlzLmFwcGx5QnV0dG9uVGV4dCgpfX08L2J1dHRvbj5cclxuICBgLFxyXG4gIHN0eWxlczogW1xyXG4gICAgYDpob3N0IHtcclxuICAgICAgICAgICAgICAgZmxleDogMjtcclxuICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICAgICAgICAgbWluLWhlaWdodDowO1xyXG4gICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICAgICAgICAgei1pbmRleDogNTtcclxuICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgICAgICB9YCxgXHJcbiAgICAgICAgLmN0cmx2aWV3e1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgICAgfVxyXG4gICAgYCxgXHJcbiAgICAgIGF1ZGlvLWRpc3BsYXktY29udHJvbHtcclxuXHJcbiAgICAgICAgZmxleDogMztcclxuICAgICAgfVxyXG4gICAgYF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdGaWxlVUkgZXh0ZW5kcyBSZWNvcmRpbmdGaWxlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBzYXZlZEVkaXRTZWxlY3Rpb246U2VsZWN0aW9ufG51bGw9bnVsbDtcclxuICBlZGl0U2F2ZWQ6Ym9vbGVhbj10cnVlXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWNvcmRpbmdGaWxlU2VydmljZTpSZWNvcmRpbmdGaWxlU2VydmljZSxwcm90ZWN0ZWQgcmVjb3JkaW5nU2VydmljZTpSZWNvcmRpbmdTZXJ2aWNlLHByb3RlY3RlZCBzZXNzaW9uU2VydmljZTpTZXNzaW9uU2VydmljZSxwcm90ZWN0ZWQgcm91dGVyOlJvdXRlcixwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcm90ZWN0ZWQgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixwcm90ZWN0ZWQgZVJlZjpFbGVtZW50UmVmLCBwcm90ZWN0ZWQgZGlhbG9nOk1hdERpYWxvZyxwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0Jhcikge1xyXG4gICAgc3VwZXIocmVjb3JkaW5nRmlsZVNlcnZpY2UscmVjb3JkaW5nU2VydmljZSxzZXNzaW9uU2VydmljZSxyb3V0ZXIscm91dGUscmVmLGVSZWYsZGlhbG9nKVxyXG4gICAgdGhpcy5wYXJlbnRFPXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50O1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpXHJcbiAgfVxyXG5cclxuICBhcHBseUJ1dHRvblRleHQoKTpzdHJpbmcge1xyXG4gICAgaWYodGhpcy5hdWRpb0NsaXApIHtcclxuICAgICAgbGV0IHMgPSB0aGlzLmF1ZGlvQ2xpcC5zZWxlY3Rpb25cclxuICAgICAgaWYgKHMpIHtcclxuICAgICAgICByZXR1cm4gXCJBcHBseSBjdXJyZW50IHNlbGVjdGlvbiBhcyBlZGl0aW5nIHNlbGVjdGlvblwiO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICByZXR1cm4gXCJDYW5jZWwgb3V0IGVkaXRpbmcgc2VsZWN0aW9uXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGp1c3QgYXMgZmFsbGJhY2tcclxuICAgIHJldHVybiBcIkFwcGx5IHNlbGVjdGlvblwiO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxvYWRSZWNGaWxlKHJmSWQ6bnVtYmVyIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVkaXRTYXZlZCA9IHRydWU7XHJcbiAgICBzdXBlci5sb2FkUmVjRmlsZShyZklkKTtcclxuICB9XHJcblxyXG5wcm90ZWN0ZWQgbG9hZGVkUmVjZmlsZSgpIHtcclxuICBzdXBlci5sb2FkZWRSZWNmaWxlKCk7XHJcbiAgaWYodGhpcy5hdWRpb0NsaXApIHtcclxuICAgIHRoaXMuYXVkaW9DbGlwLmFkZFNlbGVjdGlvbk9ic2VydmVyKChjbGlwKSA9PiB7XHJcbiAgICAgIGxldCBzID0gY2xpcC5zZWxlY3Rpb25cclxuICAgICAgdGhpcy5lZGl0U2F2ZWQgPSAoKHRoaXMuc2F2ZWRFZGl0U2VsZWN0aW9uID09IG51bGwgJiYgcyA9PSBudWxsKSB8fCB0aGlzLnNhdmVkRWRpdFNlbGVjdGlvbiAhPSBudWxsICYmIHRoaXMuc2F2ZWRFZGl0U2VsZWN0aW9uLmVxdWFscyhzKSlcclxuICAgIH0pO1xyXG4gIH1cclxuICB0aGlzLnNhdmVkRWRpdFNlbGVjdGlvbiA9IHRoaXMuYXVkaW9DbGlwP3RoaXMuYXVkaW9DbGlwLnNlbGVjdGlvbjpudWxsO1xyXG4gIHRoaXMuZWRpdFNhdmVkID0gdHJ1ZVxyXG59XHJcblxyXG4gIGFwcGx5U2VsZWN0aW9uKCl7XHJcbiAgICBpZih0aGlzLmF1ZGlvQ2xpcCkge1xyXG4gICAgICBsZXQgYWI9dGhpcy5hdWRpb0NsaXAuYXVkaW9EYXRhSG9sZGVyO1xyXG4gICAgICBsZXQgcyA9IHRoaXMuYXVkaW9DbGlwLnNlbGVjdGlvblxyXG4gICAgICBpZiAoYWIgJiYgdGhpcy5yZWNvcmRpbmdGaWxlPy5yZWNvcmRpbmdGaWxlSWQpIHtcclxuXHJcbiAgICAgICAgbGV0IHNyPSBudWxsO1xyXG4gICAgICAgIGxldCBzZj1udWxsO1xyXG4gICAgICAgIGxldCBlZj1udWxsO1xyXG4gICAgICAgIGlmKHMpIHtcclxuICAgICAgICAgIHNyPSBhYi5zYW1wbGVSYXRlO1xyXG4gICAgICAgICAgc2YgPSBzLnN0YXJ0RnJhbWU7XHJcbiAgICAgICAgICBlZiA9IHMuZW5kRnJhbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yZWNvcmRpbmdGaWxlU2VydmljZS5zYXZlRWRpdFNlbGVjdGlvbih0aGlzLnJlY29yZGluZ0ZpbGUucmVjb3JkaW5nRmlsZUlkLCBzciwgc2YsIGVmKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAge25leHQ6KHZhbHVlKSA9PiB7fVxyXG4gICAgICAsIGVycm9yOigpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oTWVzc2FnZURpYWxvZywge1xyXG5cclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdTYXZlIHNlbGVjdGlvbiBlZGl0IGVycm9yJyxcclxuICAgICAgICAgICAgICBtc2c6IFwiQ291bGQgbm90IHNhdmUgZWRpdCBzZWxlY3Rpb24gdG8gV2lraVNwZWVjaCBzZXJ2ZXIhXCIsXHJcbiAgICAgICAgICAgICAgYWR2aWNlOiBcIlBsZWFzZSBjaGVjayBuZXR3b3JrIGNvbm5lY3Rpb24gYW5kIHNlcnZlciBzdGF0ZS5cIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0sIGNvbXBsZXRlOigpID0+IHtcclxuICAgICAgICAgICAgICAvLyBPciB1c2UgcmV0dXJuZWQgc2VsZWN0aW9uIHZhbHVlIGZyb20gc2VydmVyP1xyXG4gICAgICAgICAgICAgIHRoaXMuc2F2ZWRFZGl0U2VsZWN0aW9uID0gc1xyXG4gICAgICAgICAgICAgIHRoaXMuZWRpdFNhdmVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0aW9uIGVkaXQgc2F2ZWQgc3VjY2Vzc2Z1bGx5LicsICdPSycsIHtkdXJhdGlvbjogMTUwMH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWZpbGUtdS1pLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL3JlY29yZGluZ2ZpbGUvcmVjb3JkaW5nLWZpbGUtdS1pLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlWLE1BQU0sZUFBZSxDQUFBO0FBT3RCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUkzRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFtRGpELE1BQU0sT0FBTyxlQUFnQixTQUFRLDBCQUEwQjtJQUs3RCxZQUFzQixvQkFBeUMsRUFBVyxnQkFBaUMsRUFBVyxjQUE2QixFQUFXLE1BQWEsRUFBVyxLQUFxQixFQUFZLEdBQXNCLEVBQVcsSUFBZSxFQUFZLE1BQWdCLEVBQVMsUUFBcUI7UUFDL1QsS0FBSyxDQUFDLG9CQUFvQixFQUFDLGdCQUFnQixFQUFDLGNBQWMsRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxJQUFJLEVBQUMsTUFBTSxDQUFDLENBQUE7UUFEcEUseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUFXLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFBVyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUFXLFdBQU0sR0FBTixNQUFNLENBQU87UUFBVyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFZLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVcsU0FBSSxHQUFKLElBQUksQ0FBVztRQUFZLFdBQU0sR0FBTixNQUFNLENBQVU7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFh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QU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFOzRCQUU5QixJQUFJLEVBQUU7Z0NBQ0osSUFBSSxFQUFFLE9BQU87Z0NBQ2IsS0FBSyxFQUFFLDJCQUEyQjtnQ0FDbEMsR0FBRyxFQUFFLE1BQU07Z0NBQ1gsTUFBTSxFQUFFLG1EQUFtRDs2QkFDNUQ7eUJBQ0YsQ0FBQyxDQUFBO29CQUNKLENBQUMsRUFBRSxRQUFRLEVBQUMsR0FBRyxFQUFFO3dCQUNmLCtDQUErQzt3QkFDL0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQTt3QkFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7d0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLElBQUksRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO29CQUNsRixDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0FuRlUsZUFBZTtrR0FBZixlQUFlLHFGQTdDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUOzsyRkF5QlUsZUFBZTtrQkFqRDNCLFNBQVM7K0JBRUUsd0JBQXdCLFlBRXhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgRWxlbWVudFJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5cclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZVNlcnZpY2V9IGZyb20gXCIuL3JlY29yZGluZ2ZpbGUtc2VydmljZVwiO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL3BlcnNpc3RvclwiO1xyXG5pbXBvcnQge01lc3NhZ2VEaWFsb2d9IGZyb20gXCIuLi8uLi8uLi91aS9tZXNzYWdlX2RpYWxvZ1wiO1xyXG5pbXBvcnQge1JlY29yZGluZ0ZpbGVWaWV3Q29tcG9uZW50fSBmcm9tIFwiLi9yZWNvcmRpbmctZmlsZS12aWV3LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1Nlc3Npb25TZXJ2aWNlfSBmcm9tIFwiLi4vc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nU2VydmljZX0gZnJvbSBcIi4uLy4uL3JlY29yZGluZ3MvcmVjb3JkaW5ncy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TWF0U25hY2tCYXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXJcIjtcclxuaW1wb3J0IHtFcnJvckhlbHBlcn0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3V0aWxzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhcHAtYXVkaW9kaXNwbGF5cGxheWVyJyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGgxPlJlY29yZGluZyBmaWxlIGVkaXRpbmc8L2gxPlxyXG4gICAgICA8cD5PbiBleHBvcnQgb3IgZGVsaXZlcnkgdGhlIGVkaXRpbmcgc2VsZWN0aW9uIG9mIHRoZSByZWNvcmRpbmcgZmlsZSBpcyBjdXQgb3V0LiBJZiBubyBlZGl0aW5nIHNlbGVjdGlvbiBpcyBhcHBsaWVkIHRoZSBvcmlnaW5hbCBmaWxlIGlzIGV4cG9ydGVkLjwvcD5cclxuXHJcbiAgICA8YXVkaW8tZGlzcGxheS1zY3JvbGwtcGFuZSAjYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZT48L2F1ZGlvLWRpc3BsYXktc2Nyb2xsLXBhbmU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjdHJsdmlld1wiPlxyXG4gICAgICAgIDxhcHAtcmVjb3JkaW5nLWZpbGUtbWV0YSBbc2Vzc2lvbklkXT1cInNlc3Npb25JZFwiICBbcmVjb3JkaW5nRmlsZV09XCJyZWNvcmRpbmdGaWxlXCIgW3N0YXRlTG9hZGluZ109XCJhdWRpb0ZldGNoaW5nXCI+PC9hcHAtcmVjb3JkaW5nLWZpbGUtbWV0YT5cclxuICAgIDxhdWRpby1kaXNwbGF5LWNvbnRyb2wgW2F1ZGlvQ2xpcF09XCJhdWRpb0NsaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGF5U3RhcnRBY3Rpb25dPVwicGxheVN0YXJ0QWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVNlbGVjdGlvbkFjdGlvbl09XCJwbGF5U2VsZWN0aW9uQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0b3BBY3Rpb25dPVwicGxheVN0b3BBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uXT1cImFwPy5hdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbem9vbUluQWN0aW9uXT1cInpvb21JbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21PdXRBY3Rpb25dPVwiem9vbU91dEFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21TZWxlY3RlZEFjdGlvbl09XCJ6b29tU2VsZWN0ZWRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbem9vbUZpdFRvUGFuZWxBY3Rpb25dPVwiem9vbUZpdFRvUGFuZWxBY3Rpb25cIj48L2F1ZGlvLWRpc3BsYXktY29udHJvbD5cclxuICAgICAgICA8YXBwLXJlY29yZGluZy1maWxlLW5hdmkgW2l0ZW1zXT1cImF2YWlsUmVjRmlsZXM/Lmxlbmd0aFwiIFtpdGVtUG9zXT1cInBvc0luTGlzdFwiIFt2ZXJzaW9uXT1cInJlY29yZGluZ0ZpbGVWZXJzaW9uXCIgW3ZlcnNpb25zXT1cInZlcnNpb25zXCIgW2ZpcnN0QWN0aW9uXT1cImZpcnN0QWN0aW9uXCIgW3ByZXZBY3Rpb25dPVwicHJldkFjdGlvblwiIFtuZXh0QWN0aW9uXT1cIm5leHRBY3Rpb25cIiBbbGFzdEFjdGlvbl09XCJsYXN0QWN0aW9uXCIgW3NlbGVjdFZlcnNpb25dPVwidG9WZXJzaW9uQWN0aW9uXCIgW25hdmlJbmZvTG9hZGluZ109XCJuYXZpSW5mb0xvYWRpbmdcIj48L2FwcC1yZWNvcmRpbmctZmlsZS1uYXZpPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwiYXBwbHlTZWxlY3Rpb24oKVwiIFtkaXNhYmxlZF09XCJlZGl0U2F2ZWRcIj57e3RoaXMuYXBwbHlCdXR0b25UZXh0KCl9fTwvYnV0dG9uPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgOmhvc3Qge1xyXG4gICAgICAgICAgICAgICBmbGV4OiAyO1xyXG4gICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgICAgICAgICBtaW4taGVpZ2h0OjA7XHJcbiAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgICAgICB6LWluZGV4OiA1O1xyXG4gICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICAgICAgIH1gLGBcclxuICAgICAgICAuY3RybHZpZXd7XHJcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAgICB9XHJcbiAgICBgLGBcclxuICAgICAgYXVkaW8tZGlzcGxheS1jb250cm9se1xyXG5cclxuICAgICAgICBmbGV4OiAzO1xyXG4gICAgICB9XHJcbiAgICBgXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlY29yZGluZ0ZpbGVVSSBleHRlbmRzIFJlY29yZGluZ0ZpbGVWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIHNhdmVkRWRpdFNlbGVjdGlvbjpTZWxlY3Rpb258bnVsbD1udWxsO1xyXG4gIGVkaXRTYXZlZDpib29sZWFuPXRydWVcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlY29yZGluZ0ZpbGVTZXJ2aWNlOlJlY29yZGluZ0ZpbGVTZXJ2aWNlLHByb3RlY3RlZCByZWNvcmRpbmdTZXJ2aWNlOlJlY29yZGluZ1NlcnZpY2UscHJvdGVjdGVkIHNlc3Npb25TZXJ2aWNlOlNlc3Npb25TZXJ2aWNlLHByb3RlY3RlZCByb3V0ZXI6Um91dGVyLHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByb3RlY3RlZCByZWY6IENoYW5nZURldGVjdG9yUmVmLHByb3RlY3RlZCBlUmVmOkVsZW1lbnRSZWYsIHByb3RlY3RlZCBkaWFsb2c6TWF0RGlhbG9nLHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyKSB7XHJcbiAgICBzdXBlcihyZWNvcmRpbmdGaWxlU2VydmljZSxyZWNvcmRpbmdTZXJ2aWNlLHNlc3Npb25TZXJ2aWNlLHJvdXRlcixyb3V0ZSxyZWYsZVJlZixkaWFsb2cpXHJcbiAgICB0aGlzLnBhcmVudEU9dGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KClcclxuICB9XHJcblxyXG4gIGFwcGx5QnV0dG9uVGV4dCgpOnN0cmluZyB7XHJcbiAgICBpZih0aGlzLmF1ZGlvQ2xpcCkge1xyXG4gICAgICBsZXQgcyA9IHRoaXMuYXVkaW9DbGlwLnNlbGVjdGlvblxyXG4gICAgICBpZiAocykge1xyXG4gICAgICAgIHJldHVybiBcIkFwcGx5IGN1cnJlbnQgc2VsZWN0aW9uIGFzIGVkaXRpbmcgc2VsZWN0aW9uXCI7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHJldHVybiBcIkNhbmNlbCBvdXQgZWRpdGluZyBzZWxlY3Rpb25cIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8ganVzdCBhcyBmYWxsYmFja1xyXG4gICAgcmV0dXJuIFwiQXBwbHkgc2VsZWN0aW9uXCI7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbG9hZFJlY0ZpbGUocmZJZDpudW1iZXIgfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuZWRpdFNhdmVkID0gdHJ1ZTtcclxuICAgIHN1cGVyLmxvYWRSZWNGaWxlKHJmSWQpO1xyXG4gIH1cclxuXHJcbnByb3RlY3RlZCBsb2FkZWRSZWNmaWxlKCkge1xyXG4gIHN1cGVyLmxvYWRlZFJlY2ZpbGUoKTtcclxuICBpZih0aGlzLmF1ZGlvQ2xpcCkge1xyXG4gICAgdGhpcy5hdWRpb0NsaXAuYWRkU2VsZWN0aW9uT2JzZXJ2ZXIoKGNsaXApID0+IHtcclxuICAgICAgbGV0IHMgPSBjbGlwLnNlbGVjdGlvblxyXG4gICAgICB0aGlzLmVkaXRTYXZlZCA9ICgodGhpcy5zYXZlZEVkaXRTZWxlY3Rpb24gPT0gbnVsbCAmJiBzID09IG51bGwpIHx8IHRoaXMuc2F2ZWRFZGl0U2VsZWN0aW9uICE9IG51bGwgJiYgdGhpcy5zYXZlZEVkaXRTZWxlY3Rpb24uZXF1YWxzKHMpKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRoaXMuc2F2ZWRFZGl0U2VsZWN0aW9uID0gdGhpcy5hdWRpb0NsaXA/dGhpcy5hdWRpb0NsaXAuc2VsZWN0aW9uOm51bGw7XHJcbiAgdGhpcy5lZGl0U2F2ZWQgPSB0cnVlXHJcbn1cclxuXHJcbiAgYXBwbHlTZWxlY3Rpb24oKXtcclxuICAgIGlmKHRoaXMuYXVkaW9DbGlwKSB7XHJcbiAgICAgIGxldCBhYj10aGlzLmF1ZGlvQ2xpcC5hdWRpb0RhdGFIb2xkZXI7XHJcbiAgICAgIGxldCBzID0gdGhpcy5hdWRpb0NsaXAuc2VsZWN0aW9uXHJcbiAgICAgIGlmIChhYiAmJiB0aGlzLnJlY29yZGluZ0ZpbGU/LnJlY29yZGluZ0ZpbGVJZCkge1xyXG5cclxuICAgICAgICBsZXQgc3I9IG51bGw7XHJcbiAgICAgICAgbGV0IHNmPW51bGw7XHJcbiAgICAgICAgbGV0IGVmPW51bGw7XHJcbiAgICAgICAgaWYocykge1xyXG4gICAgICAgICAgc3I9IGFiLnNhbXBsZVJhdGU7XHJcbiAgICAgICAgICBzZiA9IHMuc3RhcnRGcmFtZTtcclxuICAgICAgICAgIGVmID0gcy5lbmRGcmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWNvcmRpbmdGaWxlU2VydmljZS5zYXZlRWRpdFNlbGVjdGlvbih0aGlzLnJlY29yZGluZ0ZpbGUucmVjb3JkaW5nRmlsZUlkLCBzciwgc2YsIGVmKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5leHQ6KCkgPT4ge31cclxuICAgICAgICAgICAgLCBlcnJvcjooZXJyKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGVyck1zZz1FcnJvckhlbHBlci5tZXNzYWdlKCdDb3VsZCBub3Qgc2F2ZSBlZGl0IHNlbGVjdGlvbiB0byBzZXJ2ZXInLGVycik7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihNZXNzYWdlRGlhbG9nLCB7XHJcblxyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgICB0aXRsZTogJ1NhdmUgc2VsZWN0aW9uIGVkaXQgZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgICBtc2c6IGVyck1zZyxcclxuICAgICAgICAgICAgICAgICAgYWR2aWNlOiBcIlBsZWFzZSBjaGVjayBuZXR3b3JrIGNvbm5lY3Rpb24gYW5kIHNlcnZlciBzdGF0ZS5cIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0sIGNvbXBsZXRlOigpID0+IHtcclxuICAgICAgICAgICAgICAvLyBPciB1c2UgcmV0dXJuZWQgc2VsZWN0aW9uIHZhbHVlIGZyb20gc2VydmVyP1xyXG4gICAgICAgICAgICAgIHRoaXMuc2F2ZWRFZGl0U2VsZWN0aW9uID0gc1xyXG4gICAgICAgICAgICAgIHRoaXMuZWRpdFNhdmVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0aW9uIGVkaXQgc2F2ZWQgc3VjY2Vzc2Z1bGx5LicsICdPSycsIHtkdXJhdGlvbjogMTUwMH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
@@ -5,6 +5,8 @@ import { AudioClip } from "../../../audio/persistor";
5
5
  import { Selection } from "../../../audio/persistor";
6
6
  import { Action } from "../../../action/action";
7
7
  import { RecordingFileUtil } from "./recording-file";
8
+ import { MessageDialog } from "../../../ui/message_dialog";
9
+ import { ErrorHelper } from "../../../utils/utils";
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "./recordingfile-service";
10
12
  import * as i2 from "../../recordings/recordings.service";
@@ -110,10 +112,10 @@ export class RecordingFileViewComponent extends AudioDisplayPlayer {
110
112
  }
111
113
  toVersion(ae) {
112
114
  let toRfId = null;
113
- let version = ae.value;
115
+ const version = ae.value;
114
116
  if (this.posInList != null && this.availRecFiles) {
115
117
  let cRfs = this.availRecFiles[this.posInList];
116
- let availVersionCnt = cRfs.length;
118
+ //let availVersionCnt = cRfs.length;
117
119
  for (let cRf of cRfs) {
118
120
  if (cRf.version != null) {
119
121
  if (cRf.version === version) {
@@ -246,9 +248,18 @@ export class RecordingFileViewComponent extends AudioDisplayPlayer {
246
248
  }
247
249
  this.audioClip = clip;
248
250
  this.loadedRecfile();
249
- }, error: error1 => {
251
+ }, error: (err) => {
250
252
  this.audioFetching = false;
251
- this.status = 'Error loading audio file!';
253
+ this.status = 'Error loading audio file';
254
+ const errMsg = ErrorHelper.message('Could not load audio file', err);
255
+ this.dialog.open(MessageDialog, {
256
+ data: {
257
+ type: 'error',
258
+ title: this.status,
259
+ msg: errMsg,
260
+ advice: "Please check network connection and server state or contact application administrator."
261
+ }
262
+ });
252
263
  }
253
264
  });
254
265
  }
@@ -292,8 +303,7 @@ export class RecordingFileViewComponent extends AudioDisplayPlayer {
292
303
  let rfd = rfds[rfdi];
293
304
  if (rfd.date) {
294
305
  // convert date string for faster sorting later
295
- let rfdd = new Date(rfd.date);
296
- rfd._dateAsDateObj = rfdd;
306
+ rfd._dateAsDateObj = new Date(rfd.date);
297
307
  }
298
308
  let ic = rfd.itemCode;
299
309
  if (!ic) {
@@ -411,4 +421,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
411
421
  type: ViewChild,
412
422
  args: [AudioDisplayScrollPane]
413
423
  }] } });
414
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWZpbGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdmaWxlL3JlY29yZGluZy1maWxlLXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFBO0FBUXRCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRW5GLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLE1BQU0sRUFBYyxNQUFNLHdCQUF3QixDQUFDO0FBSTNELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7OztBQUduRCxNQUFNLE9BQU8sYUFBYTtDQUV6QjtBQWlERCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsa0JBQWtCO0lBd0JoRSxZQUFzQixvQkFBMEMsRUFBWSxnQkFBa0MsRUFBWSxjQUE4QixFQUFZLE1BQWEsRUFBVyxLQUFxQixFQUFZLEdBQXNCLEVBQVksSUFBZ0IsRUFBWSxNQUFpQjtRQUMxUyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQURILHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFBWSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVksbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUFXLFVBQUssR0FBTCxLQUFL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QUNYLENBQUM7aUNBQU0sQ0FBQztnQ0FDTiw2Q0FBNkM7Z0NBQzdDLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDckMsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUNILEtBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBQyxDQUFDO3dCQUNoQyxJQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7NEJBQ2hDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQzs0QkFDckQsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztnQ0FDdkIsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDOzRCQUM1QixDQUFDOzRCQUNELG9CQUFvQjt3QkFDdEIsQ0FBQztvQkFDTCxDQUFDO29CQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtvQkFDaEIsSUFBSSxDQUFDLGVBQWUsR0FBQyxLQUFLLENBQUM7b0JBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxDQUFDO0lBQ0wsQ0FBQzs4R0F0WFUsMEJBQTBCO2tHQUExQiwwQkFBMEIsa0dBYTFCLHNCQUFzQix1RUF4RHZCOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDs7MkZBMEJVLDBCQUEwQjtrQkEvQ3RDLFNBQVM7K0JBRUUsd0JBQXdCLFlBRXhCOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDt3UkF3Q08sRUFBRTtzQkFEVCxTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdDaGlsZCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuXHJcblxyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuXHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZVNlcnZpY2V9IGZyb20gXCIuL3JlY29yZGluZ2ZpbGUtc2VydmljZVwiO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0F1ZGlvRGlzcGxheVBsYXllcn0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL2F1ZGlvX3BsYXllclwiO1xyXG5cclxuaW1wb3J0IHtBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lfSBmcm9tIFwiLi4vLi4vLi4vYXVkaW8vdWkvYXVkaW9fZGlzcGxheV9zY3JvbGxfcGFuZVwiO1xyXG5pbXBvcnQge0F1ZGlvQ29udGV4dFByb3ZpZGVyfSBmcm9tIFwiLi4vLi4vLi4vYXVkaW8vY29udGV4dFwiO1xyXG5pbXBvcnQge0F1ZGlvQ2xpcH0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL3BlcnNpc3RvclwiO1xyXG5pbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL3BlcnNpc3RvclwiO1xyXG5cclxuaW1wb3J0IHtBY3Rpb24sIEFjdGlvbkV2ZW50fSBmcm9tIFwiLi4vLi4vLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge1Nlc3Npb25TZXJ2aWNlfSBmcm9tIFwiLi4vc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nU2VydmljZX0gZnJvbSBcIi4uLy4uL3JlY29yZGluZ3MvcmVjb3JkaW5ncy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7U3ByUmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uLy4uL3JlY29yZGluZ1wiO1xyXG5pbXBvcnQge1JlY29yZGluZ0ZpbGVVdGlsfSBmcm9tIFwiLi9yZWNvcmRpbmctZmlsZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBJdGVtY29kZUluZGV4e1xyXG4gIFtpdGVtY29kZTogc3RyaW5nXTogQXJyYXk8U3ByUmVjb3JkaW5nRmlsZT47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1hdWRpb2Rpc3BsYXlwbGF5ZXInLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG5cclxuICAgIDxhdWRpby1kaXNwbGF5LXNjcm9sbC1wYW5lICNhdWRpb0Rpc3BsYXlTY3JvbGxQYW5lPjwvYXVkaW8tZGlzcGxheS1zY3JvbGwtcGFuZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjdHJsdmlld1wiPlxyXG4gICAgICA8YXBwLXJlY29yZGluZy1maWxlLW1ldGEgW3Nlc3Npb25JZF09XCJzZXNzaW9uSWRcIiBbcmVjb3JkaW5nRmlsZV09XCJyZWNvcmRpbmdGaWxlXCIgW3N0YXRlTG9hZGluZ109XCJhdWRpb0ZldGNoaW5nXCI+PC9hcHAtcmVjb3JkaW5nLWZpbGUtbWV0YT5cclxuXHJcbiAgICA8YXVkaW8tZGlzcGxheS1jb250cm9sIFthdWRpb0NsaXBdPVwiYXVkaW9DbGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0YXJ0QWN0aW9uXT1cInBsYXlTdGFydEFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTZWxlY3Rpb25BY3Rpb25dPVwicGxheVNlbGVjdGlvbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTdG9wQWN0aW9uXT1cInBsYXlTdG9wQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbl09XCJhcD8uYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21JbkFjdGlvbl09XCJ6b29tSW5BY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tT3V0QWN0aW9uXT1cInpvb21PdXRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tU2VsZWN0ZWRBY3Rpb25dPVwiem9vbVNlbGVjdGVkQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21GaXRUb1BhbmVsQWN0aW9uXT1cInpvb21GaXRUb1BhbmVsQWN0aW9uXCI+PC9hdWRpby1kaXNwbGF5LWNvbnRyb2w+XHJcbiAgICAgIDxhcHAtcmVjb3JkaW5nLWZpbGUtbmF2aSBbaXRlbXNdPVwiYXZhaWxSZWNGaWxlcz8ubGVuZ3RoXCIgW2l0ZW1Qb3NdPVwicG9zSW5MaXN0XCIgW3ZlcnNpb25dPVwicmVjb3JkaW5nRmlsZVZlcnNpb25cIiBbdmVyc2lvbnNdPVwidmVyc2lvbnNcIiBbZmlyc3RBY3Rpb25dPVwiZmlyc3RBY3Rpb25cIiBbcHJldkFjdGlvbl09XCJwcmV2QWN0aW9uXCIgW25leHRBY3Rpb25dPVwibmV4dEFjdGlvblwiIFtsYXN0QWN0aW9uXT1cImxhc3RBY3Rpb25cIiBbc2VsZWN0VmVyc2lvbl09XCJ0b1ZlcnNpb25BY3Rpb25cIiBbbmF2aUluZm9Mb2FkaW5nXT1cIm5hdmlJbmZvTG9hZGluZ1wiPjwvYXBwLXJlY29yZGluZy1maWxlLW5hdmk+XHJcbiAgICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgOmhvc3Qge1xyXG4gICAgICAgICAgICAgICBmbGV4OiAyO1xyXG4gICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgICAgICAgICBtaW4taGVpZ2h0OjA7XHJcbiAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgICAgICB6LWluZGV4OiA1O1xyXG4gICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICAgICAgIH1gLGBcclxuICAgICAgICAuY3RybHZpZXd7XHJcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHJcbiAgICAgICAgfVxyXG4gICAgYCxgXHJcbiAgICAgIGF1ZGlvLWRpc3BsYXktY29udHJvbHtcclxuXHJcbiAgICAgICAgZmxleDogMztcclxuICAgICAgfVxyXG4gICAgYF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdGaWxlVmlld0NvbXBvbmVudCBleHRlbmRzIEF1ZGlvRGlzcGxheVBsYXllciBpbXBsZW1lbnRzIE9uSW5pdCxBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgc2Vzc2lvbklkOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsPSBudWxsO1xyXG4gIHNlc3Npb25JZEZyb21Sb3V0ZTpzdHJpbmd8bnVsbD1udWxsO1xyXG5cclxuICBhdmFpbFJlY0ZpbGVzOiBBcnJheTxBcnJheTxTcHJSZWNvcmRpbmdGaWxlPj58bnVsbD1udWxsO1xyXG4gIHZlcnNpb25zOiBBcnJheTxudW1iZXI+fG51bGw9bnVsbDtcclxuXHJcbiAgcmVjb3JkaW5nRmlsZTogU3ByUmVjb3JkaW5nRmlsZXxudWxsPW51bGw7XHJcbiAgcmVjb3JkaW5nRmlsZVZlcnNpb246bnVtYmVyfG51bGw9bnVsbDtcclxuICBwcml2YXRlIHJvdXRlZEJ5UXVlcnlQYXJhbT1mYWxzZTtcclxuICBwb3NJbkxpc3Q6IG51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoQXVkaW9EaXNwbGF5U2Nyb2xsUGFuZSlcclxuICBwcml2YXRlIGFjITogQXVkaW9EaXNwbGF5U2Nyb2xsUGFuZTtcclxuXHJcbiAgZmlyc3RBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBwcmV2QWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgbmV4dEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIGxhc3RBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICB0b1ZlcnNpb25BY3Rpb246IEFjdGlvbjxudW1iZXI+O1xyXG4gIGF1ZGlvRmV0Y2hpbmc6Ym9vbGVhbjtcclxuICBuYXZpSW5mb0xvYWRpbmc6Ym9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlY29yZGluZ0ZpbGVTZXJ2aWNlOiBSZWNvcmRpbmdGaWxlU2VydmljZSwgcHJvdGVjdGVkIHJlY29yZGluZ1NlcnZpY2U6IFJlY29yZGluZ1NlcnZpY2UsIHByb3RlY3RlZCBzZXNzaW9uU2VydmljZTogU2Vzc2lvblNlcnZpY2UsIHByb3RlY3RlZCByb3V0ZXI6Um91dGVyLHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByb3RlY3RlZCByZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgZVJlZjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nKSB7XHJcbiAgICBzdXBlcihyb3V0ZSwgcmVmLCBlUmVmKVxyXG4gICAgdGhpcy5wYXJlbnRFID0gdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgLy8gVE9ETyBTaG91bGQgYmUgaW5pdGlhbGl6ZWQgd2l0aCBmYWxzZSwgYnV0IHRoaXMgY2F1c2VzIGluIGRlYnVnIG1vZGU6XHJcbiAgICAvLyBFUlJPUiBFcnJvcjogTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yOiBFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBjaGVja2VkLiBQcmV2aW91cyB2YWx1ZTogJ2ZhbHNlJy4gQ3VycmVudCB2YWx1ZTogJ3RydWUnLiBGaW5kIG1vcmUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2Vycm9ycy9ORzAxMDBcclxuICAgIHRoaXMuYXVkaW9GZXRjaGluZz10cnVlO1xyXG5cclxuICAgIHRoaXMubmF2aUluZm9Mb2FkaW5nPWZhbHNlO1xyXG4gICAgdGhpcy5maXJzdEFjdGlvbiA9IG5ldyBBY3Rpb248dm9pZD4oJ0ZpcnN0Jyk7XHJcbiAgICB0aGlzLmZpcnN0QWN0aW9uLm9uQWN0aW9uPSAoKT0+e1xyXG4gICAgICB0aGlzLnBvc0luTGlzdD0wO1xyXG4gICAgICB0aGlzLm5hdmlnYXRlVG9SZWNvcmRpbmdGaWxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXZBY3Rpb24gPSBuZXcgQWN0aW9uPHZvaWQ+KCdQcmV2aW91cycpO1xyXG4gICAgdGhpcy5wcmV2QWN0aW9uLm9uQWN0aW9uPSAoKT0+dGhpcy5wcmV2RmlsZSgpO1xyXG4gICAgdGhpcy5uZXh0QWN0aW9uID0gbmV3IEFjdGlvbjx2b2lkPignTmV4dCcpO1xyXG4gICAgdGhpcy5uZXh0QWN0aW9uLm9uQWN0aW9uPSAoKT0+dGhpcy5uZXh0RmlsZSgpO1xyXG4gICAgdGhpcy5sYXN0QWN0aW9uID0gbmV3IEFjdGlvbjx2b2lkPignTGFzdCcpO1xyXG4gICAgdGhpcy5sYXN0QWN0aW9uLm9uQWN0aW9uPSAoKT0+e1xyXG4gICAgICBpZih0aGlzLmF2YWlsUmVjRmlsZXMpIHtcclxuICAgICAgICB0aGlzLnBvc0luTGlzdCA9IHRoaXMuYXZhaWxSZWNGaWxlcy5sZW5ndGggLSAxO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGVUb1JlY29yZGluZ0ZpbGUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudG9WZXJzaW9uQWN0aW9uPW5ldyBBY3Rpb248bnVtYmVyPignVG8gdmVyc2lvbicpO1xyXG4gICAgdGhpcy50b1ZlcnNpb25BY3Rpb24ub25BY3Rpb249IChhZSk9PnRoaXMudG9WZXJzaW9uKGFlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpXHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbXMpID0+IHtcclxuICAgICAgbGV0IHJmSWRQID0gcGFyYW1zWydyZWNvcmRpbmdGaWxlSWQnXTtcclxuICAgICAgbGV0IHNJZFAgPSBwYXJhbXNbJ3Nlc3Npb25JZCddO1xyXG4gICAgICBpZiAoc0lkUCkge1xyXG4gICAgICAgdGhpcy5zZXNzaW9uSWRGcm9tUm91dGU9c0lkUDtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmZJZFApIHtcclxuICAgICAgICB0aGlzLnJvdXRlZEJ5UXVlcnlQYXJhbT10cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZFJlY0ZpbGUocmZJZFApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbXMpID0+IHtcclxuICAgICAgbGV0IHJmSWRQID0gcGFyYW1zWydyZWNvcmRpbmdGaWxlSWQnXTtcclxuICAgICAgbGV0IHNJZFAgPSBwYXJhbXNbJ3Nlc3Npb25JZCddO1xyXG4gICAgICBpZiAoc0lkUCkge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvbklkRnJvbVJvdXRlPXNJZFA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJmSWRQKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZWRCeVF1ZXJ5UGFyYW09ZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sb2FkUmVjRmlsZShyZklkUCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gaWYodGhpcy5zZXNzaW9uSWQpe1xyXG4gICAgLy8gICAgIHRoaXMubG9hZFNlc3Npb24odGhpcy5zZXNzaW9uSWQpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVUb0lkKHJmSWQ6bnVtYmVyfCBzdHJpbmcpe1xyXG5cclxuICAgIGlmKHRoaXMucm91dGVkQnlRdWVyeVBhcmFtKXtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBxdWVyeVBhcmFtczp7J3JlY29yZGluZ0ZpbGVJZCc6cmZJZH19KVxyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycgKyByZklkXSwge3JlbGF0aXZlVG86IHRoaXMucm91dGV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVUb1JlY29yZGluZ0ZpbGUoKXtcclxuICAgIGlmKHRoaXMucG9zSW5MaXN0IT1udWxsICYmIHRoaXMuYXZhaWxSZWNGaWxlcykge1xyXG4gICAgICBsZXQgbGF0ZXN0TmV4dFJmID0gdGhpcy5hdmFpbFJlY0ZpbGVzW3RoaXMucG9zSW5MaXN0XVswXTtcclxuICAgICAgbGV0IGxuUmZJZCA9IGxhdGVzdE5leHRSZi5yZWNvcmRpbmdGaWxlSWQ7XHJcbiAgICAgIGlmKGxuUmZJZCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGVUb0lkKGxuUmZJZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvVmVyc2lvbihhZTogQWN0aW9uRXZlbnQ8bnVtYmVyPikge1xyXG4gICAgbGV0IHRvUmZJZCA9IG51bGw7XHJcbiAgICBsZXQgdmVyc2lvbiA9IGFlLnZhbHVlO1xyXG4gICAgaWYodGhpcy5wb3NJbkxpc3QhPW51bGwgJiYgdGhpcy5hdmFpbFJlY0ZpbGVzKSB7XHJcbiAgICAgIGxldCBjUmZzID0gdGhpcy5hdmFpbFJlY0ZpbGVzW3RoaXMucG9zSW5MaXN0XTtcclxuICAgICAgbGV0IGF2YWlsVmVyc2lvbkNudCA9IGNSZnMubGVuZ3RoO1xyXG4gICAgICBmb3IgKGxldCBjUmYgb2YgY1Jmcykge1xyXG4gICAgICAgIGlmKGNSZi52ZXJzaW9uICE9bnVsbCkge1xyXG4gICAgICAgICAgaWYgKGNSZi52ZXJzaW9uID09PSB2ZXJzaW9uKSB7XHJcbiAgICAgICAgICAgIHRvUmZJZCA9IGNSZi5yZWNvcmRpbmdGaWxlSWQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRvUmZJZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGVUb0lkKHRvUmZJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJldkZpbGUoKSB7XHJcbiAgICBpZih0aGlzLnBvc0luTGlzdCE9bnVsbCkge1xyXG4gICAgICB0aGlzLnBvc0luTGlzdC0tO1xyXG4gICAgfVxyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvUmVjb3JkaW5nRmlsZSgpXHJcbiAgfVxyXG4gIG5leHRGaWxlKCkge1xyXG4gICAgaWYodGhpcy5wb3NJbkxpc3QhPW51bGwpIHtcclxuICAgICAgdGhpcy5wb3NJbkxpc3QrKztcclxuICAgIH1cclxuICAgIHRoaXMubmF2aWdhdGVUb1JlY29yZGluZ0ZpbGUoKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3NpdGlvbkluTGlzdCgpOm51bWJlciB8IG51bGx7XHJcbiAgICBpZiAodGhpcy5hdmFpbFJlY0ZpbGVzICYmIHRoaXMucmVjb3JkaW5nRmlsZSkge1xyXG4gICAgICBsZXQgY2ljPXRoaXMucmVjb3JkaW5nRmlsZS5pdGVtQ29kZTtcclxuICAgICAgaWYoIWNpYyAmJiB0aGlzLnJlY29yZGluZ0ZpbGUucmVjb3JkaW5nICYmIHRoaXMucmVjb3JkaW5nRmlsZS5yZWNvcmRpbmcuaXRlbWNvZGUpe1xyXG4gICAgICAgIGNpYz10aGlzLnJlY29yZGluZ0ZpbGUucmVjb3JkaW5nLml0ZW1jb2RlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjaWMpIHtcclxuICAgICAgICBsZXQgaXRlbUNudCA9IHRoaXMuYXZhaWxSZWNGaWxlcy5sZW5ndGhcclxuICAgICAgICBmb3IgKGxldCByZmRpID0gMDsgcmZkaSA8IGl0ZW1DbnQ7IHJmZGkrKykge1xyXG4gICAgICAgICAgbGV0IGFyUmYgPSB0aGlzLmF2YWlsUmVjRmlsZXNbcmZkaV1bMF07XHJcbiAgICAgICAgICBpZiAoYXJSZi5yZWNvcmRpbmcpIHtcclxuICAgICAgICAgICAgbGV0IGFyID0gYXJSZi5yZWNvcmRpbmc7XHJcbiAgICAgICAgICAgIGlmIChjaWMgPT09IGFyLml0ZW1jb2RlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJmZGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGxldCBpdGVtQ250ID0gdGhpcy5hdmFpbFJlY0ZpbGVzLmxlbmd0aFxyXG4gICAgICAgIGZvciAobGV0IHJmZGkgPSAwOyByZmRpIDwgaXRlbUNudDsgcmZkaSsrKSB7XHJcbiAgICAgICAgICBsZXQgYXJSZiA9IHRoaXMuYXZhaWxSZWNGaWxlc1tyZmRpXVswXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVjb3JkaW5nRmlsZS51dWlkID09PSBhclJmLnV1aWQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmZkaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUG9zKCl7XHJcbiAgICB0aGlzLnBvc0luTGlzdD10aGlzLnBvc2l0aW9uSW5MaXN0KCk7XHJcbiAgICB0aGlzLnRvVmVyc2lvbkFjdGlvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgaWYodGhpcy5hdmFpbFJlY0ZpbGVzKXtcclxuICAgICAgbGV0IGF2UmZzTGVuPXRoaXMuYXZhaWxSZWNGaWxlcy5sZW5ndGg7XHJcbiAgICAgIGlmKHRoaXMucG9zSW5MaXN0ICE9bnVsbCAmJiBhdlJmc0xlbj50aGlzLnBvc0luTGlzdCkge1xyXG4gICAgICAgIGxldCBhcmZzID0gdGhpcy5hdmFpbFJlY0ZpbGVzW3RoaXMucG9zSW5MaXN0XTtcclxuICAgICAgICBpZiAoYXJmcykge1xyXG4gICAgICAgICAgdGhpcy52ZXJzaW9ucyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XHJcbiAgICAgICAgICBmb3IgKGxldCBhcmYgb2YgYXJmcykge1xyXG4gICAgICAgICAgICBpZihhcmYucmVjb3JkaW5nPy5pdGVtY29kZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudmVyc2lvbnMucHVzaChhcmYudmVyc2lvbilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMudG9WZXJzaW9uQWN0aW9uLmRpc2FibGVkPSh0aGlzLnZlcnNpb25zLmxlbmd0aDwyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnJlY29yZGluZ0ZpbGUpe1xyXG4gICAgICBpZih0aGlzLnJlY29yZGluZ0ZpbGUudmVyc2lvbil7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRpbmdGaWxlVmVyc2lvbj10aGlzLnJlY29yZGluZ0ZpbGUudmVyc2lvbjtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRpbmdGaWxlVmVyc2lvbj0wO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5yZWNvcmRpbmdGaWxlVmVyc2lvbj1udWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVBY3Rpb25zKClcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsb2FkUmVjRmlsZShyZklkOm51bWJlciB8IHN0cmluZykge1xyXG4gICAgdGhpcy5hcD8uc3RvcCgpO1xyXG4gICAgdGhpcy5hdWRpb0NsaXAgPW51bGw7XHJcbiAgICB0aGlzLnJlY29yZGluZ0ZpbGU9bnVsbDtcclxuICAgIHRoaXMucG9zSW5MaXN0PW51bGw7XHJcbiAgICB0aGlzLnVwZGF0ZUFjdGlvbnMoKTtcclxuICAgICAgdGhpcy5hdWRpb0ZldGNoaW5nPXRydWU7XHJcbiAgICAgIHRoaXMucmVjb3JkaW5nRmlsZVNlcnZpY2UuZmV0Y2hTcHJSZWNvcmRpbmdGaWxlKCByZklkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5leHQ6IHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmF1ZGlvRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnN0YXR1cyA9ICdBdWRpbyBmaWxlIGxvYWRlZC4nO1xyXG4gICAgICAgICAgICAgIGxldCBjbGlwID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLnJlY29yZGluZ0ZpbGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5yZWNvcmRpbmdGaWxlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWIgPSB0aGlzLnJlY29yZGluZ0ZpbGUuYXVkaW9EYXRhSG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFiKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNsaXAgPSBuZXcgQXVkaW9DbGlwKGFiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGxldCBlc2Zmc3IgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZWVmZnNyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgbGV0IGVzciA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoY2xpcC5hdWRpb0RhdGFIb2xkZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVzciA9IGFiLnNhbXBsZVJhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVzciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlc2Zmc3IgPSBSZWNvcmRpbmdGaWxlVXRpbC5lZGl0U3RhcnRGcmFtZUZvclNhbXBsZVJhdGUodGhpcy5yZWNvcmRpbmdGaWxlLCBlc3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgZWVmZnNyID0gUmVjb3JkaW5nRmlsZVV0aWwuZWRpdEVuZEZyYW1lRm9yU2FtcGxlUmF0ZSh0aGlzLnJlY29yZGluZ0ZpbGUsIGVzcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWw6IFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlc2Zmc3IgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGVlZmZzciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbCA9IG5ldyBTZWxlY3Rpb24oYWIuc2FtcGxlUmF0ZSwgZXNmZnNyLCBlZWZmc3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9sZXQgY2gwID0gYWIuZ2V0Q2hhbm5lbERhdGEoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmcmFtZUxlbmd0aCA9IGFiLmZyYW1lTGVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWwgPSBuZXcgU2VsZWN0aW9uKGVzciwgZXNmZnNyLCBmcmFtZUxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlZWZmc3IgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2VsID0gbmV3IFNlbGVjdGlvbihlc3IsIDAsIGVlZmZzcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNsaXAuc2VsZWN0aW9uID0gc2VsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5hdWRpb0NsaXAgPSBjbGlwXHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZWRSZWNmaWxlKCk7XHJcblxyXG4gICAgICAgICAgICB9LCBlcnJvcjplcnJvcjEgPT5cclxuICAgICAge1xyXG4gICAgICAgIHRoaXMuYXVkaW9GZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3RhdHVzID0gJ0Vycm9yIGxvYWRpbmcgYXVkaW8gZmlsZSEnO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbG9hZGVkUmVjZmlsZSgpIHtcclxuICAgIGlmKHRoaXMucmVjb3JkaW5nRmlsZSAmJiAhdGhpcy5zZXNzaW9uSWQpIHtcclxuICAgICAgbGV0IHNJZD10aGlzLnJlY29yZGluZ0ZpbGUuc2Vzc2lvblxyXG4gICAgICBpZighc0lkKXtcclxuICAgICAgICBzSWQ9dGhpcy5zZXNzaW9uSWRGcm9tUm91dGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNJZCkge1xyXG4gICAgICAgIHRoaXMubG9hZFNlc3Npb24oc0lkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlUG9zKCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUFjdGlvbnMoKXtcclxuICAgIGxldCBpdGVtQ250Om51bWJlcnxudWxsPW51bGw7XHJcbiAgICBpZih0aGlzLmF2YWlsUmVjRmlsZXMpIHtcclxuICAgICAgaXRlbUNudCA9IHRoaXMuYXZhaWxSZWNGaWxlcy5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpcnN0QWN0aW9uLmRpc2FibGVkPSh0aGlzLnBvc0luTGlzdD09bnVsbCB8fCB0aGlzLnBvc0luTGlzdCA9PSAwKTtcclxuICAgIHRoaXMucHJldkFjdGlvbi5kaXNhYmxlZD0odGhpcy5wb3NJbkxpc3Q9PW51bGwgfHwgdGhpcy5wb3NJbkxpc3QgPT0gMCk7XHJcbiAgICB0aGlzLm5leHRBY3Rpb24uZGlzYWJsZWQ9KHRoaXMucG9zSW5MaXN0PT1udWxsIHx8IGl0ZW1DbnQ9PW51bGwgfHwgdGhpcy5wb3NJbkxpc3QgPj0gaXRlbUNudCAtIDEpO1xyXG4gICAgdGhpcy5sYXN0QWN0aW9uLmRpc2FibGVkPSh0aGlzLnBvc0luTGlzdD09bnVsbCB8fCBpdGVtQ250PT1udWxsIHx8IHRoaXMucG9zSW5MaXN0ID49IGl0ZW1DbnQgLSAxKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFNlc3Npb24oc2Vzc2lvbklkOiBzdHJpbmd8IG51bWJlcikge1xyXG4gICAgLy8gbG9hZCBzZXNzaW9uIGFuZCByZWNvcmRpbmcgZmlsZSBtZXRhZGF0YSBvbmx5IHdoZW4gb24gaW5pdCBhbmQgd2hlbiBzZXNzaW9uIGNoYW5nZXNcclxuICAgIGlmICg8c3RyaW5nPnNlc3Npb25JZCAhPSA8c3RyaW5nPnRoaXMuc2Vzc2lvbklkKSB7XHJcbiAgICAgIC8vIHRlbGwgVUkgdGhhdCB3ZSBhcmUgd29ya2luZy4uLlxyXG4gICAgICB0aGlzLm5hdmlJbmZvTG9hZGluZz10cnVlO1xyXG4gICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNlc3Npb25PYnNlcnZlcig8c3RyaW5nPnNlc3Npb25JZCkuc3Vic2NyaWJlKChzKSA9PiB7XHJcbiAgICAgICAgLy8gcmVjZWl2ZWQgc2Vzc2lvbiBkYXRhXHJcbiAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBzLnNlc3Npb25JZDtcclxuICAgICAgICAvLyBmZXRjaCByZWNvcmRpbmcgZmlsZSBtZXRhIGRhdGEgbGlzdFxyXG4gICAgICAgIHRoaXMucmVjb3JkaW5nU2VydmljZS5zcHJSZWNvcmRpbmdGaWxlTGlzdChzLnByb2plY3QsIHMuc2Vzc2lvbklkKS5zdWJzY3JpYmUoKHJmZHMpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXZhaWxSZWNGaWxlcyA9IG5ldyBBcnJheTxBcnJheTxTcHJSZWNvcmRpbmdGaWxlPj4oKTtcclxuICAgICAgICAgIC8vIGJ1aWxkIHN0cnVjdHVyZSBpbmRleGVkIGJ5IGl0ZW1jb2RlXHJcbiAgICAgICAgICBsZXQgaWNJZHggPSBuZXcgSXRlbWNvZGVJbmRleCgpO1xyXG4gICAgICAgICAgZm9yIChsZXQgcmZkaSA9IDA7IHJmZGkgPCByZmRzLmxlbmd0aDsgcmZkaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCByZmQgPSByZmRzW3JmZGldO1xyXG4gICAgICAgICAgICBpZiAocmZkLmRhdGUpIHtcclxuICAgICAgICAgICAgICAvLyBjb252ZXJ0IGRhdGUgc3RyaW5nIGZvciBmYXN0ZXIgc29ydGluZyBsYXRlclxyXG4gICAgICAgICAgICAgIGxldCByZmRkID0gbmV3IERhdGUocmZkLmRhdGUpO1xyXG4gICAgICAgICAgICAgIHJmZC5fZGF0ZUFzRGF0ZU9iaiA9IHJmZGQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGljID0gcmZkLml0ZW1Db2RlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFpYykge1xyXG4gICAgICAgICAgICAgIGxldCByID0gcmZkLnJlY29yZGluZztcclxuICAgICAgICAgICAgICBpZiAociAmJiByLml0ZW1jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBpYyA9IHIuaXRlbWNvZGU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpYykge1xyXG4gICAgICAgICAgICAgIGxldCBleFJmc0ZvckljID0gaWNJZHhbaWNdO1xyXG4gICAgICAgICAgICAgIGlmIChleFJmc0ZvckljID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIC8vIGl0ZW1jb2RlIG5vdCB5ZXQgc3RvcmVkXHJcbiAgICAgICAgICAgICAgICBsZXQgYXJmZCA9IG5ldyBBcnJheTxTcHJSZWNvcmRpbmdGaWxlPigpO1xyXG4gICAgICAgICAgICAgICAgYXJmZC5wdXNoKHJmZCk7XHJcbiAgICAgICAgICAgICAgICBpY0lkeFtpY10gPSBhcmZkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdmFpbFJlY0ZpbGVzLnB1c2goYXJmZCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlYyBmaWxlIHdpdGggaXRlbWNvZGUgYWxyZWFkeSBleGlzdHMsIGFkZCAocHVzaCkgdGhpcyB2ZXJzaW9uIC4uLlxyXG4gICAgICAgICAgICAgICAgZXhSZnNGb3JJYy5wdXNoKHJmZCk7XHJcbiAgICAgICAgICAgICAgICAvLyAuLi4gYW5kIHNvcnQgbGF0ZXN0IHZlcnNpb24gKGhpZ2hlc3QgdmVyc2lvbiBudW1iZXIpIHRvIGxvd2VzdCBpbmRleFxyXG4gICAgICAgICAgICAgICAgZXhSZnNGb3JJYy5zb3J0KChyZmQxLCByZmQyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiByZmQyLnZlcnNpb24gLSByZmQxLnZlcnNpb247XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IGFyZmQgPSBuZXcgQXJyYXk8U3ByUmVjb3JkaW5nRmlsZT4oKTtcclxuICAgICAgICAgICAgICBhcmZkLnB1c2gocmZkKTtcclxuICAgICAgICAgICAgICB0aGlzLmF2YWlsUmVjRmlsZXMucHVzaChhcmZkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gaGF2ZSB1bnNvcnRlZCBpdGVtY29kZSBpbmRleGVkIHJlY29yZGluZyBmaWxlcyBoZXJlXHJcbiAgICAgICAgICAvLyBzb3J0IHRoZW0gb3JkZXJlZCBieSBkYXRlIG9mIGxhdGVzdCB2ZXJzaW9uIGFzY2VuZGluZ1xyXG4gICAgICAgICAgdGhpcy5hdmFpbFJlY0ZpbGVzLnNvcnQoKHJmczEsIHJmczIpID0+IHtcclxuICAgICAgICAgICAgbGV0IGQxID0gcmZzMlswXS5fZGF0ZUFzRGF0ZU9iajtcclxuICAgICAgICAgICAgbGV0IGQyID0gcmZzMVswXS5fZGF0ZUFzRGF0ZU9iajtcclxuICAgICAgICAgICAgaWYgKGQxID09IG51bGwpIHtcclxuICAgICAgICAgICAgICBpZiAoZDIgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIFNvcnQgZW50cmllcyB3aG9zZSBkYXRlcyBhcmUgbm90IHNldCB0byB0aGUgZW5kXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChkMiA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTb3J0IGVudHJpZXMgd2hvc2UgZGF0ZXMgYXJlIG5vdCBzZXQgdG8gdGhlIGVuZFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgZGF0ZSBieSB0aW1lIGluIG1pbGxpc2Vjb25kcyB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGQyLmdldFRpbWUoKSAtIGQxLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZm9yKGxldCBhdlJmIG9mIHRoaXMuYXZhaWxSZWNGaWxlcyl7XHJcbiAgICAgICAgICAgICAgaWYoYXZSZlswXSAmJiBhdlJmWzBdLnJlY29yZGluZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9zID0gYXZSZlswXS5yZWNvcmRpbmcuaXRlbWNvZGUgKyAnOiB2ZXJzaW9uczogJztcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGF2UmZWIG9mIGF2UmYpIHtcclxuICAgICAgICAgICAgICAgICAgb3MgKz0gYXZSZlYudmVyc2lvbiArICcvJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1Zyhvcyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy51cGRhdGVQb3MoKVxyXG4gICAgICAgICAgdGhpcy5uYXZpSW5mb0xvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
424
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWZpbGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdmaWxlL3JlY29yZGluZy1maWxlLXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFBO0FBUXRCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLE1BQU0sRUFBYyxNQUFNLHdCQUF3QixDQUFDO0FBSTNELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7O0FBR2pELE1BQU0sT0FBTyxhQUFhO0NBRXpCO0FBaURELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxrQkFBa0I7SUF3QmhFLFlBQXNCLG9CQUEwQyxFQUFZLGdCQUFrQyxFQUFZLGNBQThCLEVBQVksTUFBYSxFQUFXLEtBQXFCLEVBQVksR0FBc0IsRUFBWSxJQUFnQixFQUFZLE1BQWlCO1FBQzFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBREgseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFZLHFCQUFnQixHQUFo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LENBQUMsQ0FBQyxDQUFDO1FBQ0gsQ0FBQztJQUNMLENBQUM7OEdBOVhVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLGtHQWExQixzQkFBc0IsdUVBeER2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7OzJGQTBCVSwwQkFBMEI7a0JBL0N0QyxTQUFTOytCQUVFLHdCQUF3QixZQUV4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7d1JBd0NPLEVBQUU7c0JBRFQsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgT25Jbml0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5cclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zLCBSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcblxyXG5pbXBvcnQge1JlY29yZGluZ0ZpbGVTZXJ2aWNlfSBmcm9tIFwiLi9yZWNvcmRpbmdmaWxlLXNlcnZpY2VcIjtcclxuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtBdWRpb0Rpc3BsYXlQbGF5ZXJ9IGZyb20gXCIuLi8uLi8uLi9hdWRpby9hdWRpb19wbGF5ZXJcIjtcclxuXHJcbmltcG9ydCB7QXVkaW9EaXNwbGF5U2Nyb2xsUGFuZX0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL3VpL2F1ZGlvX2Rpc3BsYXlfc2Nyb2xsX3BhbmVcIjtcclxuaW1wb3J0IHtBdWRpb0NsaXB9IGZyb20gXCIuLi8uLi8uLi9hdWRpby9wZXJzaXN0b3JcIjtcclxuaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuLi8uLi8uLi9hdWRpby9wZXJzaXN0b3JcIjtcclxuXHJcbmltcG9ydCB7QWN0aW9uLCBBY3Rpb25FdmVudH0gZnJvbSBcIi4uLy4uLy4uL2FjdGlvbi9hY3Rpb25cIjtcclxuaW1wb3J0IHtTZXNzaW9uU2VydmljZX0gZnJvbSBcIi4uL3Nlc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQge1JlY29yZGluZ1NlcnZpY2V9IGZyb20gXCIuLi8uLi9yZWNvcmRpbmdzL3JlY29yZGluZ3Muc2VydmljZVwiO1xyXG5pbXBvcnQge1NwclJlY29yZGluZ0ZpbGV9IGZyb20gXCIuLi8uLi9yZWNvcmRpbmdcIjtcclxuaW1wb3J0IHtSZWNvcmRpbmdGaWxlVXRpbH0gZnJvbSBcIi4vcmVjb3JkaW5nLWZpbGVcIjtcclxuaW1wb3J0IHtNZXNzYWdlRGlhbG9nfSBmcm9tIFwiLi4vLi4vLi4vdWkvbWVzc2FnZV9kaWFsb2dcIjtcclxuaW1wb3J0IHtFcnJvckhlbHBlcn0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3V0aWxzXCI7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEl0ZW1jb2RlSW5kZXh7XHJcbiAgW2l0ZW1jb2RlOiBzdHJpbmddOiBBcnJheTxTcHJSZWNvcmRpbmdGaWxlPjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLWF1ZGlvZGlzcGxheXBsYXllcicsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcblxyXG4gICAgPGF1ZGlvLWRpc3BsYXktc2Nyb2xsLXBhbmUgI2F1ZGlvRGlzcGxheVNjcm9sbFBhbmU+PC9hdWRpby1kaXNwbGF5LXNjcm9sbC1wYW5lPlxyXG4gICAgPGRpdiBjbGFzcz1cImN0cmx2aWV3XCI+XHJcbiAgICAgIDxhcHAtcmVjb3JkaW5nLWZpbGUtbWV0YSBbc2Vzc2lvbklkXT1cInNlc3Npb25JZFwiIFtyZWNvcmRpbmdGaWxlXT1cInJlY29yZGluZ0ZpbGVcIiBbc3RhdGVMb2FkaW5nXT1cImF1ZGlvRmV0Y2hpbmdcIj48L2FwcC1yZWNvcmRpbmctZmlsZS1tZXRhPlxyXG5cclxuICAgIDxhdWRpby1kaXNwbGF5LWNvbnRyb2wgW2F1ZGlvQ2xpcF09XCJhdWRpb0NsaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGF5U3RhcnRBY3Rpb25dPVwicGxheVN0YXJ0QWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVNlbGVjdGlvbkFjdGlvbl09XCJwbGF5U2VsZWN0aW9uQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0b3BBY3Rpb25dPVwicGxheVN0b3BBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uXT1cImFwPy5hdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbem9vbUluQWN0aW9uXT1cInpvb21JbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21PdXRBY3Rpb25dPVwiem9vbU91dEFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21TZWxlY3RlZEFjdGlvbl09XCJ6b29tU2VsZWN0ZWRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbem9vbUZpdFRvUGFuZWxBY3Rpb25dPVwiem9vbUZpdFRvUGFuZWxBY3Rpb25cIj48L2F1ZGlvLWRpc3BsYXktY29udHJvbD5cclxuICAgICAgPGFwcC1yZWNvcmRpbmctZmlsZS1uYXZpIFtpdGVtc109XCJhdmFpbFJlY0ZpbGVzPy5sZW5ndGhcIiBbaXRlbVBvc109XCJwb3NJbkxpc3RcIiBbdmVyc2lvbl09XCJyZWNvcmRpbmdGaWxlVmVyc2lvblwiIFt2ZXJzaW9uc109XCJ2ZXJzaW9uc1wiIFtmaXJzdEFjdGlvbl09XCJmaXJzdEFjdGlvblwiIFtwcmV2QWN0aW9uXT1cInByZXZBY3Rpb25cIiBbbmV4dEFjdGlvbl09XCJuZXh0QWN0aW9uXCIgW2xhc3RBY3Rpb25dPVwibGFzdEFjdGlvblwiIFtzZWxlY3RWZXJzaW9uXT1cInRvVmVyc2lvbkFjdGlvblwiIFtuYXZpSW5mb0xvYWRpbmddPVwibmF2aUluZm9Mb2FkaW5nXCI+PC9hcHAtcmVjb3JkaW5nLWZpbGUtbmF2aT5cclxuICAgICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgIGA6aG9zdCB7XHJcbiAgICAgICAgICAgICAgIGZsZXg6IDI7XHJcbiAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6MDtcclxuICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgICAgICAgIHotaW5kZXg6IDU7XHJcbiAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgICAgfWAsYFxyXG4gICAgICAgIC5jdHJsdmlld3tcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cclxuICAgICAgICB9XHJcbiAgICBgLGBcclxuICAgICAgYXVkaW8tZGlzcGxheS1jb250cm9se1xyXG5cclxuICAgICAgICBmbGV4OiAzO1xyXG4gICAgICB9XHJcbiAgICBgXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlY29yZGluZ0ZpbGVWaWV3Q29tcG9uZW50IGV4dGVuZHMgQXVkaW9EaXNwbGF5UGxheWVyIGltcGxlbWVudHMgT25Jbml0LEFmdGVyVmlld0luaXQge1xyXG5cclxuICBzZXNzaW9uSWQ6IHN0cmluZyB8IG51bWJlciB8IG51bGw9IG51bGw7XHJcbiAgc2Vzc2lvbklkRnJvbVJvdXRlOnN0cmluZ3xudWxsPW51bGw7XHJcblxyXG4gIGF2YWlsUmVjRmlsZXM6IEFycmF5PEFycmF5PFNwclJlY29yZGluZ0ZpbGU+PnxudWxsPW51bGw7XHJcbiAgdmVyc2lvbnM6IEFycmF5PG51bWJlcj58bnVsbD1udWxsO1xyXG5cclxuICByZWNvcmRpbmdGaWxlOiBTcHJSZWNvcmRpbmdGaWxlfG51bGw9bnVsbDtcclxuICByZWNvcmRpbmdGaWxlVmVyc2lvbjpudW1iZXJ8bnVsbD1udWxsO1xyXG4gIHByaXZhdGUgcm91dGVkQnlRdWVyeVBhcmFtPWZhbHNlO1xyXG4gIHBvc0luTGlzdDogbnVtYmVyfG51bGw9bnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZChBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lKVxyXG4gIHByaXZhdGUgYWMhOiBBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lO1xyXG5cclxuICBmaXJzdEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIHByZXZBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBuZXh0QWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgbGFzdEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIHRvVmVyc2lvbkFjdGlvbjogQWN0aW9uPG51bWJlcj47XHJcbiAgYXVkaW9GZXRjaGluZzpib29sZWFuO1xyXG4gIG5hdmlJbmZvTG9hZGluZzpib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVjb3JkaW5nRmlsZVNlcnZpY2U6IFJlY29yZGluZ0ZpbGVTZXJ2aWNlLCBwcm90ZWN0ZWQgcmVjb3JkaW5nU2VydmljZTogUmVjb3JkaW5nU2VydmljZSwgcHJvdGVjdGVkIHNlc3Npb25TZXJ2aWNlOiBTZXNzaW9uU2VydmljZSwgcHJvdGVjdGVkIHJvdXRlcjpSb3V0ZXIscHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJvdGVjdGVkIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByb3RlY3RlZCBlUmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuICAgIHN1cGVyKHJvdXRlLCByZWYsIGVSZWYpXHJcbiAgICB0aGlzLnBhcmVudEUgPSB0aGlzLmVSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAvLyBUT0RPIFNob3VsZCBiZSBpbml0aWFsaXplZCB3aXRoIGZhbHNlLCBidXQgdGhpcyBjYXVzZXMgaW4gZGVidWcgbW9kZTpcclxuICAgIC8vIEVSUk9SIEVycm9yOiBORzAxMDA6IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuIFByZXZpb3VzIHZhbHVlOiAnZmFsc2UnLiBDdXJyZW50IHZhbHVlOiAndHJ1ZScuIEZpbmQgbW9yZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vZXJyb3JzL05HMDEwMFxyXG4gICAgdGhpcy5hdWRpb0ZldGNoaW5nPXRydWU7XHJcblxyXG4gICAgdGhpcy5uYXZpSW5mb0xvYWRpbmc9ZmFsc2U7XHJcbiAgICB0aGlzLmZpcnN0QWN0aW9uID0gbmV3IEFjdGlvbjx2b2lkPignRmlyc3QnKTtcclxuICAgIHRoaXMuZmlyc3RBY3Rpb24ub25BY3Rpb249ICgpPT57XHJcbiAgICAgIHRoaXMucG9zSW5MaXN0PTA7XHJcbiAgICAgIHRoaXMubmF2aWdhdGVUb1JlY29yZGluZ0ZpbGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMucHJldkFjdGlvbiA9IG5ldyBBY3Rpb248dm9pZD4oJ1ByZXZpb3VzJyk7XHJcbiAgICB0aGlzLnByZXZBY3Rpb24ub25BY3Rpb249ICgpPT50aGlzLnByZXZGaWxlKCk7XHJcbiAgICB0aGlzLm5leHRBY3Rpb24gPSBuZXcgQWN0aW9uPHZvaWQ+KCdOZXh0Jyk7XHJcbiAgICB0aGlzLm5leHRBY3Rpb24ub25BY3Rpb249ICgpPT50aGlzLm5leHRGaWxlKCk7XHJcbiAgICB0aGlzLmxhc3RBY3Rpb24gPSBuZXcgQWN0aW9uPHZvaWQ+KCdMYXN0Jyk7XHJcbiAgICB0aGlzLmxhc3RBY3Rpb24ub25BY3Rpb249ICgpPT57XHJcbiAgICAgIGlmKHRoaXMuYXZhaWxSZWNGaWxlcykge1xyXG4gICAgICAgIHRoaXMucG9zSW5MaXN0ID0gdGhpcy5hdmFpbFJlY0ZpbGVzLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvUmVjb3JkaW5nRmlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b1ZlcnNpb25BY3Rpb249bmV3IEFjdGlvbjxudW1iZXI+KCdUbyB2ZXJzaW9uJyk7XHJcbiAgICB0aGlzLnRvVmVyc2lvbkFjdGlvbi5vbkFjdGlvbj0gKGFlKT0+dGhpcy50b1ZlcnNpb24oYWUpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KClcclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IFBhcmFtcykgPT4ge1xyXG4gICAgICBsZXQgcmZJZFAgPSBwYXJhbXNbJ3JlY29yZGluZ0ZpbGVJZCddO1xyXG4gICAgICBsZXQgc0lkUCA9IHBhcmFtc1snc2Vzc2lvbklkJ107XHJcbiAgICAgIGlmIChzSWRQKSB7XHJcbiAgICAgICB0aGlzLnNlc3Npb25JZEZyb21Sb3V0ZT1zSWRQO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZklkUCkge1xyXG4gICAgICAgIHRoaXMucm91dGVkQnlRdWVyeVBhcmFtPXRydWU7XHJcbiAgICAgICAgdGhpcy5sb2FkUmVjRmlsZShyZklkUCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IFBhcmFtcykgPT4ge1xyXG4gICAgICBsZXQgcmZJZFAgPSBwYXJhbXNbJ3JlY29yZGluZ0ZpbGVJZCddO1xyXG4gICAgICBsZXQgc0lkUCA9IHBhcmFtc1snc2Vzc2lvbklkJ107XHJcbiAgICAgIGlmIChzSWRQKSB7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uSWRGcm9tUm91dGU9c0lkUDtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmZJZFApIHtcclxuICAgICAgICB0aGlzLnJvdXRlZEJ5UXVlcnlQYXJhbT1mYWxzZTtcclxuICAgICAgICB0aGlzLmxvYWRSZWNGaWxlKHJmSWRQKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBpZih0aGlzLnNlc3Npb25JZCl7XHJcbiAgICAvLyAgICAgdGhpcy5sb2FkU2Vzc2lvbih0aGlzLnNlc3Npb25JZCk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvSWQocmZJZDpudW1iZXJ8IHN0cmluZyl7XHJcblxyXG4gICAgaWYodGhpcy5yb3V0ZWRCeVF1ZXJ5UGFyYW0pe1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge3JlbGF0aXZlVG86IHRoaXMucm91dGUsIHF1ZXJ5UGFyYW1zOnsncmVjb3JkaW5nRmlsZUlkJzpyZklkfX0pXHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJyArIHJmSWRdLCB7cmVsYXRpdmVUbzogdGhpcy5yb3V0ZX0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvUmVjb3JkaW5nRmlsZSgpe1xyXG4gICAgaWYodGhpcy5wb3NJbkxpc3QhPW51bGwgJiYgdGhpcy5hdmFpbFJlY0ZpbGVzKSB7XHJcbiAgICAgIGxldCBsYXRlc3ROZXh0UmYgPSB0aGlzLmF2YWlsUmVjRmlsZXNbdGhpcy5wb3NJbkxpc3RdWzBdO1xyXG4gICAgICBsZXQgbG5SZklkID0gbGF0ZXN0TmV4dFJmLnJlY29yZGluZ0ZpbGVJZDtcclxuICAgICAgaWYobG5SZklkKSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvSWQobG5SZklkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9WZXJzaW9uKGFlOiBBY3Rpb25FdmVudDxudW1iZXI+KSB7XHJcbiAgICBsZXQgdG9SZklkID0gbnVsbDtcclxuICAgIGNvbnN0IHZlcnNpb24gPSBhZS52YWx1ZTtcclxuICAgIGlmKHRoaXMucG9zSW5MaXN0IT1udWxsICYmIHRoaXMuYXZhaWxSZWNGaWxlcykge1xyXG4gICAgICBsZXQgY1JmcyA9IHRoaXMuYXZhaWxSZWNGaWxlc1t0aGlzLnBvc0luTGlzdF07XHJcbiAgICAgIC8vbGV0IGF2YWlsVmVyc2lvbkNudCA9IGNSZnMubGVuZ3RoO1xyXG4gICAgICBmb3IgKGxldCBjUmYgb2YgY1Jmcykge1xyXG4gICAgICAgIGlmKGNSZi52ZXJzaW9uICE9bnVsbCkge1xyXG4gICAgICAgICAgaWYgKGNSZi52ZXJzaW9uID09PSB2ZXJzaW9uKSB7XHJcbiAgICAgICAgICAgIHRvUmZJZCA9IGNSZi5yZWNvcmRpbmdGaWxlSWQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRvUmZJZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGVUb0lkKHRvUmZJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJldkZpbGUoKSB7XHJcbiAgICBpZih0aGlzLnBvc0luTGlzdCE9bnVsbCkge1xyXG4gICAgICB0aGlzLnBvc0luTGlzdC0tO1xyXG4gICAgfVxyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvUmVjb3JkaW5nRmlsZSgpXHJcbiAgfVxyXG4gIG5leHRGaWxlKCkge1xyXG4gICAgaWYodGhpcy5wb3NJbkxpc3QhPW51bGwpIHtcclxuICAgICAgdGhpcy5wb3NJbkxpc3QrKztcclxuICAgIH1cclxuICAgIHRoaXMubmF2aWdhdGVUb1JlY29yZGluZ0ZpbGUoKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3NpdGlvbkluTGlzdCgpOm51bWJlciB8IG51bGx7XHJcbiAgICBpZiAodGhpcy5hdmFpbFJlY0ZpbGVzICYmIHRoaXMucmVjb3JkaW5nRmlsZSkge1xyXG4gICAgICBsZXQgY2ljPXRoaXMucmVjb3JkaW5nRmlsZS5pdGVtQ29kZTtcclxuICAgICAgaWYoIWNpYyAmJiB0aGlzLnJlY29yZGluZ0ZpbGUucmVjb3JkaW5nICYmIHRoaXMucmVjb3JkaW5nRmlsZS5yZWNvcmRpbmcuaXRlbWNvZGUpe1xyXG4gICAgICAgIGNpYz10aGlzLnJlY29yZGluZ0ZpbGUucmVjb3JkaW5nLml0ZW1jb2RlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjaWMpIHtcclxuICAgICAgICBsZXQgaXRlbUNudCA9IHRoaXMuYXZhaWxSZWNGaWxlcy5sZW5ndGhcclxuICAgICAgICBmb3IgKGxldCByZmRpID0gMDsgcmZkaSA8IGl0ZW1DbnQ7IHJmZGkrKykge1xyXG4gICAgICAgICAgbGV0IGFyUmYgPSB0aGlzLmF2YWlsUmVjRmlsZXNbcmZkaV1bMF07XHJcbiAgICAgICAgICBpZiAoYXJSZi5yZWNvcmRpbmcpIHtcclxuICAgICAgICAgICAgbGV0IGFyID0gYXJSZi5yZWNvcmRpbmc7XHJcbiAgICAgICAgICAgIGlmIChjaWMgPT09IGFyLml0ZW1jb2RlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJmZGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGxldCBpdGVtQ250ID0gdGhpcy5hdmFpbFJlY0ZpbGVzLmxlbmd0aFxyXG4gICAgICAgIGZvciAobGV0IHJmZGkgPSAwOyByZmRpIDwgaXRlbUNudDsgcmZkaSsrKSB7XHJcbiAgICAgICAgICBsZXQgYXJSZiA9IHRoaXMuYXZhaWxSZWNGaWxlc1tyZmRpXVswXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVjb3JkaW5nRmlsZS51dWlkID09PSBhclJmLnV1aWQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmZkaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUG9zKCl7XHJcbiAgICB0aGlzLnBvc0luTGlzdD10aGlzLnBvc2l0aW9uSW5MaXN0KCk7XHJcbiAgICB0aGlzLnRvVmVyc2lvbkFjdGlvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgaWYodGhpcy5hdmFpbFJlY0ZpbGVzKXtcclxuICAgICAgbGV0IGF2UmZzTGVuPXRoaXMuYXZhaWxSZWNGaWxlcy5sZW5ndGg7XHJcbiAgICAgIGlmKHRoaXMucG9zSW5MaXN0ICE9bnVsbCAmJiBhdlJmc0xlbj50aGlzLnBvc0luTGlzdCkge1xyXG4gICAgICAgIGxldCBhcmZzID0gdGhpcy5hdmFpbFJlY0ZpbGVzW3RoaXMucG9zSW5MaXN0XTtcclxuICAgICAgICBpZiAoYXJmcykge1xyXG4gICAgICAgICAgdGhpcy52ZXJzaW9ucyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XHJcbiAgICAgICAgICBmb3IgKGxldCBhcmYgb2YgYXJmcykge1xyXG4gICAgICAgICAgICBpZihhcmYucmVjb3JkaW5nPy5pdGVtY29kZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudmVyc2lvbnMucHVzaChhcmYudmVyc2lvbilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMudG9WZXJzaW9uQWN0aW9uLmRpc2FibGVkPSh0aGlzLnZlcnNpb25zLmxlbmd0aDwyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnJlY29yZGluZ0ZpbGUpe1xyXG4gICAgICBpZih0aGlzLnJlY29yZGluZ0ZpbGUudmVyc2lvbil7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRpbmdGaWxlVmVyc2lvbj10aGlzLnJlY29yZGluZ0ZpbGUudmVyc2lvbjtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRpbmdGaWxlVmVyc2lvbj0wO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5yZWNvcmRpbmdGaWxlVmVyc2lvbj1udWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVBY3Rpb25zKClcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsb2FkUmVjRmlsZShyZklkOm51bWJlciB8IHN0cmluZykge1xyXG4gICAgdGhpcy5hcD8uc3RvcCgpO1xyXG4gICAgdGhpcy5hdWRpb0NsaXAgPW51bGw7XHJcbiAgICB0aGlzLnJlY29yZGluZ0ZpbGU9bnVsbDtcclxuICAgIHRoaXMucG9zSW5MaXN0PW51bGw7XHJcbiAgICB0aGlzLnVwZGF0ZUFjdGlvbnMoKTtcclxuICAgICAgdGhpcy5hdWRpb0ZldGNoaW5nPXRydWU7XHJcbiAgICAgIHRoaXMucmVjb3JkaW5nRmlsZVNlcnZpY2UuZmV0Y2hTcHJSZWNvcmRpbmdGaWxlKCByZklkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5leHQ6IHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmF1ZGlvRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnN0YXR1cyA9ICdBdWRpbyBmaWxlIGxvYWRlZC4nO1xyXG4gICAgICAgICAgICAgIGxldCBjbGlwID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLnJlY29yZGluZ0ZpbGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5yZWNvcmRpbmdGaWxlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWIgPSB0aGlzLnJlY29yZGluZ0ZpbGUuYXVkaW9EYXRhSG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFiKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNsaXAgPSBuZXcgQXVkaW9DbGlwKGFiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGxldCBlc2Zmc3IgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZWVmZnNyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgbGV0IGVzciA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoY2xpcC5hdWRpb0RhdGFIb2xkZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVzciA9IGFiLnNhbXBsZVJhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVzciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlc2Zmc3IgPSBSZWNvcmRpbmdGaWxlVXRpbC5lZGl0U3RhcnRGcmFtZUZvclNhbXBsZVJhdGUodGhpcy5yZWNvcmRpbmdGaWxlLCBlc3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgZWVmZnNyID0gUmVjb3JkaW5nRmlsZVV0aWwuZWRpdEVuZEZyYW1lRm9yU2FtcGxlUmF0ZSh0aGlzLnJlY29yZGluZ0ZpbGUsIGVzcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWw6IFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlc2Zmc3IgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGVlZmZzciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbCA9IG5ldyBTZWxlY3Rpb24oYWIuc2FtcGxlUmF0ZSwgZXNmZnNyLCBlZWZmc3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9sZXQgY2gwID0gYWIuZ2V0Q2hhbm5lbERhdGEoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmcmFtZUxlbmd0aCA9IGFiLmZyYW1lTGVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWwgPSBuZXcgU2VsZWN0aW9uKGVzciwgZXNmZnNyLCBmcmFtZUxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlZWZmc3IgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2VsID0gbmV3IFNlbGVjdGlvbihlc3IsIDAsIGVlZmZzcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNsaXAuc2VsZWN0aW9uID0gc2VsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5hdWRpb0NsaXAgPSBjbGlwXHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZWRSZWNmaWxlKCk7XHJcblxyXG4gICAgICAgICAgICB9LCBlcnJvcjooZXJyKSA9PlxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5hdWRpb0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSAnRXJyb3IgbG9hZGluZyBhdWRpbyBmaWxlJztcclxuICAgICAgICBjb25zdCBlcnJNc2c9RXJyb3JIZWxwZXIubWVzc2FnZSgnQ291bGQgbm90IGxvYWQgYXVkaW8gZmlsZScsZXJyKTtcclxuICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE1lc3NhZ2VEaWFsb2csIHtcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuc3RhdHVzLFxyXG4gICAgICAgICAgICBtc2c6IGVyck1zZyxcclxuICAgICAgICAgICAgYWR2aWNlOiBcIlBsZWFzZSBjaGVjayBuZXR3b3JrIGNvbm5lY3Rpb24gYW5kIHNlcnZlciBzdGF0ZSBvciBjb250YWN0IGFwcGxpY2F0aW9uIGFkbWluaXN0cmF0b3IuXCJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbG9hZGVkUmVjZmlsZSgpIHtcclxuICAgIGlmKHRoaXMucmVjb3JkaW5nRmlsZSAmJiAhdGhpcy5zZXNzaW9uSWQpIHtcclxuICAgICAgbGV0IHNJZD10aGlzLnJlY29yZGluZ0ZpbGUuc2Vzc2lvblxyXG4gICAgICBpZighc0lkKXtcclxuICAgICAgICBzSWQ9dGhpcy5zZXNzaW9uSWRGcm9tUm91dGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNJZCkge1xyXG4gICAgICAgIHRoaXMubG9hZFNlc3Npb24oc0lkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlUG9zKCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUFjdGlvbnMoKXtcclxuICAgIGxldCBpdGVtQ250Om51bWJlcnxudWxsPW51bGw7XHJcbiAgICBpZih0aGlzLmF2YWlsUmVjRmlsZXMpIHtcclxuICAgICAgaXRlbUNudCA9IHRoaXMuYXZhaWxSZWNGaWxlcy5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpcnN0QWN0aW9uLmRpc2FibGVkPSh0aGlzLnBvc0luTGlzdD09bnVsbCB8fCB0aGlzLnBvc0luTGlzdCA9PSAwKTtcclxuICAgIHRoaXMucHJldkFjdGlvbi5kaXNhYmxlZD0odGhpcy5wb3NJbkxpc3Q9PW51bGwgfHwgdGhpcy5wb3NJbkxpc3QgPT0gMCk7XHJcbiAgICB0aGlzLm5leHRBY3Rpb24uZGlzYWJsZWQ9KHRoaXMucG9zSW5MaXN0PT1udWxsIHx8IGl0ZW1DbnQ9PW51bGwgfHwgdGhpcy5wb3NJbkxpc3QgPj0gaXRlbUNudCAtIDEpO1xyXG4gICAgdGhpcy5sYXN0QWN0aW9uLmRpc2FibGVkPSh0aGlzLnBvc0luTGlzdD09bnVsbCB8fCBpdGVtQ250PT1udWxsIHx8IHRoaXMucG9zSW5MaXN0ID49IGl0ZW1DbnQgLSAxKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFNlc3Npb24oc2Vzc2lvbklkOiBzdHJpbmd8IG51bWJlcikge1xyXG4gICAgLy8gbG9hZCBzZXNzaW9uIGFuZCByZWNvcmRpbmcgZmlsZSBtZXRhZGF0YSBvbmx5IHdoZW4gb24gaW5pdCBhbmQgd2hlbiBzZXNzaW9uIGNoYW5nZXNcclxuICAgIGlmICg8c3RyaW5nPnNlc3Npb25JZCAhPSA8c3RyaW5nPnRoaXMuc2Vzc2lvbklkKSB7XHJcbiAgICAgIC8vIHRlbGwgVUkgdGhhdCB3ZSBhcmUgd29ya2luZy4uLlxyXG4gICAgICB0aGlzLm5hdmlJbmZvTG9hZGluZz10cnVlO1xyXG4gICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNlc3Npb25PYnNlcnZlcig8c3RyaW5nPnNlc3Npb25JZCkuc3Vic2NyaWJlKChzKSA9PiB7XHJcbiAgICAgICAgLy8gcmVjZWl2ZWQgc2Vzc2lvbiBkYXRhXHJcbiAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBzLnNlc3Npb25JZDtcclxuICAgICAgICAvLyBmZXRjaCByZWNvcmRpbmcgZmlsZSBtZXRhIGRhdGEgbGlzdFxyXG4gICAgICAgIHRoaXMucmVjb3JkaW5nU2VydmljZS5zcHJSZWNvcmRpbmdGaWxlTGlzdChzLnByb2plY3QsIHMuc2Vzc2lvbklkKS5zdWJzY3JpYmUoKHJmZHMpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXZhaWxSZWNGaWxlcyA9IG5ldyBBcnJheTxBcnJheTxTcHJSZWNvcmRpbmdGaWxlPj4oKTtcclxuICAgICAgICAgIC8vIGJ1aWxkIHN0cnVjdHVyZSBpbmRleGVkIGJ5IGl0ZW1jb2RlXHJcbiAgICAgICAgICBsZXQgaWNJZHggPSBuZXcgSXRlbWNvZGVJbmRleCgpO1xyXG4gICAgICAgICAgZm9yIChsZXQgcmZkaSA9IDA7IHJmZGkgPCByZmRzLmxlbmd0aDsgcmZkaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCByZmQgPSByZmRzW3JmZGldO1xyXG4gICAgICAgICAgICBpZiAocmZkLmRhdGUpIHtcclxuICAgICAgICAgICAgICAvLyBjb252ZXJ0IGRhdGUgc3RyaW5nIGZvciBmYXN0ZXIgc29ydGluZyBsYXRlclxyXG4gICAgICAgICAgICAgIHJmZC5fZGF0ZUFzRGF0ZU9iaiA9IG5ldyBEYXRlKHJmZC5kYXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgaWMgPSByZmQuaXRlbUNvZGU7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWljKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHIgPSByZmQucmVjb3JkaW5nO1xyXG4gICAgICAgICAgICAgIGlmIChyICYmIHIuaXRlbWNvZGUpIHtcclxuICAgICAgICAgICAgICAgIGljID0gci5pdGVtY29kZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGljKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGV4UmZzRm9ySWMgPSBpY0lkeFtpY107XHJcbiAgICAgICAgICAgICAgaWYgKGV4UmZzRm9ySWMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaXRlbWNvZGUgbm90IHlldCBzdG9yZWRcclxuICAgICAgICAgICAgICAgIGxldCBhcmZkID0gbmV3IEFycmF5PFNwclJlY29yZGluZ0ZpbGU+KCk7XHJcbiAgICAgICAgICAgICAgICBhcmZkLnB1c2gocmZkKTtcclxuICAgICAgICAgICAgICAgIGljSWR4W2ljXSA9IGFyZmQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF2YWlsUmVjRmlsZXMucHVzaChhcmZkKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gcmVjIGZpbGUgd2l0aCBpdGVtY29kZSBhbHJlYWR5IGV4aXN0cywgYWRkIChwdXNoKSB0aGlzIHZlcnNpb24gLi4uXHJcbiAgICAgICAgICAgICAgICBleFJmc0ZvckljLnB1c2gocmZkKTtcclxuICAgICAgICAgICAgICAgIC8vIC4uLiBhbmQgc29ydCBsYXRlc3QgdmVyc2lvbiAoaGlnaGVzdCB2ZXJzaW9uIG51bWJlcikgdG8gbG93ZXN0IGluZGV4XHJcbiAgICAgICAgICAgICAgICBleFJmc0ZvckljLnNvcnQoKHJmZDEsIHJmZDIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJmZDIudmVyc2lvbiAtIHJmZDEudmVyc2lvbjtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBsZXQgYXJmZCA9IG5ldyBBcnJheTxTcHJSZWNvcmRpbmdGaWxlPigpO1xyXG4gICAgICAgICAgICAgIGFyZmQucHVzaChyZmQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXZhaWxSZWNGaWxlcy5wdXNoKGFyZmQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBoYXZlIHVuc29ydGVkIGl0ZW1jb2RlIGluZGV4ZWQgcmVjb3JkaW5nIGZpbGVzIGhlcmVcclxuICAgICAgICAgIC8vIHNvcnQgdGhlbSBvcmRlcmVkIGJ5IGRhdGUgb2YgbGF0ZXN0IHZlcnNpb24gYXNjZW5kaW5nXHJcbiAgICAgICAgICB0aGlzLmF2YWlsUmVjRmlsZXMuc29ydCgocmZzMSwgcmZzMikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZDEgPSByZnMyWzBdLl9kYXRlQXNEYXRlT2JqO1xyXG4gICAgICAgICAgICBsZXQgZDIgPSByZnMxWzBdLl9kYXRlQXNEYXRlT2JqO1xyXG4gICAgICAgICAgICBpZiAoZDEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGlmIChkMiA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gU29ydCBlbnRyaWVzIHdob3NlIGRhdGVzIGFyZSBub3Qgc2V0IHRvIHRoZSBlbmRcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGQyID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIC8vIFNvcnQgZW50cmllcyB3aG9zZSBkYXRlcyBhcmUgbm90IHNldCB0byB0aGUgZW5kXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gQ29tcGFyZSBkYXRlIGJ5IHRpbWUgaW4gbWlsbGlzZWNvbmRzIHZhbHVlXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZDIuZ2V0VGltZSgpIC0gZDEuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBmb3IobGV0IGF2UmYgb2YgdGhpcy5hdmFpbFJlY0ZpbGVzKXtcclxuICAgICAgICAgICAgICBpZihhdlJmWzBdICYmIGF2UmZbMF0ucmVjb3JkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb3MgPSBhdlJmWzBdLnJlY29yZGluZy5pdGVtY29kZSArICc6IHZlcnNpb25zOiAnO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYXZSZlYgb2YgYXZSZikge1xyXG4gICAgICAgICAgICAgICAgICBvcyArPSBhdlJmVi52ZXJzaW9uICsgJy8nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKG9zKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVBvcygpXHJcbiAgICAgICAgICB0aGlzLm5hdmlJbmZvTG9hZGluZz1mYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
- export const VERSION = '3.10.11';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByLm1vZHVsZS52ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3Nwci5tb2R1bGUudmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUMsU0FBUyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZFUlNJT049JzMuMTAuMTEnIl19
1
+ export const VERSION = '3.10.12';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByLm1vZHVsZS52ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3Nwci5tb2R1bGUudmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUMsU0FBUyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZFUlNJT049JzMuMTAuMTInIl19
@@ -102,4 +102,31 @@ export class WorkerHelper {
102
102
  return workerBlobUrl;
103
103
  }
104
104
  }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0UsTUFBTSxPQUFPLElBQUk7SUFFZixNQUFNLENBQUMsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRztZQUNwRSxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFUyxNQUFNLENBQUMsRUFBRTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO2FBQzdDLFFBQVEsQ0FBQyxFQUFFLENBQUM7YUFDWixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUNBO0FBRUQsTUFBTSxPQUFPLFFBQVE7YUFDSixpQkFBWSxHQUFDLENBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2FBQy9FLHVCQUFrQixHQUFRLElBQUksQ0FBQzthQUMvQiwyQkFBc0IsR0FBUSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRW5GLE1BQU0sQ0FBQyx3QkFBd0Is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QUcsWUFBWSxHQUFHLE1BQU0sQ0FBQTtRQUNwQyxJQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxDQUFDLENBQUE7WUFDaEUsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM1QixDQUFDO1FBQ0Qsd0JBQXdCO1FBQ3hCLElBQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUMsQ0FBQyxDQUFDO1FBRW5ELElBQUksYUFBYSxHQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuICBleHBvcnQgY2xhc3MgVVVJRCB7XHJcblxyXG4gICAgc3RhdGljIGdlbmVyYXRlKCk6c3RyaW5nIHtcclxuICAgIHJldHVybiBVVUlELnM0KCkgKyBVVUlELnM0KCkgKyAnLScgKyBVVUlELnM0KCkgKyAnLScgKyBVVUlELnM0KCkgKyAnLScgK1xyXG4gICAgICBVVUlELnM0KCkgKyAnLScgKyBVVUlELnM0KCkgKyBVVUlELnM0KCkgKyBVVUlELnM0KCk7XHJcbiAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHM0KCkge1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKDEgKyBNYXRoLnJhbmRvbSgpKSAqIDB4MTAwMDApXHJcbiAgICAgIC50b1N0cmluZygxNilcclxuICAgICAgLnN1YnN0cmluZygxKTtcclxuICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgY2xhc3MgRGF0YVNpemV7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBCSU5BUllfVU5JVFM9WydCJywnS2lCJywnTWlCJywnR2lCJywnVGlCJywnUGlCJywnRWlCJywnWmlCJywnWWlCJywnUmlCJywnUWlCJ107XHJcbiAgICBwcml2YXRlIHN0YXRpYyBCSU5BUllfVU5JVF9GQUNUT1I6bnVtYmVyPTEwMjQ7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBCSU5BUllfVU5JVF9GQUNUT1JfTE9HOm51bWJlcj1NYXRoLmxvZyhEYXRhU2l6ZS5CSU5BUllfVU5JVF9GQUNUT1IpO1xyXG5cclxuICAgIHN0YXRpYyBmb3JtYXRCeXRlc1RvQmluYXJ5VW5pdHMoYnl0ZXM6bnVtYmVyLGRlY2ltYWxzOm51bWJlcj0yKTpzdHJpbmd7XHJcblxyXG4gICAgICBsZXQgYmluYXJ5VW5pdElkeD0wO1xyXG4gICAgICBsZXQgZGl2aXNvcj0xO1xyXG4gICAgICBpZihieXRlcz4wKSB7XHJcbiAgICAgICAgY29uc3QgYnl0ZXNMb2cgPSBNYXRoLmxvZyhieXRlcyk7XHJcbiAgICAgICAgYmluYXJ5VW5pdElkeCA9IE1hdGguZmxvb3IoYnl0ZXNMb2cgLyB0aGlzLkJJTkFSWV9VTklUX0ZBQ1RPUl9MT0cpO1xyXG4gICAgICAgIGlmIChiaW5hcnlVbml0SWR4ID49IHRoaXMuQklOQVJZX1VOSVRTLmxlbmd0aCkge1xyXG4gICAgICAgICAgLy8gZmFsbGJhY2sgdG8gYnl0ZXNcclxuICAgICAgICAgIGJpbmFyeVVuaXRJZHggPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkaXZpc29yID0gTWF0aC5wb3codGhpcy5CSU5BUllfVU5JVF9GQUNUT1IsIGJpbmFyeVVuaXRJZHgpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBkZWNpbWFsc1VuaXRWYWx1ZTpzdHJpbmc7XHJcbiAgICAgIGlmKGJpbmFyeVVuaXRJZHg9PT0wKXtcclxuICAgICAgICBkZWNpbWFsc1VuaXRWYWx1ZT1ieXRlcy50b1N0cmluZygpO1xyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdW5pdFZhbHVlID0gYnl0ZXMgLyBkaXZpc29yO1xyXG4gICAgICAgIGRlY2ltYWxzVW5pdFZhbHVlPXVuaXRWYWx1ZS50b0ZpeGVkKGRlY2ltYWxzKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBiaW5hcnlVbml0U3RyID0gZGVjaW1hbHNVbml0VmFsdWUgKyAnICcgKyB0aGlzLkJJTkFSWV9VTklUU1tiaW5hcnlVbml0SWR4XTtcclxuXHJcbiAgICAgIHJldHVybiBiaW5hcnlVbml0U3RyO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGV4cG9ydCBjbGFzcyBBcnJheXMge1xyXG5cclxuICAgIHN0YXRpYyBjbG9uZU51bWJlckFycmF5KG51bWJlckFycmF5OiBBcnJheTxudW1iZXI+KTogQXJyYXk8bnVtYmVyPiB7XHJcbiAgICAgIGxldCBsZW4gPSBudW1iZXJBcnJheS5sZW5ndGg7XHJcbiAgICAgIGxldCBjbG9uZUFyciA9IG5ldyBBcnJheTxudW1iZXI+KGxlbik7XHJcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgbnVtYmVyQXJyYXkubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICBjbG9uZUFycltjXSA9IG51bWJlckFycmF5W2NdO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjbG9uZUFycjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc3dhcDxUPihpdGVtczpBcnJheTxUPiwgaTpudW1iZXIsIGo6bnVtYmVyKSB7XHJcbiAgICAgIGxldCB0bXAgPSBpdGVtc1tpXTtcclxuICAgICAgaXRlbXNbaV0gPSBpdGVtc1tqXTtcclxuICAgICAgaXRlbXNbal0gPSB0bXA7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHNodWZmbGVBcnJheTxUPihvcmdBcnJheTpBcnJheTxUPik6QXJyYXk8VD57XHJcbiAgICAgICAgbGV0IHNodWZmbGVkQXJyYXkgPSBbLi4ub3JnQXJyYXldO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBzaHVmZmxlZEFycmF5Lmxlbmd0aDsgaSA+IDE7IGktLSkge1xyXG4gICAgICAgICAgbGV0IHJuZD1NYXRoLnJhbmRvbSgpO1xyXG4gICAgICAgICAgbGV0IHJuZEFycklkeD1NYXRoLmZsb29yKHJuZCppKTtcclxuICAgICAgICAgIEFycmF5cy5zd2FwKHNodWZmbGVkQXJyYXksIGkgLSAxLCBybmRBcnJJZHgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2h1ZmZsZWRBcnJheTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGNsYXNzIFdvcmtlckhlbHBlciB7XHJcblxyXG4gICAgc3RhdGljIERFQlVHPWZhbHNlO1xyXG4gICAgc3RhdGljIGJ1aWxkV29ya2VyQmxvYlVSTCh3b3JrZXJGY3Q6IEZ1bmN0aW9uKTogc3RyaW5nIHtcclxuXHJcbiAgICAgIGlmKCEgKHdvcmtlckZjdCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgJ1BhcmFtZXRlciB3b3JrZXJGY3QgaXMgbm90IGEgZnVuY3Rpb24hIChYU1MgYXR0YWNrPykuJ1xyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgICBsZXQgIHdvRmN0Tm0gPSB3b3JrZXJGY3QubmFtZVxyXG4gICAgICBpZiAoV29ya2VySGVscGVyLkRFQlVHKSB7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKFwiV29ya2VyIG1ldGhvZCBuYW1lOiBcIiArIHdvRmN0Tm0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCB3b0ZjdFN0ciA9IHdvcmtlckZjdC50b1N0cmluZygpXHJcbiAgICAgIGlmIChXb3JrZXJIZWxwZXIuREVCVUcpIHtcclxuICAgICAgICBjb25zb2xlLmluZm8oXCJXb3JrZXIgbWV0aG9kIHN0cmluZzpcIilcclxuICAgICAgICBjb25zb2xlLmluZm8od29GY3RTdHIpXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvLyBNYWtlIHN1cmUgY29kZSBzdGFydHMgd2l0aCBcImZ1bmN0aW9uKClcIlxyXG5cclxuICAgICAgLy8gQ2hyb21lLCBGaXJlZm94OiBcIlt3b2ZjdE5tXSgpey4uLn1cIiwgU2FmYXJpOiBcImZ1bmN0aW9uIFt3b2ZjdE5tXSgpey4uLn1cIlxyXG4gICAgICAvLyB3ZSBuZWVkIGFuIGFub255bW91cyBmdW5jdGlvbjogXCJmdW5jdGlvbigpIHsuLi59XCJcclxuICAgICAgbGV0IHBpV29GY3RTdHIgPSB3b0ZjdFN0ci5yZXBsYWNlKC9eZnVuY3Rpb24gKy8sICcnKTtcclxuXHJcbiAgICAgIGlmKFdvcmtlckhlbHBlci5ERUJVRyl7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKFwiV29ya2VyIHBsYXRmb3JtIGluZGVwZW5kZW50IGZ1bmN0aW9uIHN0cmluZzpcIilcclxuICAgICAgICBjb25zb2xlLmluZm8ocGlXb0ZjdFN0cilcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ29udmVydCB0byBhbm9ueW1vdXMgZnVuY3Rpb25cclxuICAgICAgbGV0IGFub25Xb0ZjdFN0ciA9IHBpV29GY3RTdHIucmVwbGFjZSh3b0ZjdE5tICsgJygpJywgJ2Z1bmN0aW9uKCknKVxyXG4gICAgICBpZihXb3JrZXJIZWxwZXIuREVCVUcpe1xyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIldvcmtlciBhbm9ueW1vdXMgZnVuY3Rpb24gc3RyaW5nOlwiKVxyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhwaVdvRmN0U3RyKVxyXG4gICAgICB9XHJcbiAgICAgIC8vIFNlbGYgZXhlY3V0aW5nXHJcbiAgICAgIGxldCB3cyA9ICcoJyArIGFub25Xb0ZjdFN0ciArICcpKCk7J1xyXG4gICAgICBpZihXb3JrZXJIZWxwZXIuREVCVUcpe1xyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIldvcmtlciBzZWxmIGV4ZWN1dGluZyBhbm9ueW1vdXMgZnVuY3Rpb24gc3RyaW5nOlwiKVxyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhhbm9uV29GY3RTdHIpXHJcbiAgICAgIH1cclxuICAgICAgLy8gQnVpbGQgdGhlIHdvcmtlciBibG9iXHJcbiAgICAgIGxldCB3YiA9IG5ldyBCbG9iKFt3c10sIHt0eXBlOiAndGV4dC9qYXZhc2NyaXB0J30pO1xyXG5cclxuICAgICAgbGV0IHdvcmtlckJsb2JVcmw9d2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwod2IpO1xyXG4gICAgICByZXR1cm4gd29ya2VyQmxvYlVybDtcclxuICAgIH1cclxuICB9XHJcbiJdfQ==
105
+ export class ErrorHelper {
106
+ static messageFromError(error) {
107
+ let msg = null;
108
+ if (error instanceof Error) {
109
+ msg = error.message;
110
+ }
111
+ return msg;
112
+ }
113
+ static messageFromErrorNonNull(error) {
114
+ let msg = '';
115
+ const msgNullable = ErrorHelper.messageFromError(error);
116
+ if (msgNullable != null) {
117
+ msg = msgNullable;
118
+ }
119
+ return msg;
120
+ }
121
+ static message(baseMessage, error) {
122
+ let msg = baseMessage;
123
+ if (error instanceof Error) {
124
+ msg = baseMessage + ': ' + error.message;
125
+ }
126
+ else {
127
+ msg = baseMessage + '.';
128
+ }
129
+ return msg;
130
+ }
131
+ }
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0UsTUFBTSxPQUFPLElBQUk7SUFFZixNQUFNLENBQUMsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRztZQUNwRSxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFUyxNQUFNLENBQUMsRUFBRTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO2FBQzdDLFFBQVEsQ0FBQyxFQUFFLENBQUM7YUFDWixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUNBO0FBRUQsTUFBTSxPQUFPLFFBQVE7YUFDSixpQkFBWSxHQUFDLENBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2FBQy9FLHVCQUFrQixHQUFRLElBQUksQ0FBQzthQUMvQiwyQkFBc0IsR0FBUSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRW5GLE1BQU0sQ0FBQyx3QkFBd0Is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LFdBQVcsR0FBQyxJQUFJLEdBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNyQyxDQUFDO2FBQUksQ0FBQztZQUNKLEdBQUcsR0FBQyxXQUFXLEdBQUMsR0FBRyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4gIGV4cG9ydCBjbGFzcyBVVUlEIHtcclxuXHJcbiAgICBzdGF0aWMgZ2VuZXJhdGUoKTpzdHJpbmcge1xyXG4gICAgcmV0dXJuIFVVSUQuczQoKSArIFVVSUQuczQoKSArICctJyArIFVVSUQuczQoKSArICctJyArIFVVSUQuczQoKSArICctJyArXHJcbiAgICAgIFVVSUQuczQoKSArICctJyArIFVVSUQuczQoKSArIFVVSUQuczQoKSArIFVVSUQuczQoKTtcclxuICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgczQoKSB7XHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcigoMSArIE1hdGgucmFuZG9tKCkpICogMHgxMDAwMClcclxuICAgICAgLnRvU3RyaW5nKDE2KVxyXG4gICAgICAuc3Vic3RyaW5nKDEpO1xyXG4gIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydCBjbGFzcyBEYXRhU2l6ZXtcclxuICAgIHByaXZhdGUgc3RhdGljIEJJTkFSWV9VTklUUz1bJ0InLCdLaUInLCdNaUInLCdHaUInLCdUaUInLCdQaUInLCdFaUInLCdaaUInLCdZaUInLCdSaUInLCdRaUInXTtcclxuICAgIHByaXZhdGUgc3RhdGljIEJJTkFSWV9VTklUX0ZBQ1RPUjpudW1iZXI9MTAyNDtcclxuICAgIHByaXZhdGUgc3RhdGljIEJJTkFSWV9VTklUX0ZBQ1RPUl9MT0c6bnVtYmVyPU1hdGgubG9nKERhdGFTaXplLkJJTkFSWV9VTklUX0ZBQ1RPUik7XHJcblxyXG4gICAgc3RhdGljIGZvcm1hdEJ5dGVzVG9CaW5hcnlVbml0cyhieXRlczpudW1iZXIsZGVjaW1hbHM6bnVtYmVyPTIpOnN0cmluZ3tcclxuXHJcbiAgICAgIGxldCBiaW5hcnlVbml0SWR4PTA7XHJcbiAgICAgIGxldCBkaXZpc29yPTE7XHJcbiAgICAgIGlmKGJ5dGVzPjApIHtcclxuICAgICAgICBjb25zdCBieXRlc0xvZyA9IE1hdGgubG9nKGJ5dGVzKTtcclxuICAgICAgICBiaW5hcnlVbml0SWR4ID0gTWF0aC5mbG9vcihieXRlc0xvZyAvIHRoaXMuQklOQVJZX1VOSVRfRkFDVE9SX0xPRyk7XHJcbiAgICAgICAgaWYgKGJpbmFyeVVuaXRJZHggPj0gdGhpcy5CSU5BUllfVU5JVFMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyBmYWxsYmFjayB0byBieXRlc1xyXG4gICAgICAgICAgYmluYXJ5VW5pdElkeCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpdmlzb3IgPSBNYXRoLnBvdyh0aGlzLkJJTkFSWV9VTklUX0ZBQ1RPUiwgYmluYXJ5VW5pdElkeCk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGRlY2ltYWxzVW5pdFZhbHVlOnN0cmluZztcclxuICAgICAgaWYoYmluYXJ5VW5pdElkeD09PTApe1xyXG4gICAgICAgIGRlY2ltYWxzVW5pdFZhbHVlPWJ5dGVzLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICBjb25zdCB1bml0VmFsdWUgPSBieXRlcyAvIGRpdmlzb3I7XHJcbiAgICAgICAgZGVjaW1hbHNVbml0VmFsdWU9dW5pdFZhbHVlLnRvRml4ZWQoZGVjaW1hbHMpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGJpbmFyeVVuaXRTdHIgPSBkZWNpbWFsc1VuaXRWYWx1ZSArICcgJyArIHRoaXMuQklOQVJZX1VOSVRTW2JpbmFyeVVuaXRJZHhdO1xyXG5cclxuICAgICAgcmV0dXJuIGJpbmFyeVVuaXRTdHI7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGNsYXNzIEFycmF5cyB7XHJcblxyXG4gICAgc3RhdGljIGNsb25lTnVtYmVyQXJyYXkobnVtYmVyQXJyYXk6IEFycmF5PG51bWJlcj4pOiBBcnJheTxudW1iZXI+IHtcclxuICAgICAgbGV0IGxlbiA9IG51bWJlckFycmF5Lmxlbmd0aDtcclxuICAgICAgbGV0IGNsb25lQXJyID0gbmV3IEFycmF5PG51bWJlcj4obGVuKTtcclxuICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBudW1iZXJBcnJheS5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgIGNsb25lQXJyW2NdID0gbnVtYmVyQXJyYXlbY107XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNsb25lQXJyO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzd2FwPFQ+KGl0ZW1zOkFycmF5PFQ+LCBpOm51bWJlciwgajpudW1iZXIpIHtcclxuICAgICAgbGV0IHRtcCA9IGl0ZW1zW2ldO1xyXG4gICAgICBpdGVtc1tpXSA9IGl0ZW1zW2pdO1xyXG4gICAgICBpdGVtc1tqXSA9IHRtcDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2h1ZmZsZUFycmF5PFQ+KG9yZ0FycmF5OkFycmF5PFQ+KTpBcnJheTxUPntcclxuICAgICAgICBsZXQgc2h1ZmZsZWRBcnJheSA9IFsuLi5vcmdBcnJheV07XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHNodWZmbGVkQXJyYXkubGVuZ3RoOyBpID4gMTsgaS0tKSB7XHJcbiAgICAgICAgICBsZXQgcm5kPU1hdGgucmFuZG9tKCk7XHJcbiAgICAgICAgICBsZXQgcm5kQXJySWR4PU1hdGguZmxvb3Iocm5kKmkpO1xyXG4gICAgICAgICAgQXJyYXlzLnN3YXAoc2h1ZmZsZWRBcnJheSwgaSAtIDEsIHJuZEFycklkeCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzaHVmZmxlZEFycmF5O1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgY2xhc3MgV29ya2VySGVscGVyIHtcclxuXHJcbiAgICBzdGF0aWMgREVCVUc9ZmFsc2U7XHJcbiAgICBzdGF0aWMgYnVpbGRXb3JrZXJCbG9iVVJMKHdvcmtlckZjdDogRnVuY3Rpb24pOiBzdHJpbmcge1xyXG5cclxuICAgICAgaWYoISAod29ya2VyRmN0IGluc3RhbmNlb2YgRnVuY3Rpb24pKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAnUGFyYW1ldGVyIHdvcmtlckZjdCBpcyBub3QgYSBmdW5jdGlvbiEgKFhTUyBhdHRhY2s/KS4nXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCAgd29GY3RObSA9IHdvcmtlckZjdC5uYW1lXHJcbiAgICAgIGlmIChXb3JrZXJIZWxwZXIuREVCVUcpIHtcclxuICAgICAgICBjb25zb2xlLmluZm8oXCJXb3JrZXIgbWV0aG9kIG5hbWU6IFwiICsgd29GY3RObSlcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHdvRmN0U3RyID0gd29ya2VyRmN0LnRvU3RyaW5nKClcclxuICAgICAgaWYgKFdvcmtlckhlbHBlci5ERUJVRykge1xyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIldvcmtlciBtZXRob2Qgc3RyaW5nOlwiKVxyXG4gICAgICAgIGNvbnNvbGUuaW5mbyh3b0ZjdFN0cilcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIE1ha2Ugc3VyZSBjb2RlIHN0YXJ0cyB3aXRoIFwiZnVuY3Rpb24oKVwiXHJcblxyXG4gICAgICAvLyBDaHJvbWUsIEZpcmVmb3g6IFwiW3dvZmN0Tm1dKCl7Li4ufVwiLCBTYWZhcmk6IFwiZnVuY3Rpb24gW3dvZmN0Tm1dKCl7Li4ufVwiXHJcbiAgICAgIC8vIHdlIG5lZWQgYW4gYW5vbnltb3VzIGZ1bmN0aW9uOiBcImZ1bmN0aW9uKCkgey4uLn1cIlxyXG4gICAgICBsZXQgcGlXb0ZjdFN0ciA9IHdvRmN0U3RyLnJlcGxhY2UoL15mdW5jdGlvbiArLywgJycpO1xyXG5cclxuICAgICAgaWYoV29ya2VySGVscGVyLkRFQlVHKXtcclxuICAgICAgICBjb25zb2xlLmluZm8oXCJXb3JrZXIgcGxhdGZvcm0gaW5kZXBlbmRlbnQgZnVuY3Rpb24gc3RyaW5nOlwiKVxyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhwaVdvRmN0U3RyKVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IHRvIGFub255bW91cyBmdW5jdGlvblxyXG4gICAgICBsZXQgYW5vbldvRmN0U3RyID0gcGlXb0ZjdFN0ci5yZXBsYWNlKHdvRmN0Tm0gKyAnKCknLCAnZnVuY3Rpb24oKScpXHJcbiAgICAgIGlmKFdvcmtlckhlbHBlci5ERUJVRyl7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKFwiV29ya2VyIGFub255bW91cyBmdW5jdGlvbiBzdHJpbmc6XCIpXHJcbiAgICAgICAgY29uc29sZS5pbmZvKHBpV29GY3RTdHIpXHJcbiAgICAgIH1cclxuICAgICAgLy8gU2VsZiBleGVjdXRpbmdcclxuICAgICAgbGV0IHdzID0gJygnICsgYW5vbldvRmN0U3RyICsgJykoKTsnXHJcbiAgICAgIGlmKFdvcmtlckhlbHBlci5ERUJVRyl7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKFwiV29ya2VyIHNlbGYgZXhlY3V0aW5nIGFub255bW91cyBmdW5jdGlvbiBzdHJpbmc6XCIpXHJcbiAgICAgICAgY29uc29sZS5pbmZvKGFub25Xb0ZjdFN0cilcclxuICAgICAgfVxyXG4gICAgICAvLyBCdWlsZCB0aGUgd29ya2VyIGJsb2JcclxuICAgICAgbGV0IHdiID0gbmV3IEJsb2IoW3dzXSwge3R5cGU6ICd0ZXh0L2phdmFzY3JpcHQnfSk7XHJcblxyXG4gICAgICBsZXQgd29ya2VyQmxvYlVybD13aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCh3Yik7XHJcbiAgICAgIHJldHVybiB3b3JrZXJCbG9iVXJsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGNsYXNzIEVycm9ySGVscGVye1xyXG5cclxuICAgIHN0YXRpYyBtZXNzYWdlRnJvbUVycm9yKGVycm9yOmFueSk6c3RyaW5nfG51bGx7XHJcbiAgICAgICAgbGV0IG1zZz1udWxsO1xyXG4gICAgICAgIGlmKGVycm9yIGluc3RhbmNlb2YgRXJyb3Ipe1xyXG4gICAgICAgICAgbXNnPWVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtc2c7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG1lc3NhZ2VGcm9tRXJyb3JOb25OdWxsKGVycm9yOmFueSk6c3RyaW5ne1xyXG4gICAgICBsZXQgbXNnPScnO1xyXG4gICAgICBjb25zdCBtc2dOdWxsYWJsZT1FcnJvckhlbHBlci5tZXNzYWdlRnJvbUVycm9yKGVycm9yKTtcclxuICAgICAgaWYobXNnTnVsbGFibGUhPW51bGwpe1xyXG4gICAgICAgIG1zZz1tc2dOdWxsYWJsZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbXNnO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBtZXNzYWdlKGJhc2VNZXNzYWdlOnN0cmluZyxlcnJvcjphbnkpOnN0cmluZ3tcclxuICAgICAgbGV0IG1zZz1iYXNlTWVzc2FnZTtcclxuICAgICAgaWYoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcil7XHJcbiAgICAgICAgbXNnPWJhc2VNZXNzYWdlKyc6ICcrZXJyb3IubWVzc2FnZTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgbXNnPWJhc2VNZXNzYWdlKycuJztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbXNnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiJdfQ==
@@ -1137,6 +1137,33 @@ class WorkerHelper {
1137
1137
  return workerBlobUrl;
1138
1138
  }
1139
1139
  }
1140
+ class ErrorHelper {
1141
+ static messageFromError(error) {
1142
+ let msg = null;
1143
+ if (error instanceof Error) {
1144
+ msg = error.message;
1145
+ }
1146
+ return msg;
1147
+ }
1148
+ static messageFromErrorNonNull(error) {
1149
+ let msg = '';
1150
+ const msgNullable = ErrorHelper.messageFromError(error);
1151
+ if (msgNullable != null) {
1152
+ msg = msgNullable;
1153
+ }
1154
+ return msg;
1155
+ }
1156
+ static message(baseMessage, error) {
1157
+ let msg = baseMessage;
1158
+ if (error instanceof Error) {
1159
+ msg = baseMessage + ': ' + error.message;
1160
+ }
1161
+ else {
1162
+ msg = baseMessage + '.';
1163
+ }
1164
+ return msg;
1165
+ }
1166
+ }
1140
1167
 
1141
1168
  class PersistentAudioStorageTarget {
1142
1169
  get indexedDb() {
@@ -15984,10 +16011,10 @@ class RecordingFileViewComponent extends AudioDisplayPlayer {
15984
16011
  }
15985
16012
  toVersion(ae) {
15986
16013
  let toRfId = null;
15987
- let version = ae.value;
16014
+ const version = ae.value;
15988
16015
  if (this.posInList != null && this.availRecFiles) {
15989
16016
  let cRfs = this.availRecFiles[this.posInList];
15990
- let availVersionCnt = cRfs.length;
16017
+ //let availVersionCnt = cRfs.length;
15991
16018
  for (let cRf of cRfs) {
15992
16019
  if (cRf.version != null) {
15993
16020
  if (cRf.version === version) {
@@ -16120,9 +16147,18 @@ class RecordingFileViewComponent extends AudioDisplayPlayer {
16120
16147
  }
16121
16148
  this.audioClip = clip;
16122
16149
  this.loadedRecfile();
16123
- }, error: error1 => {
16150
+ }, error: (err) => {
16124
16151
  this.audioFetching = false;
16125
- this.status = 'Error loading audio file!';
16152
+ this.status = 'Error loading audio file';
16153
+ const errMsg = ErrorHelper.message('Could not load audio file', err);
16154
+ this.dialog.open(MessageDialog, {
16155
+ data: {
16156
+ type: 'error',
16157
+ title: this.status,
16158
+ msg: errMsg,
16159
+ advice: "Please check network connection and server state or contact application administrator."
16160
+ }
16161
+ });
16126
16162
  }
16127
16163
  });
16128
16164
  }
@@ -16166,8 +16202,7 @@ class RecordingFileViewComponent extends AudioDisplayPlayer {
16166
16202
  let rfd = rfds[rfdi];
16167
16203
  if (rfd.date) {
16168
16204
  // convert date string for faster sorting later
16169
- let rfdd = new Date(rfd.date);
16170
- rfd._dateAsDateObj = rfdd;
16205
+ rfd._dateAsDateObj = new Date(rfd.date);
16171
16206
  }
16172
16207
  let ic = rfd.itemCode;
16173
16208
  if (!ic) {
@@ -16346,13 +16381,15 @@ class RecordingFileUI extends RecordingFileViewComponent {
16346
16381
  sf = s.startFrame;
16347
16382
  ef = s.endFrame;
16348
16383
  }
16349
- this.recordingFileService.saveEditSelection(this.recordingFile.recordingFileId, sr, sf, ef).subscribe({ next: (value) => { },
16350
- error: () => {
16384
+ this.recordingFileService.saveEditSelection(this.recordingFile.recordingFileId, sr, sf, ef).subscribe({
16385
+ next: () => { },
16386
+ error: (err) => {
16387
+ const errMsg = ErrorHelper.message('Could not save edit selection to server', err);
16351
16388
  this.dialog.open(MessageDialog, {
16352
16389
  data: {
16353
16390
  type: 'error',
16354
16391
  title: 'Save selection edit error',
16355
- msg: "Could not save edit selection to WikiSpeech server!",
16392
+ msg: errMsg,
16356
16393
  advice: "Please check network connection and server state."
16357
16394
  }
16358
16395
  });
@@ -17869,7 +17906,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
17869
17906
  exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, AudioRecorder], imports: [RouterModule.forChild(SPR_ROUTES), CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule, IntersectionObserverDirective], providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader, provideHttpClient(withInterceptorsFromDi())] }]
17870
17907
  }] });
17871
17908
 
17872
- const VERSION = '3.10.11';
17909
+ const VERSION = '3.10.12';
17873
17910
 
17874
17911
  const SPEECHRECORDER_ENVIRONMENT_DEFAULTS = {
17875
17912
  production: false,