speechrecorderng 3.0.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/esm2020/lib/action/action.mjs +2 -1
  2. package/esm2020/lib/audio/array_audio_buffer.mjs +65 -2
  3. package/esm2020/lib/audio/array_audio_buffer_input_stream.mjs +2 -2
  4. package/esm2020/lib/audio/array_audio_buffer_random_access_stream.mjs +16 -0
  5. package/esm2020/lib/audio/audio_data_holder.mjs +203 -48
  6. package/esm2020/lib/audio/audio_display.mjs +10 -34
  7. package/esm2020/lib/audio/audio_player.mjs +18 -45
  8. package/esm2020/lib/audio/capture/capture.mjs +293 -69
  9. package/esm2020/lib/audio/dsp/level_measure.mjs +211 -88
  10. package/esm2020/lib/audio/impl/wavformat.mjs +1 -1
  11. package/esm2020/lib/audio/impl/wavreader.mjs +134 -0
  12. package/esm2020/lib/audio/impl/wavwriter.mjs +10 -9
  13. package/esm2020/lib/audio/inddb_audio_buffer.mjs +508 -0
  14. package/esm2020/lib/audio/net_audio_buffer.mjs +297 -0
  15. package/esm2020/lib/audio/persistor.mjs +8 -2
  16. package/esm2020/lib/audio/playback/array_audio_buffer_source_node.mjs +15 -154
  17. package/esm2020/lib/audio/playback/audio_source_node.mjs +18 -0
  18. package/esm2020/lib/audio/playback/audio_source_worklet_module_loader.mjs +167 -0
  19. package/esm2020/lib/audio/playback/inddb_audio_buffer_source_node.mjs +167 -0
  20. package/esm2020/lib/audio/playback/net_audio_buffer_source_node.mjs +218 -0
  21. package/esm2020/lib/audio/playback/player.mjs +190 -171
  22. package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +35 -76
  23. package/esm2020/lib/audio/ui/audio_display_control.mjs +12 -24
  24. package/esm2020/lib/audio/ui/audio_display_scroll_pane.mjs +14 -45
  25. package/esm2020/lib/audio/ui/audiosignal.mjs +333 -267
  26. package/esm2020/lib/audio/ui/container.mjs +40 -57
  27. package/esm2020/lib/audio/ui/livelevel.mjs +53 -52
  28. package/esm2020/lib/audio/ui/scroll_pane_horizontal.mjs +5 -19
  29. package/esm2020/lib/audio/ui/sonagram.mjs +386 -339
  30. package/esm2020/lib/db/inddb.mjs +120 -0
  31. package/esm2020/lib/io/BinaryReader.mjs +85 -0
  32. package/esm2020/lib/io/stream.mjs +101 -1
  33. package/esm2020/lib/net/uploader.mjs +111 -5
  34. package/esm2020/lib/recorder_component.mjs +59 -1
  35. package/esm2020/lib/speechrecorder/project/project.mjs +10 -1
  36. package/esm2020/lib/speechrecorder/project/project.service.mjs +3 -3
  37. package/esm2020/lib/speechrecorder/recording.mjs +30 -6
  38. package/esm2020/lib/speechrecorder/recordings/basic_recording.service.mjs +213 -0
  39. package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +732 -65
  40. package/esm2020/lib/speechrecorder/script/script.service.mjs +3 -3
  41. package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +358 -184
  42. package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +181 -28
  43. package/esm2020/lib/speechrecorder/session/controlpanel.mjs +47 -129
  44. package/esm2020/lib/speechrecorder/session/item.mjs +13 -1
  45. package/esm2020/lib/speechrecorder/session/progress.mjs +26 -55
  46. package/esm2020/lib/speechrecorder/session/prompting.mjs +33 -176
  47. package/esm2020/lib/speechrecorder/session/recorder_combi_pane.mjs +6 -6
  48. package/esm2020/lib/speechrecorder/session/recording_file_cache.mjs +28 -15
  49. package/esm2020/lib/speechrecorder/session/recording_list.mjs +92 -55
  50. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +9 -13
  51. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +9 -18
  52. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +10 -36
  53. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +10 -37
  54. package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +80 -56
  55. package/esm2020/lib/speechrecorder/session/session.service.mjs +3 -3
  56. package/esm2020/lib/speechrecorder/session/session_finished_dialog.mjs +4 -4
  57. package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +409 -165
  58. package/esm2020/lib/speechrecorder/session/warning_bar.mjs +6 -29
  59. package/esm2020/lib/speechrecorder/spruploader.mjs +3 -3
  60. package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +6 -41
  61. package/esm2020/lib/speechrecorderng.component.mjs +42 -31
  62. package/esm2020/lib/speechrecorderng.module.mjs +5 -5
  63. package/esm2020/lib/spr.config.mjs +3 -3
  64. package/esm2020/lib/spr.module.version.mjs +2 -2
  65. package/esm2020/lib/ui/canvas_layer_comp.mjs +3 -3
  66. package/esm2020/lib/ui/message_dialog.mjs +7 -7
  67. package/esm2020/lib/ui/recordingitem_display.mjs +26 -59
  68. package/esm2020/lib/utils/scrollIntoViewToBottom.mjs +3 -3
  69. package/esm2020/lib/utils/ua-parser.mjs +28 -4
  70. package/esm2020/lib/utils/utils.mjs +29 -1
  71. package/fesm2015/speechrecorderng.mjs +12755 -9195
  72. package/fesm2015/speechrecorderng.mjs.map +1 -1
  73. package/fesm2020/speechrecorderng.mjs +12652 -9101
  74. package/fesm2020/speechrecorderng.mjs.map +1 -1
  75. package/{speechrecorderng.d.ts → index.d.ts} +0 -0
  76. package/lib/audio/array_audio_buffer.d.ts +17 -1
  77. package/lib/audio/array_audio_buffer_random_access_stream.d.ts +9 -0
  78. package/lib/audio/audio_data_holder.d.ts +69 -14
  79. package/lib/audio/audio_display.d.ts +1 -1
  80. package/lib/audio/audio_player.d.ts +3 -7
  81. package/lib/audio/capture/capture.d.ts +24 -4
  82. package/lib/audio/dsp/level_measure.d.ts +2 -23
  83. package/lib/audio/impl/wavformat.d.ts +3 -3
  84. package/lib/audio/impl/wavreader.d.ts +16 -0
  85. package/lib/audio/impl/wavwriter.d.ts +1 -4
  86. package/lib/audio/inddb_audio_buffer.d.ts +68 -0
  87. package/lib/audio/net_audio_buffer.d.ts +59 -0
  88. package/lib/audio/persistor.d.ts +3 -9
  89. package/lib/audio/playback/array_audio_buffer_source_node.d.ts +2 -8
  90. package/lib/audio/playback/audio_source_node.d.ts +10 -0
  91. package/lib/audio/playback/audio_source_worklet_module_loader.d.ts +4 -0
  92. package/lib/audio/playback/inddb_audio_buffer_source_node.d.ts +21 -0
  93. package/lib/audio/playback/net_audio_buffer_source_node.d.ts +27 -0
  94. package/lib/audio/playback/player.d.ts +19 -16
  95. package/lib/audio/ui/audio_canvas_layer_comp.d.ts +3 -3
  96. package/lib/audio/ui/audio_display_control.d.ts +3 -6
  97. package/lib/audio/ui/audio_display_scroll_pane.d.ts +1 -1
  98. package/lib/audio/ui/audiosignal.d.ts +4 -3
  99. package/lib/audio/ui/container.d.ts +1 -1
  100. package/lib/audio/ui/livelevel.d.ts +11 -4
  101. package/lib/audio/ui/scroll_pane_horizontal.d.ts +1 -1
  102. package/lib/audio/ui/sonagram.d.ts +4 -3
  103. package/lib/db/inddb.d.ts +21 -0
  104. package/lib/io/BinaryReader.d.ts +18 -0
  105. package/lib/io/stream.d.ts +18 -0
  106. package/lib/net/uploader.d.ts +20 -2
  107. package/lib/recorder_component.d.ts +5 -0
  108. package/lib/speechrecorder/project/project.d.ts +9 -0
  109. package/lib/speechrecorder/recording.d.ts +8 -2
  110. package/lib/speechrecorder/recordings/basic_recording.service.d.ts +27 -0
  111. package/lib/speechrecorder/recordings/recordings.service.d.ts +21 -6
  112. package/lib/speechrecorder/session/audiorecorder.d.ts +7 -18
  113. package/lib/speechrecorder/session/basicrecorder.d.ts +28 -4
  114. package/lib/speechrecorder/session/controlpanel.d.ts +7 -7
  115. package/lib/speechrecorder/session/item.d.ts +1 -0
  116. package/lib/speechrecorder/session/progress.d.ts +2 -1
  117. package/lib/speechrecorder/session/prompting.d.ts +5 -5
  118. package/lib/speechrecorder/session/recorder_combi_pane.d.ts +1 -1
  119. package/lib/speechrecorder/session/recording_file_cache.d.ts +7 -4
  120. package/lib/speechrecorder/session/recording_list.d.ts +2 -1
  121. package/lib/speechrecorder/session/recordingfile/recording-file-meta.component.d.ts +1 -1
  122. package/lib/speechrecorder/session/recordingfile/recording-file-navi.component.d.ts +1 -1
  123. package/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.d.ts +1 -1
  124. package/lib/speechrecorder/session/recordingfile/recording-file-view.component.d.ts +1 -1
  125. package/lib/speechrecorder/session/recordingfile/recordingfile-service.d.ts +4 -5
  126. package/lib/speechrecorder/session/session_finished_dialog.d.ts +1 -1
  127. package/lib/speechrecorder/session/sessionmanager.d.ts +10 -10
  128. package/lib/speechrecorder/session/warning_bar.d.ts +1 -1
  129. package/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.d.ts +1 -1
  130. package/lib/speechrecorderng.component.d.ts +2 -1
  131. package/lib/spr.module.version.d.ts +1 -1
  132. package/lib/ui/canvas_layer_comp.d.ts +1 -1
  133. package/lib/ui/message_dialog.d.ts +1 -1
  134. package/lib/ui/recordingitem_display.d.ts +3 -2
  135. package/lib/utils/scrollIntoViewToBottom.d.ts +1 -1
  136. package/lib/utils/ua-parser.d.ts +4 -1
  137. package/lib/utils/utils.d.ts +6 -0
  138. package/package.json +5 -4
  139. package/esm2020/lib/math/utils.mjs +0 -14
  140. package/esm2020/lib/utils/css_utils.mjs +0 -7
  141. package/lib/math/utils.d.ts +0 -3
  142. package/lib/utils/css_utils.d.ts +0 -3
@@ -2,9 +2,9 @@ import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core
2
2
  import { RecordingList } from "./recording_list";
3
3
  import { AudioDisplay } from "../../audio/audio_display";
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "./recording_list";
5
+ import * as i1 from "@angular/flex-layout/extended";
6
6
  import * as i2 from "../../audio/audio_display";
7
- import * as i3 from "@angular/flex-layout/extended";
7
+ import * as i3 from "./recording_list";
8
8
  export class RecorderCombiPane {
9
9
  constructor() {
10
10
  this.selectDisabled = false;
@@ -28,8 +28,8 @@ export class RecorderCombiPane {
28
28
  this.recordingListComp.selectTop();
29
29
  }
30
30
  }
31
- RecorderCombiPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RecorderCombiPane, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
- RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, viewQueries: [{ propertyName: "recordingListComp", first: true, predicate: RecordingList, descendants: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], ngImport: i0, template: `
31
+ RecorderCombiPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
+ RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, viewQueries: [{ propertyName: "recordingListComp", first: true, predicate: RecordingList, descendants: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], ngImport: i0, template: `
33
33
  <div class="scrollList">
34
34
  <app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
35
35
  </div>
@@ -41,8 +41,8 @@ RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
41
41
  [autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
42
42
  [playStopAction]="playStopAction"></app-audiodisplay>
43
43
  </div>
44
- `, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"], components: [{ type: i1.RecordingList, selector: "app-recordinglist", inputs: ["selectDisabled", "selectedRecordingFile"], outputs: ["selectedRecordingFileChanged"] }, { type: i2.AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }], directives: [{ type: i3.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }] });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RecorderCombiPane, decorators: [{
44
+ `, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "directive", type: i1.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "component", type: i2.AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }, { kind: "component", type: i3.RecordingList, selector: "app-recordinglist", inputs: ["selectDisabled", "selectedRecordingFile"], outputs: ["selectedRecordingFileChanged"] }] });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, decorators: [{
46
46
  type: Component,
47
47
  args: [{ selector: 'app-recordercombipane', template: `
48
48
  <div class="scrollList">
@@ -3,12 +3,19 @@ export class BasicRecFilesCache {
3
3
  constructor() {
4
4
  //public static readonly DEFAULT_MAX_SAMPLES=30*48000; // TEST 30 seconds
5
5
  this._sampleCount = 0;
6
- this.maxSampleCount = SprItemsCache.DEFAULT_MAX_SAMPLES;
7
- this.currentRecordingFile = null;
6
+ this.maxSampleCount = BasicRecFilesCache.DEFAULT_MAX_SAMPLES;
7
+ this._currentRecordingFile = null;
8
+ }
9
+ get currentRecordingFile() {
10
+ return this._currentRecordingFile;
11
+ }
12
+ set currentRecordingFile(value) {
13
+ this._currentRecordingFile = value;
14
+ this.expire();
8
15
  }
9
16
  }
10
17
  BasicRecFilesCache.DEBUG = false;
11
- BasicRecFilesCache.DEFAULT_MAX_SAMPLES = 10 * 60 * 48000; // 20 Minutes mono 48kHz
18
+ BasicRecFilesCache.DEFAULT_MAX_SAMPLES = 10 * 60 * 48000; // 10 Minutes mono 48kHz
12
19
  export class SprItemsCache extends BasicRecFilesCache {
13
20
  constructor() {
14
21
  super(...arguments);
@@ -29,16 +36,16 @@ export class SprItemsCache extends BasicRecFilesCache {
29
36
  tryExpire(toBeExpiredRf) {
30
37
  if (BasicRecFilesCache.DEBUG)
31
38
  console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " try expire:");
32
- if (!toBeExpiredRf.equals(this.currentRecordingFile)) {
39
+ if (!RecordingFileUtils.equals(toBeExpiredRf, this.currentRecordingFile)) {
33
40
  if (BasicRecFilesCache.DEBUG)
34
41
  console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " not current file...");
35
42
  if (toBeExpiredRf.serverPersisted) {
36
43
  if (BasicRecFilesCache.DEBUG)
37
44
  console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " is server persisted...");
38
45
  // expire recording files first stored to the cache
39
- let expiredAudio = RecordingFileUtils.expireAudioData(toBeExpiredRf);
40
- if (expiredAudio) {
41
- this._sampleCount -= expiredAudio.sampleCounts();
46
+ let expiredSamples = RecordingFileUtils.expireAudioData(toBeExpiredRf);
47
+ this._sampleCount -= expiredSamples;
48
+ if (expiredSamples > 0) {
42
49
  if (BasicRecFilesCache.DEBUG)
43
50
  console.debug("Rec. files cache: Expired: " + toBeExpiredRf.toString() + ". Cache samples now: " + this._sampleCount);
44
51
  }
@@ -99,7 +106,7 @@ export class SprItemsCache extends BasicRecFilesCache {
99
106
  if (!item.recs) {
100
107
  item.recs = new Array();
101
108
  }
102
- item.recs.push(sprRecFile);
109
+ item.recs[sprRecFile.version] = sprRecFile;
103
110
  this._sampleCount += RecordingFileUtils.sampleCount(sprRecFile);
104
111
  if (BasicRecFilesCache.DEBUG)
105
112
  console.debug("Rec. files cache: Added. Cache samples: " + this._sampleCount);
@@ -118,7 +125,7 @@ export class SprItemsCache extends BasicRecFilesCache {
118
125
  if (BasicRecFilesCache.DEBUG)
119
126
  console.debug("Rec. files cache: Set audio data added new sample count: " + newSampleCnt + ". Cache samples: " + this._sampleCount);
120
127
  let fl = adh?.frameLen;
121
- if (fl) {
128
+ if (sprRecFile.frames == null && fl) {
122
129
  sprRecFile.frames = fl;
123
130
  }
124
131
  if (BasicRecFilesCache.DEBUG)
@@ -148,12 +155,18 @@ export class RecFilesCache extends BasicRecFilesCache {
148
155
  }
149
156
  let toBeExpiredRf = this._recFiles[rfI];
150
157
  if (toBeExpiredRf.serverPersisted) {
151
- // expire recording files first stored to the cache
152
- let expiredAudio = RecordingFileUtils.expireAudioData(toBeExpiredRf);
153
- if (expiredAudio) {
154
- this._sampleCount -= expiredAudio.sampleCounts();
158
+ if (!RecordingFileUtils.equals(toBeExpiredRf, this.currentRecordingFile)) {
159
+ // expire recording files first stored to the cache
160
+ let expiredSamples = RecordingFileUtils.expireAudioData(toBeExpiredRf);
161
+ this._sampleCount -= expiredSamples;
162
+ if (expiredSamples > 0) {
163
+ if (BasicRecFilesCache.DEBUG)
164
+ console.debug("Rec. files cache: Expired #" + rfI + ". Cache samples: " + this._sampleCount);
165
+ }
166
+ }
167
+ else {
155
168
  if (BasicRecFilesCache.DEBUG)
156
- console.debug("Rec. files cache: Expired #" + rfI + ". Cache samples: " + this._sampleCount);
169
+ console.debug("Rec. files cache: #" + rfI + " is current file. (not expiring)");
157
170
  }
158
171
  }
159
172
  else {
@@ -179,4 +192,4 @@ export class RecFilesCache extends BasicRecFilesCache {
179
192
  console.debug("Rec. files cache: Set audio data. Cache samples: " + this._sampleCount);
180
193
  }
181
194
  }
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nX2ZpbGVfY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdfZmlsZV9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGtCQUFrQixFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUlqRixNQUFNLE9BQU8sa0JBQWtCO0lBQS9CO1FBSUUsMEVBQTBFO1FBRWhFLGlCQUFZLEdBQVEsQ0FBQyxDQUFDO1FBQ2hDLG1CQUFjLEdBQVEsYUFBYSxDQUFDLG1CQUFtQixDQUFDO1FBQ2pELHlCQUFvQixHQUFvQixJQUFJLENBQUM7SUFDdEQsQ0FBQzs7QUFSd0Isd0JBQUssR0FBQyxLQUFLLENBQUM7QUFDWixzQ0FBbUIsR0FBQyxFQUFFLEdBQUMsRUFBRSxHQUFDLEtBQUssQ0FBQyxDQUFFLHdCQUF3QjtBQVduRixNQUFNLE9BQU8sYUFBYyxTQUFRLGtCQUFrQjtJQUFyRDs7UUFHWSxXQUFNLEdBQWEsSUFBSSxLQUFLLEVBQVEsQ0FBQztJQThHakQsQ0FBQztJQTVHRyxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFTO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTTtRQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUdPLFNBQVMsQ0FBQyxhQUE4QjtRQUM5QyxJQUFHLGtCQUFrQixDQUFDLEtBQUs7WUFBQyxPQUFPLENB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QUM7SUFFRCxVQUFVLENBQUMsT0FBcUI7UUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksSUFBSSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0QsSUFBRyxrQkFBa0IsQ0FBQyxLQUFLO1lBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsR0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQXFCLEVBQUUsR0FBd0I7UUFDakUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFlBQVksSUFBRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0Qsa0JBQWtCLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWSxJQUFFLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRCxJQUFHLGtCQUFrQixDQUFDLEtBQUs7WUFBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxHQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlY29yZGluZ0ZpbGUsIFJlY29yZGluZ0ZpbGVVdGlscywgU3ByUmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uL3JlY29yZGluZ1wiO1xyXG5pbXBvcnQge0l0ZW19IGZyb20gXCIuL2l0ZW1cIjtcclxuaW1wb3J0IHtBdWRpb0RhdGFIb2xkZXJ9IGZyb20gXCIuLi8uLi9hdWRpby9hdWRpb19kYXRhX2hvbGRlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEJhc2ljUmVjRmlsZXNDYWNoZSB7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUJVRz1mYWxzZTtcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX1NBTVBMRVM9MTAqNjAqNDgwMDA7ICAvLyAyMCBNaW51dGVzIG1vbm8gNDhrSHpcclxuXHJcbiAgLy9wdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX1NBTVBMRVM9MzAqNDgwMDA7ICAvLyBURVNUIDMwIHNlY29uZHNcclxuXHJcbiAgcHJvdGVjdGVkIF9zYW1wbGVDb3VudDpudW1iZXI9MDtcclxuICBtYXhTYW1wbGVDb3VudDpudW1iZXI9U3BySXRlbXNDYWNoZS5ERUZBVUxUX01BWF9TQU1QTEVTO1xyXG4gIHB1YmxpYyBjdXJyZW50UmVjb3JkaW5nRmlsZTpSZWNvcmRpbmdGaWxlfG51bGw9bnVsbDtcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU3BySXRlbXNDYWNoZSBleHRlbmRzIEJhc2ljUmVjRmlsZXNDYWNoZXtcclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfaXRlbXM6QXJyYXk8SXRlbT49bmV3IEFycmF5PEl0ZW0+KCk7XHJcblxyXG4gICAgZ2V0IGl0ZW1zKCk6IEFycmF5PEl0ZW0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkSXRlbShpdGVtOkl0ZW0pe1xyXG4gICAgICAgIHRoaXMuX2l0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbShpbmRleDpudW1iZXIpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtc1tpbmRleF07XHJcbiAgICB9XHJcblxyXG4gICAgbGVuZ3RoKCk6bnVtYmVye1xyXG4gICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmxlbmd0aDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSB0cnlFeHBpcmUodG9CZUV4cGlyZWRSZjpTcHJSZWNvcmRpbmdGaWxlKXtcclxuICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKStcIiB0cnkgZXhwaXJlOlwiKTtcclxuICAgICAgaWYoIXRvQmVFeHBpcmVkUmYuZXF1YWxzKHRoaXMuY3VycmVudFJlY29yZGluZ0ZpbGUpKSB7XHJcbiAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKStcIiBub3QgY3VycmVudCBmaWxlLi4uXCIpO1xyXG4gICAgICAgIGlmICh0b0JlRXhwaXJlZFJmLnNlcnZlclBlcnNpc3RlZCkge1xyXG4gICAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKStcIiBpcyBzZXJ2ZXIgcGVyc2lzdGVkLi4uXCIpO1xyXG4gICAgICAgICAgLy8gZXhwaXJlIHJlY29yZGluZyBmaWxlcyBmaXJzdCBzdG9yZWQgdG8gdGhlIGNhY2hlXHJcbiAgICAgICAgICBsZXQgZXhwaXJlZEF1ZGlvID0gUmVjb3JkaW5nRmlsZVV0aWxzLmV4cGlyZUF1ZGlvRGF0YSh0b0JlRXhwaXJlZFJmKTtcclxuICAgICAgICAgIGlmIChleHBpcmVkQXVkaW8pIHtcclxuICAgICAgICAgICAgdGhpcy5fc2FtcGxlQ291bnQgLT0gZXhwaXJlZEF1ZGlvLnNhbXBsZUNvdW50cygpO1xyXG4gICAgICAgICAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEV4cGlyZWQ6IFwiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpK1wiLiBDYWNoZSBzYW1wbGVzIG5vdzogXCIgKyB0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogI1wiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpICsgXCIgbm90IHlldCBwZXJzaXN0ZWQgb24gc2VydmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogXCIgKyB0b0JlRXhwaXJlZFJmLnRvU3RyaW5nKCkrXCIgaXMgY3VycmVudCBmaWxlLlwiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICBwcml2YXRlIGV4cGlyZSgpIHtcclxuICAgIC8vIGV4cGlyZSBjb3JyZWN0ZWQgdmVyc2lvbnMgZmlyc3RcclxuICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogRXhwaXJlPyBjdXJyZW50OiBcIit0aGlzLl9zYW1wbGVDb3VudCtcIiwgbWF4OiBcIit0aGlzLm1heFNhbXBsZUNvdW50KTtcclxuICAgIGlmICh0aGlzLl9zYW1wbGVDb3VudCA+IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuXHJcbiAgICAgIC8vIGV4cGlyZSBvbGRlciB2ZXJzaW9ucyBvZiBhbiBpdGVtIGZpcnN0XHJcbiAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7IGlpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPD0gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBpdCA9IHRoaXMuX2l0ZW1zW2lpXTtcclxuICAgICAgICBsZXQgaXRSZnMgPSBpdC5yZWNzO1xyXG5cclxuICAgICAgICBpZiAoaXRSZnMgJiYgaXRSZnMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcmZpID0gMDsgcmZpIDwgaXRSZnMubGVuZ3RoIC0gMTsgcmZpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdG9CZUV4cGlyZWRSZiA9IGl0UmZzW3JmaV07XHJcbiAgICAgICAgICAgIHRoaXMudHJ5RXhwaXJlKHRvQmVFeHBpcmVkUmYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gaWYgdGhhdCdzIG5vdCBzdWZmaWNpZW50IGV4cGlyZSBhdWRpbyBkYXRhIG9mIGxhdGVzdCB2ZXJzaW9ucyBhcyB3ZWxsXHJcbiAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7IGlpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPD0gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBpdCA9IHRoaXMuX2l0ZW1zW2lpXTtcclxuICAgICAgICBsZXQgaXRSZnMgPSBpdC5yZWNzO1xyXG5cclxuICAgICAgICBpZiAoaXRSZnMgJiYgaXRSZnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcmZpID0gMDsgcmZpIDwgaXRSZnMubGVuZ3RoOyByZmkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPD0gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB0b0JlRXhwaXJlZFJmID0gaXRSZnNbcmZpXTtcclxuICAgICAgICAgICAgdGhpcy50cnlFeHBpcmUodG9CZUV4cGlyZWRSZik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRTcHJSZWNGaWxlKGl0ZW06SXRlbSxzcHJSZWNGaWxlOlNwclJlY29yZGluZ0ZpbGUpe1xyXG4gICAgdGhpcy5leHBpcmUoKTtcclxuICAgIGlmKCFpdGVtLnJlY3MpIHtcclxuICAgICAgaXRlbS5yZWNzPW5ldyBBcnJheTxTcHJSZWNvcmRpbmdGaWxlPigpO1xyXG4gICAgfVxyXG4gICAgaXRlbS5yZWNzLnB1c2goc3ByUmVjRmlsZSk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCArPSBSZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQoc3ByUmVjRmlsZSk7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEFkZGVkLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgfVxyXG5cclxuICBzZXRTcHJSZWNGaWxlQXVkaW9EYXRhKHNwclJlY0ZpbGU6U3ByUmVjb3JkaW5nRmlsZSwgYWRoOkF1ZGlvRGF0YUhvbGRlcnxudWxsKXtcclxuICAgIHRoaXMuZXhwaXJlKCk7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFNldCBhdWRpbyBkYXRhIGFmdGVyIGV4cGlyZS4gQ2FjaGUgc2FtcGxlczogXCIrdGhpcy5fc2FtcGxlQ291bnQpO1xyXG4gICAgbGV0IGN1cnJTYW1wbGVDbnQ9UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHNwclJlY0ZpbGUpO1xyXG4gICAgdGhpcy5fc2FtcGxlQ291bnQtPWN1cnJTYW1wbGVDbnQ7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFNldCBhdWRpbyBkYXRhIHN1YnRyYWN0ZWQgY3VyciBzYW1wbGUgY291bnQ6IFwiK2N1cnJTYW1wbGVDbnQrXCIuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgIFJlY29yZGluZ0ZpbGVVdGlscy5zZXRBdWRpb0RhdGEoc3ByUmVjRmlsZSxhZGgpO1xyXG4gICAgbGV0IG5ld1NhbXBsZUNudD1SZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQoc3ByUmVjRmlsZSk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCs9bmV3U2FtcGxlQ250O1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBTZXQgYXVkaW8gZGF0YSBhZGRlZCBuZXcgc2FtcGxlIGNvdW50OiBcIituZXdTYW1wbGVDbnQrXCIuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgIGxldCBmbD1hZGg/LmZyYW1lTGVuO1xyXG4gICAgaWYoZmwpe1xyXG4gICAgICBzcHJSZWNGaWxlLmZyYW1lcz1mbDtcclxuICAgIH1cclxuICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogU2V0IGF1ZGlvIGRhdGEuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUmVjRmlsZXNDYWNoZSBleHRlbmRzIEJhc2ljUmVjRmlsZXNDYWNoZXtcclxuXHJcbiAgcHJpdmF0ZSBfcmVjRmlsZXM6QXJyYXk8UmVjb3JkaW5nRmlsZT49bmV3IEFycmF5PFJlY29yZGluZ0ZpbGU+KCk7XHJcblxyXG4gIGdldCByZWNGaWxlcygpOiBBcnJheTxSZWNvcmRpbmdGaWxlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVjRmlsZXM7XHJcbiAgfVxyXG5cclxuICBnZXRSZWNGaWxlKGluZGV4Om51bWJlcil7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVjRmlsZXNbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgbGVuZ3RoKCk6bnVtYmVye1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY0ZpbGVzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwaXJlKCkge1xyXG4gICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50ID4gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAvLyBhdWRpbyByZWNvcmRlciBsaXN0IGlzIHNvcnRlZDogbG93ZXIgaW5kZXggaXMgbmV3ZXJcclxuICAgICAgZm9yIChsZXQgcmZJID0gdGhpcy5fcmVjRmlsZXMubGVuZ3RoLTE7IHJmSSA+PTA7IHJmSS0tKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdG9CZUV4cGlyZWRSZiA9IHRoaXMuX3JlY0ZpbGVzW3JmSV07XHJcbiAgICAgICAgaWYgKHRvQmVFeHBpcmVkUmYuc2VydmVyUGVyc2lzdGVkKSB7XHJcbiAgICAgICAgICAvLyBleHBpcmUgcmVjb3JkaW5nIGZpbGVzIGZpcnN0IHN0b3JlZCB0byB0aGUgY2FjaGVcclxuICAgICAgICAgIGxldCBleHBpcmVkQXVkaW8gPSBSZWNvcmRpbmdGaWxlVXRpbHMuZXhwaXJlQXVkaW9EYXRhKHRvQmVFeHBpcmVkUmYpO1xyXG4gICAgICAgICAgaWYgKGV4cGlyZWRBdWRpbykge1xyXG4gICAgICAgICAgICB0aGlzLl9zYW1wbGVDb3VudCAtPSBleHBpcmVkQXVkaW8uc2FtcGxlQ291bnRzKCk7XHJcbiAgICAgICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogRXhwaXJlZCAjXCIrcmZJK1wiLiBDYWNoZSBzYW1wbGVzOiBcIiArIHRoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogI1wiK3JmSStcIiBub3QgeWV0IHNlcnZlciBwZXJzaXN0ZWQuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkUmVjRmlsZShyZWNGaWxlOlJlY29yZGluZ0ZpbGUpe1xyXG4gICAgdGhpcy5leHBpcmUoKTtcclxuICAgIHRoaXMuX3JlY0ZpbGVzLnB1c2gocmVjRmlsZSk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCArPSBSZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQocmVjRmlsZSk7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEFkZGVkLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgfVxyXG5cclxuICBzZXRSZWNGaWxlQXVkaW9EYXRhKHJlY0ZpbGU6UmVjb3JkaW5nRmlsZSwgYWRoOkF1ZGlvRGF0YUhvbGRlcnxudWxsKXtcclxuICAgIHRoaXMuZXhwaXJlKCk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudC09UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHJlY0ZpbGUpO1xyXG4gICAgUmVjb3JkaW5nRmlsZVV0aWxzLnNldEF1ZGlvRGF0YShyZWNGaWxlLGFkaCk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCs9UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHJlY0ZpbGUpO1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBTZXQgYXVkaW8gZGF0YS4gQ2FjaGUgc2FtcGxlczogXCIrdGhpcy5fc2FtcGxlQ291bnQpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nX2ZpbGVfY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdfZmlsZV9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGtCQUFrQixFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUlqRixNQUFNLE9BQWdCLGtCQUFrQjtJQUF4QztRQUtFLDBFQUEwRTtRQUVoRSxpQkFBWSxHQUFRLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFRLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDO1FBQ3JELDBCQUFxQixHQUFvQixJQUFJLENBQUM7SUFXeEQsQ0FBQztJQVJDLElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLG9CQUFvQixDQUFDLEtBQTJCO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7O0FBakJzQix3QkFBSyxHQUFDLEtBQUssQ0FBQztBQUNaLHNDQUFtQixHQUFDLEVBQUUsR0FBQyxFQUFFLEdBQUMsS0FBSyxDQUFDLENBQUUsd0JBQXdCO0FBcUJuRixNQUFNLE9BQU8sYUFBYyxTQUFRLGtCQUFrQjtJQUFyRDs7UUFHWSxXQUFNLEdBQWEsSUFBSSxLQUFLLEVBQVEsQ0FBQztJQThHakQsQ0FBQztJQTVHRyxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFTO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2hC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QyxPQUFPLENBQUMsQ0FBQztRQUMzRCxJQUFHLGtCQUFrQixDQUFDLEtBQUs7WUFBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxHQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlY29yZGluZ0ZpbGUsIFJlY29yZGluZ0ZpbGVVdGlscywgU3ByUmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uL3JlY29yZGluZ1wiO1xyXG5pbXBvcnQge0l0ZW19IGZyb20gXCIuL2l0ZW1cIjtcclxuaW1wb3J0IHtBdWRpb0RhdGFIb2xkZXJ9IGZyb20gXCIuLi8uLi9hdWRpby9hdWRpb19kYXRhX2hvbGRlclwiO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2ljUmVjRmlsZXNDYWNoZSB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVCVUc9ZmFsc2U7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX01BWF9TQU1QTEVTPTEwKjYwKjQ4MDAwOyAgLy8gMTAgTWludXRlcyBtb25vIDQ4a0h6XHJcblxyXG4gIC8vcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX01BWF9TQU1QTEVTPTMwKjQ4MDAwOyAgLy8gVEVTVCAzMCBzZWNvbmRzXHJcblxyXG4gIHByb3RlY3RlZCBfc2FtcGxlQ291bnQ6bnVtYmVyPTA7XHJcbiAgbWF4U2FtcGxlQ291bnQ6bnVtYmVyPUJhc2ljUmVjRmlsZXNDYWNoZS5ERUZBVUxUX01BWF9TQU1QTEVTO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRSZWNvcmRpbmdGaWxlOlJlY29yZGluZ0ZpbGV8bnVsbD1udWxsO1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBleHBpcmUoKTp2b2lkO1xyXG5cclxuICBnZXQgY3VycmVudFJlY29yZGluZ0ZpbGUoKTogUmVjb3JkaW5nRmlsZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRSZWNvcmRpbmdGaWxlO1xyXG4gIH1cclxuXHJcbiAgc2V0IGN1cnJlbnRSZWNvcmRpbmdGaWxlKHZhbHVlOiBSZWNvcmRpbmdGaWxlIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fY3VycmVudFJlY29yZGluZ0ZpbGUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZXhwaXJlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBTcHJJdGVtc0NhY2hlIGV4dGVuZHMgQmFzaWNSZWNGaWxlc0NhY2hle1xyXG5cclxuXHJcbiAgICBwcml2YXRlIF9pdGVtczpBcnJheTxJdGVtPj1uZXcgQXJyYXk8SXRlbT4oKTtcclxuXHJcbiAgICBnZXQgaXRlbXMoKTogQXJyYXk8SXRlbT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcztcclxuICAgIH1cclxuXHJcbiAgICBhZGRJdGVtKGl0ZW06SXRlbSl7XHJcbiAgICAgICAgdGhpcy5faXRlbXMucHVzaChpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJdGVtKGluZGV4Om51bWJlcil7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zW2luZGV4XTtcclxuICAgIH1cclxuXHJcbiAgICBsZW5ndGgoKTpudW1iZXJ7XHJcbiAgICAgICByZXR1cm4gdGhpcy5faXRlbXMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIHRyeUV4cGlyZSh0b0JlRXhwaXJlZFJmOlNwclJlY29yZGluZ0ZpbGUpe1xyXG4gICAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFwiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpK1wiIHRyeSBleHBpcmU6XCIpO1xyXG4gICAgICBpZighUmVjb3JkaW5nRmlsZVV0aWxzLmVxdWFscyh0b0JlRXhwaXJlZFJmLHRoaXMuY3VycmVudFJlY29yZGluZ0ZpbGUpKSB7XHJcbiAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKStcIiBub3QgY3VycmVudCBmaWxlLi4uXCIpO1xyXG4gICAgICAgIGlmICh0b0JlRXhwaXJlZFJmLnNlcnZlclBlcnNpc3RlZCkge1xyXG4gICAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKStcIiBpcyBzZXJ2ZXIgcGVyc2lzdGVkLi4uXCIpO1xyXG4gICAgICAgICAgLy8gZXhwaXJlIHJlY29yZGluZyBmaWxlcyBmaXJzdCBzdG9yZWQgdG8gdGhlIGNhY2hlXHJcbiAgICAgICAgICBsZXQgZXhwaXJlZFNhbXBsZXMgPSBSZWNvcmRpbmdGaWxlVXRpbHMuZXhwaXJlQXVkaW9EYXRhKHRvQmVFeHBpcmVkUmYpO1xyXG4gICAgICAgICAgdGhpcy5fc2FtcGxlQ291bnQgLT0gZXhwaXJlZFNhbXBsZXM7XHJcbiAgICAgICAgICBpZihleHBpcmVkU2FtcGxlcz4wKSB7XHJcbiAgICAgICAgICAgIGlmIChCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpIGNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBFeHBpcmVkOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKSArIFwiLiBDYWNoZSBzYW1wbGVzIG5vdzogXCIgKyB0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogI1wiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpICsgXCIgbm90IHlldCBwZXJzaXN0ZWQgb24gc2VydmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogXCIgKyB0b0JlRXhwaXJlZFJmLnRvU3RyaW5nKCkrXCIgaXMgY3VycmVudCBmaWxlLlwiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZXhwaXJlKCkge1xyXG4gICAgLy8gZXhwaXJlIGNvcnJlY3RlZCB2ZXJzaW9ucyBmaXJzdFxyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBFeHBpcmU/IGN1cnJlbnQ6IFwiK3RoaXMuX3NhbXBsZUNvdW50K1wiLCBtYXg6IFwiK3RoaXMubWF4U2FtcGxlQ291bnQpO1xyXG4gICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50ID4gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG5cclxuICAgICAgLy8gZXhwaXJlIG9sZGVyIHZlcnNpb25zIG9mIGFuIGl0ZW0gZmlyc3RcclxuICAgICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8IHRoaXMuX2l0ZW1zLmxlbmd0aDsgaWkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLl9zYW1wbGVDb3VudCA8PSB0aGlzLm1heFNhbXBsZUNvdW50KSB7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGl0ID0gdGhpcy5faXRlbXNbaWldO1xyXG4gICAgICAgIGxldCBpdFJmcyA9IGl0LnJlY3M7XHJcblxyXG4gICAgICAgIGlmIChpdFJmcyAmJiBpdFJmcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCByZmkgPSAwOyByZmkgPCBpdFJmcy5sZW5ndGggLSAxOyByZmkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPD0gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB0b0JlRXhwaXJlZFJmID0gaXRSZnNbcmZpXTtcclxuICAgICAgICAgICAgdGhpcy50cnlFeHBpcmUodG9CZUV4cGlyZWRSZik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBpZiB0aGF0J3Mgbm90IHN1ZmZpY2llbnQgZXhwaXJlIGF1ZGlvIGRhdGEgb2YgbGF0ZXN0IHZlcnNpb25zIGFzIHdlbGxcclxuICAgICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8IHRoaXMuX2l0ZW1zLmxlbmd0aDsgaWkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLl9zYW1wbGVDb3VudCA8PSB0aGlzLm1heFNhbXBsZUNvdW50KSB7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGl0ID0gdGhpcy5faXRlbXNbaWldO1xyXG4gICAgICAgIGxldCBpdFJmcyA9IGl0LnJlY3M7XHJcblxyXG4gICAgICAgIGlmIChpdFJmcyAmJiBpdFJmcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCByZmkgPSAwOyByZmkgPCBpdFJmcy5sZW5ndGg7IHJmaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9zYW1wbGVDb3VudCA8PSB0aGlzLm1heFNhbXBsZUNvdW50KSB7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHRvQmVFeHBpcmVkUmYgPSBpdFJmc1tyZmldO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUV4cGlyZSh0b0JlRXhwaXJlZFJmKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFNwclJlY0ZpbGUoaXRlbTpJdGVtLHNwclJlY0ZpbGU6U3ByUmVjb3JkaW5nRmlsZSl7XHJcbiAgICB0aGlzLmV4cGlyZSgpO1xyXG4gICAgaWYoIWl0ZW0ucmVjcykge1xyXG4gICAgICBpdGVtLnJlY3M9bmV3IEFycmF5PFNwclJlY29yZGluZ0ZpbGU+KCk7XHJcbiAgICB9XHJcbiAgICBpdGVtLnJlY3Nbc3ByUmVjRmlsZS52ZXJzaW9uXT1zcHJSZWNGaWxlO1xyXG4gICAgdGhpcy5fc2FtcGxlQ291bnQgKz0gUmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHNwclJlY0ZpbGUpO1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBBZGRlZC4gQ2FjaGUgc2FtcGxlczogXCIrdGhpcy5fc2FtcGxlQ291bnQpO1xyXG4gIH1cclxuXHJcbiAgc2V0U3ByUmVjRmlsZUF1ZGlvRGF0YShzcHJSZWNGaWxlOlNwclJlY29yZGluZ0ZpbGUsIGFkaDpBdWRpb0RhdGFIb2xkZXJ8bnVsbCl7XHJcbiAgICB0aGlzLmV4cGlyZSgpO1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBTZXQgYXVkaW8gZGF0YSBhZnRlciBleHBpcmUuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgIGxldCBjdXJyU2FtcGxlQ250PVJlY29yZGluZ0ZpbGVVdGlscy5zYW1wbGVDb3VudChzcHJSZWNGaWxlKTtcclxuICAgIHRoaXMuX3NhbXBsZUNvdW50LT1jdXJyU2FtcGxlQ250O1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBTZXQgYXVkaW8gZGF0YSBzdWJ0cmFjdGVkIGN1cnIgc2FtcGxlIGNvdW50OiBcIitjdXJyU2FtcGxlQ250K1wiLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgICBSZWNvcmRpbmdGaWxlVXRpbHMuc2V0QXVkaW9EYXRhKHNwclJlY0ZpbGUsYWRoKTtcclxuICAgIGxldCBuZXdTYW1wbGVDbnQ9UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHNwclJlY0ZpbGUpO1xyXG4gICAgdGhpcy5fc2FtcGxlQ291bnQrPW5ld1NhbXBsZUNudDtcclxuICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogU2V0IGF1ZGlvIGRhdGEgYWRkZWQgbmV3IHNhbXBsZSBjb3VudDogXCIrbmV3U2FtcGxlQ250K1wiLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgICBsZXQgZmw9YWRoPy5mcmFtZUxlbjtcclxuICAgIGlmKHNwclJlY0ZpbGUuZnJhbWVzPT1udWxsICYmIGZsKXtcclxuICAgICAgc3ByUmVjRmlsZS5mcmFtZXM9Zmw7XHJcbiAgICB9XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFNldCBhdWRpbyBkYXRhLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFJlY0ZpbGVzQ2FjaGUgZXh0ZW5kcyBCYXNpY1JlY0ZpbGVzQ2FjaGV7XHJcblxyXG4gIHByaXZhdGUgX3JlY0ZpbGVzOkFycmF5PFJlY29yZGluZ0ZpbGU+PW5ldyBBcnJheTxSZWNvcmRpbmdGaWxlPigpO1xyXG5cclxuICBnZXQgcmVjRmlsZXMoKTogQXJyYXk8UmVjb3JkaW5nRmlsZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY0ZpbGVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVjRmlsZShpbmRleDpudW1iZXIpe1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY0ZpbGVzW2luZGV4XTtcclxuICB9XHJcblxyXG4gIGxlbmd0aCgpOm51bWJlcntcclxuICAgIHJldHVybiB0aGlzLl9yZWNGaWxlcy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZXhwaXJlKCkge1xyXG4gICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50ID4gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAvLyBhdWRpbyByZWNvcmRlciBsaXN0IGlzIHNvcnRlZDogbG93ZXIgaW5kZXggaXMgbmV3ZXJcclxuICAgICAgZm9yIChsZXQgcmZJID0gdGhpcy5fcmVjRmlsZXMubGVuZ3RoLTE7IHJmSSA+PTA7IHJmSS0tKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdG9CZUV4cGlyZWRSZiA9IHRoaXMuX3JlY0ZpbGVzW3JmSV07XHJcbiAgICAgICAgaWYgKHRvQmVFeHBpcmVkUmYuc2VydmVyUGVyc2lzdGVkKSB7XHJcbiAgICAgICAgICBpZighUmVjb3JkaW5nRmlsZVV0aWxzLmVxdWFscyh0b0JlRXhwaXJlZFJmLHRoaXMuY3VycmVudFJlY29yZGluZ0ZpbGUpKSB7XHJcbiAgICAgICAgICAgIC8vIGV4cGlyZSByZWNvcmRpbmcgZmlsZXMgZmlyc3Qgc3RvcmVkIHRvIHRoZSBjYWNoZVxyXG4gICAgICAgICAgICBsZXQgZXhwaXJlZFNhbXBsZXMgPSBSZWNvcmRpbmdGaWxlVXRpbHMuZXhwaXJlQXVkaW9EYXRhKHRvQmVFeHBpcmVkUmYpO1xyXG4gICAgICAgICAgICB0aGlzLl9zYW1wbGVDb3VudCAtPSBleHBpcmVkU2FtcGxlcztcclxuICAgICAgICAgICAgaWYoZXhwaXJlZFNhbXBsZXM+MCkge1xyXG4gICAgICAgICAgICAgIGlmIChCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpIGNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBFeHBpcmVkICNcIiArIHJmSSArIFwiLiBDYWNoZSBzYW1wbGVzOiBcIiArIHRoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogI1wiK3JmSStcIiBpcyBjdXJyZW50IGZpbGUuIChub3QgZXhwaXJpbmcpXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiAjXCIrcmZJK1wiIG5vdCB5ZXQgc2VydmVyIHBlcnNpc3RlZC5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRSZWNGaWxlKHJlY0ZpbGU6UmVjb3JkaW5nRmlsZSl7XHJcbiAgICB0aGlzLmV4cGlyZSgpO1xyXG4gICAgdGhpcy5fcmVjRmlsZXMucHVzaChyZWNGaWxlKTtcclxuICAgIHRoaXMuX3NhbXBsZUNvdW50ICs9IFJlY29yZGluZ0ZpbGVVdGlscy5zYW1wbGVDb3VudChyZWNGaWxlKTtcclxuICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogQWRkZWQuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICB9XHJcblxyXG4gIHNldFJlY0ZpbGVBdWRpb0RhdGEocmVjRmlsZTpSZWNvcmRpbmdGaWxlLCBhZGg6QXVkaW9EYXRhSG9sZGVyfG51bGwpe1xyXG4gICAgdGhpcy5leHBpcmUoKTtcclxuICAgIHRoaXMuX3NhbXBsZUNvdW50LT1SZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQocmVjRmlsZSk7XHJcbiAgICBSZWNvcmRpbmdGaWxlVXRpbHMuc2V0QXVkaW9EYXRhKHJlY0ZpbGUsYWRoKTtcclxuICAgIHRoaXMuX3NhbXBsZUNvdW50Kz1SZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQocmVjRmlsZSk7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFNldCBhdWRpbyBkYXRhLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
@@ -3,10 +3,10 @@ import { MediaUtils } from "../../media/utils";
3
3
  import { MatTableDataSource } from "@angular/material/table";
4
4
  import { RecFilesCache } from "./recording_file_cache";
5
5
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/card";
7
- import * as i2 from "@angular/material/table";
8
- import * as i3 from "@angular/material/button";
9
- import * as i4 from "@angular/material/icon";
6
+ import * as i1 from "@angular/material/icon";
7
+ import * as i2 from "@angular/material/button";
8
+ import * as i3 from "@angular/material/card";
9
+ import * as i4 from "@angular/material/table";
10
10
  import * as i5 from "../../utils/scrollIntoViewToBottom";
11
11
  import * as i6 from "@angular/common";
12
12
  export class RecordingList {
@@ -77,66 +77,103 @@ export class RecordingList {
77
77
  }
78
78
  return str;
79
79
  }
80
+ recordingFileCached(rf) {
81
+ let cached = null;
82
+ if (rf && rf.serverPersisted) {
83
+ cached = (rf.audioDataHolder != null);
84
+ }
85
+ return cached;
86
+ }
80
87
  }
81
- RecordingList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RecordingList, deps: [], target: i0.ɵɵFactoryTarget.Component });
82
- RecordingList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: RecordingList, selector: "app-recordinglist", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, ngImport: i0, template: `
88
+ RecordingList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingList, deps: [], target: i0.ɵɵFactoryTarget.Component });
89
+ RecordingList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingList, selector: "app-recordinglist", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, ngImport: i0, template: `
83
90
  <mat-card>
84
- <mat-card-header>
85
- <h2>Recording list</h2>
86
- </mat-card-header>
91
+ <mat-card-header>
92
+ <h2>Recording list</h2>
93
+ </mat-card-header>
87
94
  <mat-card-content>
88
- <table mat-table [dataSource]="recordingListDataSource" class="mat-elevation-z0">
89
- <tr mat-header-row *matHeaderRowDef="cols;sticky:true"></tr>
90
- <tr mat-row *matRowDef="let element; columns: cols;" [scrollIntoViewToBottom]="element.uuid===selectedRecordingFile?.uuid"></tr>
91
- <ng-container matColumnDef="index">
92
- <th mat-header-cell *matHeaderCellDef mat-header>#</th>
93
- <td mat-cell class="monospaced" *matCellDef="let element;let i = index">{{recordingListDataSource.data.length-i}}</td>
94
- </ng-container>
95
- <ng-container matColumnDef="startedDate">
96
- <th mat-header-cell *matHeaderCellDef mat-header>Started</th>
97
- <td mat-cell class="monospaced" *matCellDef="let element">{{element.startedDate | date:'YYYY-MM-dd HH:mm:ss'}}</td>
98
- </ng-container>
99
- <ng-container matColumnDef="length">
100
- <th mat-header-cell *matHeaderCellDef mat-header>Length</th>
101
- <td mat-cell class="monospaced" *matCellDef="let element">{{lengthTimeFormatted(element)}}</td>
102
- </ng-container>
103
- <ng-container matColumnDef="action">
104
- <th mat-header-cell *matHeaderCellDef>Action</th>
105
- <td mat-cell *matCellDef="let element"><button mat-stroked-button color="primary" (click)="selectRecordingFile(element)" [disabled]="selectDisabled || element.uuid===selectedRecordingFile?.uuid"><mat-icon>edit_attributes</mat-icon> Select</button></td>
106
- </ng-container>
107
- </table>
95
+ <table mat-table [dataSource]="recordingListDataSource" class="mat-elevation-z0">
96
+ <tr mat-header-row *matHeaderRowDef="cols;sticky:true"></tr>
97
+ <tr mat-row *matRowDef="let element; columns: cols;"
98
+ [scrollIntoViewToBottom]="element.uuid===selectedRecordingFile?.uuid" [class.selected]="element.uuid===selectedRecordingFile?.uuid"></tr>
99
+ <ng-container matColumnDef="index">
100
+ <th mat-header-cell *matHeaderCellDef mat-header>#</th>
101
+ <td mat-cell class="monospaced"
102
+ *matCellDef="let element;let i = index">{{recordingListDataSource.data.length - i}}</td>
103
+ </ng-container>
104
+ <ng-container matColumnDef="startedDate">
105
+ <th mat-header-cell *matHeaderCellDef mat-header>Started</th>
106
+ <td mat-cell class="monospaced"
107
+ *matCellDef="let element">{{element.startedDate | date:'YYYY-MM-dd HH:mm:ss'}}</td>
108
+ </ng-container>
109
+ <ng-container matColumnDef="length">
110
+ <th mat-header-cell *matHeaderCellDef mat-header>Length</th>
111
+ <td mat-cell class="monospaced" *matCellDef="let element">{{lengthTimeFormatted(element)}}</td>
112
+ </ng-container>
113
+ <ng-container matColumnDef="action">
114
+ <th mat-header-cell *matHeaderCellDef>Action</th>
115
+ <td mat-cell *matCellDef="let element">
116
+ <!--
117
+ <mat-icon *ngIf="recordingFileCached(element)===false" style="font-size:0.8em;width:0.8em;height:0.8em">
118
+ cloud_download
119
+ </mat-icon>
120
+ -->
121
+ <button mat-stroked-button color="primary" (click)="selectRecordingFile(element)"
122
+ [disabled]="selectDisabled || element.uuid===selectedRecordingFile?.uuid">
123
+ <mat-icon>edit_attributes</mat-icon>
124
+ Select
125
+ </button>
126
+
127
+ </td>
128
+ </ng-container>
129
+ </table>
108
130
  </mat-card-content>
109
131
  </mat-card>
110
132
 
111
- `, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"], components: [{ type: i1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i1.MatCardHeader, selector: "mat-card-header" }, { type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i5.ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }, { type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i2.MatCellDef, selector: "[matCellDef]" }, { type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }], pipes: { "date": i6.DatePipe } });
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RecordingList, decorators: [{
133
+ `, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"], dependencies: [{ kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i5.ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingList, decorators: [{
113
135
  type: Component,
114
136
  args: [{ selector: 'app-recordinglist', template: `
115
137
  <mat-card>
116
- <mat-card-header>
117
- <h2>Recording list</h2>
118
- </mat-card-header>
138
+ <mat-card-header>
139
+ <h2>Recording list</h2>
140
+ </mat-card-header>
119
141
  <mat-card-content>
120
- <table mat-table [dataSource]="recordingListDataSource" class="mat-elevation-z0">
121
- <tr mat-header-row *matHeaderRowDef="cols;sticky:true"></tr>
122
- <tr mat-row *matRowDef="let element; columns: cols;" [scrollIntoViewToBottom]="element.uuid===selectedRecordingFile?.uuid"></tr>
123
- <ng-container matColumnDef="index">
124
- <th mat-header-cell *matHeaderCellDef mat-header>#</th>
125
- <td mat-cell class="monospaced" *matCellDef="let element;let i = index">{{recordingListDataSource.data.length-i}}</td>
126
- </ng-container>
127
- <ng-container matColumnDef="startedDate">
128
- <th mat-header-cell *matHeaderCellDef mat-header>Started</th>
129
- <td mat-cell class="monospaced" *matCellDef="let element">{{element.startedDate | date:'YYYY-MM-dd HH:mm:ss'}}</td>
130
- </ng-container>
131
- <ng-container matColumnDef="length">
132
- <th mat-header-cell *matHeaderCellDef mat-header>Length</th>
133
- <td mat-cell class="monospaced" *matCellDef="let element">{{lengthTimeFormatted(element)}}</td>
134
- </ng-container>
135
- <ng-container matColumnDef="action">
136
- <th mat-header-cell *matHeaderCellDef>Action</th>
137
- <td mat-cell *matCellDef="let element"><button mat-stroked-button color="primary" (click)="selectRecordingFile(element)" [disabled]="selectDisabled || element.uuid===selectedRecordingFile?.uuid"><mat-icon>edit_attributes</mat-icon> Select</button></td>
138
- </ng-container>
139
- </table>
142
+ <table mat-table [dataSource]="recordingListDataSource" class="mat-elevation-z0">
143
+ <tr mat-header-row *matHeaderRowDef="cols;sticky:true"></tr>
144
+ <tr mat-row *matRowDef="let element; columns: cols;"
145
+ [scrollIntoViewToBottom]="element.uuid===selectedRecordingFile?.uuid" [class.selected]="element.uuid===selectedRecordingFile?.uuid"></tr>
146
+ <ng-container matColumnDef="index">
147
+ <th mat-header-cell *matHeaderCellDef mat-header>#</th>
148
+ <td mat-cell class="monospaced"
149
+ *matCellDef="let element;let i = index">{{recordingListDataSource.data.length - i}}</td>
150
+ </ng-container>
151
+ <ng-container matColumnDef="startedDate">
152
+ <th mat-header-cell *matHeaderCellDef mat-header>Started</th>
153
+ <td mat-cell class="monospaced"
154
+ *matCellDef="let element">{{element.startedDate | date:'YYYY-MM-dd HH:mm:ss'}}</td>
155
+ </ng-container>
156
+ <ng-container matColumnDef="length">
157
+ <th mat-header-cell *matHeaderCellDef mat-header>Length</th>
158
+ <td mat-cell class="monospaced" *matCellDef="let element">{{lengthTimeFormatted(element)}}</td>
159
+ </ng-container>
160
+ <ng-container matColumnDef="action">
161
+ <th mat-header-cell *matHeaderCellDef>Action</th>
162
+ <td mat-cell *matCellDef="let element">
163
+ <!--
164
+ <mat-icon *ngIf="recordingFileCached(element)===false" style="font-size:0.8em;width:0.8em;height:0.8em">
165
+ cloud_download
166
+ </mat-icon>
167
+ -->
168
+ <button mat-stroked-button color="primary" (click)="selectRecordingFile(element)"
169
+ [disabled]="selectDisabled || element.uuid===selectedRecordingFile?.uuid">
170
+ <mat-icon>edit_attributes</mat-icon>
171
+ Select
172
+ </button>
173
+
174
+ </td>
175
+ </ng-container>
176
+ </table>
140
177
  </mat-card-content>
141
178
  </mat-card>
142
179
 
@@ -148,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
148
185
  }], selectedRecordingFile: [{
149
186
  type: Input
150
187
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nX2xpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdfbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFXLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFckUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQTZEckQsTUFBTSxPQUFPLGFBQWE7SUFXeEI7UUFWQSx3RUFBd0U7UUFDaEUsa0JBQWEsR0FBZSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBR3hELDBEQUEwRDtRQUMxRCxTQUFJLEdBQUMsQ0FBQyxPQUFPLEVBQUMsYUFBYSxFQUFDLFFBQVEsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxtQkFBYyxHQUFTLEtBQUssQ0FBQztRQUM1QixpQ0FBNEIsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNsRSwwQkFBcUIsR0FBb0IsSUFBSSxDQUFDO1FBR3JELElBQUksQ0FBQyx1QkFBdUIsR0FBQyxJQUFJLGtCQUFrQixFQUFpQixDQUFDO0lBQ3ZFLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxJQUFJLEdBQUcsR0FBUSxDQUFDLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQVcsSUFB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OztHQTZCVDswRUFnQ1EsY0FBYztzQkFBdEIsS0FBSztnQkFDSSw0QkFBNEI7c0JBQXJDLE1BQU07Z0JBQ0UscUJBQXFCO3NCQUE3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtSZWNvcmRpbmdGaWxlLCBTcHJSZWNvcmRpbmdGaWxlfSBmcm9tIFwiLi4vcmVjb3JkaW5nXCI7XHJcbmltcG9ydCB7TWVkaWFVdGlsc30gZnJvbSBcIi4uLy4uL21lZGlhL3V0aWxzXCI7XHJcbmltcG9ydCB7TWF0VGFibGUsIE1hdFRhYmxlRGF0YVNvdXJjZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYmxlXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtSZWNGaWxlc0NhY2hlfSBmcm9tIFwiLi9yZWNvcmRpbmdfZmlsZV9jYWNoZVwiO1xyXG5pbXBvcnQge0F1ZGlvRGF0YUhvbGRlcn0gZnJvbSBcIi4uLy4uL2F1ZGlvL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVjb3JkaW5nbGlzdCcsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LWNhcmQ+XHJcbiAgICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgIDxoMj5SZWNvcmRpbmcgbGlzdDwvaDI+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZWNvcmRpbmdMaXN0RGF0YVNvdXJjZVwiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MFwiPlxyXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHM7c3RpY2t5OnRydWVcIj48L3RyPlxyXG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IGVsZW1lbnQ7IGNvbHVtbnM6IGNvbHM7XCIgW3Njcm9sbEludG9WaWV3VG9Cb3R0b21dPVwiZWxlbWVudC51dWlkPT09c2VsZWN0ZWRSZWNvcmRpbmdGaWxlPy51dWlkXCI+PC90cj5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpbmRleFwiPlxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LWhlYWRlcj4jPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJtb25vc3BhY2VkXCIgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDtsZXQgaSA9IGluZGV4XCI+e3tyZWNvcmRpbmdMaXN0RGF0YVNvdXJjZS5kYXRhLmxlbmd0aC1pfX08L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGFydGVkRGF0ZVwiPlxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LWhlYWRlcj5TdGFydGVkPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJtb25vc3BhY2VkXCIgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7ZWxlbWVudC5zdGFydGVkRGF0ZSB8IGRhdGU6J1lZWVktTU0tZGQgSEg6bW06c3MnfX08L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsZW5ndGhcIj5cclxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXI+TGVuZ3RoPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJtb25vc3BhY2VkXCIgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7bGVuZ3RoVGltZUZvcm1hdHRlZChlbGVtZW50KX19PC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5BY3Rpb248L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+PGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNlbGVjdFJlY29yZGluZ0ZpbGUoZWxlbWVudClcIiBbZGlzYWJsZWRdPVwic2VsZWN0RGlzYWJsZWQgfHwgZWxlbWVudC51dWlkPT09c2VsZWN0ZWRSZWNvcmRpbmdGaWxlPy51dWlkXCI+PG1hdC1pY29uPmVkaXRfYXR0cmlidXRlczwvbWF0LWljb24+IFNlbGVjdDwvYnV0dG9uPjwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC90YWJsZT5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgYCxcclxuICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcclxuICAgIHdpZHRoOiAxMDAlOyAvKiB1c2UgYWxsIGhvcml6b250YWwgYXZhaWxhYmxlIHNwYWNlICovXHJcbiAgICBmbGV4OiAxOyAvKiAuLi4gYW5kIGZpbGwgcmVzdCBvZiB2ZXJ0aWNhbCBhdmFpbGFibGUgc3BhY2UgKG90aGVyIGNvbXBvbmVudHMgaGF2ZSBmbGV4IDApICovXHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG5cclxuICAgIC8qIFdvcmthcm91bmQgZm9yIEZpcmVmb3hcclxuICAgIElmIHRoZSBwcm9ncmVzcyB0YWJsZSBnZXRzIGxvbmcgKHNjcmlwdCB3aXRoIG1hbnkgaXRlbXMpIEZGIGluY3JlYXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBvdmVyZmxvdyBwcm9ncmVzc0NvbnRhaW5lciBhbmRcclxuICAgIHRoZSB3aG9sZSBhcHAgZG9lcyBub3QgZml0IGludG8gdGhlIHBhZ2UgYW55bW9yZS4gVGhlIGFwcCBvdmVyZmxvd3MgYW5kIHNob3dzIGEgdmVydGljYWwgc2Nyb2xsYmFyIGZvciB0aGUgd2hvbGUgYXBwLlxyXG4gICAgU2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjg2MzY4MzIvZmlyZWZveC1vdmVyZmxvdy15LW5vdC13b3JraW5nLXdpdGgtbmVzdGVkLWZsZXhib3hcclxuICAgICovXHJcbiAgICBtaW4taGVpZ2h0OiAwcHg7XHJcblxyXG4gIH1gLGBcclxuICAgIC5zZWxlY3RlZHtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcbiAgYF0sXHJcbiAgc3R5bGVVcmxzOiBbJy4uLy4uL3NwZWVjaHJlY29yZGVyX21hdC5zY3NzJ11cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdMaXN0IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdHtcclxuICAvL3ByaXZhdGUgcmVjb3JkaW5nTGlzdDpBcnJheTxSZWNvcmRpbmdGaWxlPj1uZXcgQXJyYXk8UmVjb3JkaW5nRmlsZT4oKTtcclxuICBwcml2YXRlIHJlY29yZGluZ0xpc3Q6UmVjRmlsZXNDYWNoZT1uZXcgUmVjRmlsZXNDYWNoZSgpO1xyXG4gIC8vcmVjb3JkaW5nTGlzdFN1YmplY3Q6U3ViamVjdDxBcnJheTxSZWNvcmRpbmdGaWxlPj4gPSBuZXcgU3ViamVjdDxBcnJheTxSZWNvcmRpbmdGaWxlPj4oKTtcclxuICByZWNvcmRpbmdMaXN0RGF0YVNvdXJjZTpNYXRUYWJsZURhdGFTb3VyY2U8UmVjb3JkaW5nRmlsZT47XHJcbiAgLy9jb2xzPVsnaW5kZXgnLCdsZW5ndGgnLCdzYW1wbGVzJywnc2FtcGxlcmF0ZScsJ2FjdGlvbiddO1xyXG4gIGNvbHM9WydpbmRleCcsJ3N0YXJ0ZWREYXRlJywnbGVuZ3RoJywnYWN0aW9uJ107XHJcbiAgQElucHV0KCkgc2VsZWN0RGlzYWJsZWQ6Ym9vbGVhbj1mYWxzZTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSZWNvcmRpbmdGaWxlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkaW5nRmlsZT4oKTtcclxuICBASW5wdXQoKSBzZWxlY3RlZFJlY29yZGluZ0ZpbGU6UmVjb3JkaW5nRmlsZXxudWxsPW51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5yZWNvcmRpbmdMaXN0RGF0YVNvdXJjZT1uZXcgTWF0VGFibGVEYXRhU291cmNlPFJlY29yZGluZ0ZpbGU+KCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRGF0YVNvdXJjZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZERhdGFTb3VyY2UoKXtcclxuICAgIHRoaXMucmVjb3JkaW5nTGlzdC5yZWNGaWxlcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIGxldCBjbXA6bnVtYmVyPTA7XHJcbiAgICAgIGxldCBhRDpEYXRlfG51bGw9bnVsbDtcclxuICAgICAgbGV0IGJEOkRhdGV8bnVsbD1udWxsO1xyXG4gICAgICBpZihhLl9zdGFydGVkQXNEYXRlT2JqICYmIGIuX3N0YXJ0ZWRBc0RhdGVPYmope1xyXG4gICAgICAgIGFEPWEuX3N0YXJ0ZWRBc0RhdGVPYmpcclxuICAgICAgICBiRD1iLl9zdGFydGVkQXNEYXRlT2JqXHJcbiAgICAgIH1lbHNlIGlmKGEuc3RhcnRlZERhdGUgJiYgYi5zdGFydGVkRGF0ZSl7XHJcbiAgICAgICAgYUQ9bmV3IERhdGUoYS5zdGFydGVkRGF0ZSk7XHJcbiAgICAgICAgYkQ9bmV3IERhdGUoYi5zdGFydGVkRGF0ZSk7XHJcbiAgICAgIH1lbHNlIGlmKGEuZGF0ZSAmJiBiLmRhdGUpIHtcclxuICAgICAgICBhRD1uZXcgRGF0ZShhLmRhdGUpO1xyXG4gICAgICAgIGJEPW5ldyBEYXRlKGIuZGF0ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYoYUQhPT1udWxsICYmIGJEIT09bnVsbCl7XHJcbiAgICAgICAgY21wPWJELmdldFRpbWUoKS1hRC5nZXRUaW1lKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNtcDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWNvcmRpbmdMaXN0RGF0YVNvdXJjZS5kYXRhPXRoaXMucmVjb3JkaW5nTGlzdC5yZWNGaWxlcztcclxuICB9XHJcblxyXG4gIGFkZFJlY0ZpbGUocmY6UmVjb3JkaW5nRmlsZSl7XHJcbiAgICB0aGlzLnJlY29yZGluZ0xpc3QuYWRkUmVjRmlsZShyZik7XHJcbiAgICB0aGlzLmJ1aWxkRGF0YVNvdXJjZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVjRmlsZUF1ZGlvRGF0YShyZWNGaWxlOlJlY29yZGluZ0ZpbGUsIGFkaDpBdWRpb0RhdGFIb2xkZXJ8bnVsbCkge1xyXG4gICAgdGhpcy5yZWNvcmRpbmdMaXN0LnNldFJlY0ZpbGVBdWRpb0RhdGEocmVjRmlsZSxhZGgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0UmVjb3JkaW5nRmlsZShyZjpSZWNvcmRpbmdGaWxlKXtcclxuICAgIHRoaXMucmVjb3JkaW5nTGlzdC5jdXJyZW50UmVjb3JkaW5nRmlsZT1yZjtcclxuICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmRpbmdGaWxlQ2hhbmdlZC5lbWl0KHJmKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFRvcCgpIHtcclxuICAgIGlmICh0aGlzLnJlY29yZGluZ0xpc3QucmVjRmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdFJlY29yZGluZ0ZpbGUodGhpcy5yZWNvcmRpbmdMaXN0LnJlY0ZpbGVzWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxlbmd0aFRpbWVGb3JtYXR0ZWQocmY6UmVjb3JkaW5nRmlsZSl7XHJcbiAgICBsZXQgc3RyPSctLTotLTotLSc7XHJcbiAgICBsZXQgdGw9bnVsbDtcclxuICAgIGlmKHJmLnRpbWVMZW5ndGgpe1xyXG4gICAgICB0bD1yZi50aW1lTGVuZ3RoO1xyXG4gICAgfWVsc2UgaWYocmYuZnJhbWVzICYmIHJmLmF1ZGlvRGF0YUhvbGRlcikge1xyXG4gICAgICB0bD1yZi5mcmFtZXMgLyByZi5hdWRpb0RhdGFIb2xkZXI/LnNhbXBsZVJhdGVcclxuICAgIH1cclxuICAgIGlmKHRsKSB7XHJcbiAgICAgIHN0ciA9IE1lZGlhVXRpbHMudG9NZWRpYVRpbWUodGwpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcbn1cclxuIl19
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nX2xpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdfbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQTRFckQsTUFBTSxPQUFPLGFBQWE7SUFXeEI7UUFWQSx3RUFBd0U7UUFDaEUsa0JBQWEsR0FBZSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBR3hELDBEQUEwRDtRQUMxRCxTQUFJLEdBQUMsQ0FBQyxPQUFPLEVBQUMsYUFBYSxFQUFDLFFBQVEsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxtQkFBYyxHQUFTLEtBQUssQ0FBQztRQUM1QixpQ0FBNEIsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNsRSwwQkFBcUIsR0FBb0IsSUFBSSxDQUFDO1FBR3JELElBQUksQ0FBQyx1QkFBdUIsR0FBQyxJQUFJLGtCQUFrQixFQUFpQixDQUFDO0lBQ3ZFLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxJQUFJLEdBQUcsR0FBUSxDQUFDLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQVcsSUFB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LElBQUksQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7MkdBbEZVLGFBQWE7K0ZBQWIsYUFBYSxrT0FyRWQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENUOzRGQXlCVSxhQUFhO2tCQXpFekIsU0FBUzsrQkFFRSxtQkFBbUIsWUFFbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENUOzBFQWdDUSxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLDRCQUE0QjtzQkFBckMsTUFBTTtnQkFDRSxxQkFBcUI7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1JlY29yZGluZ0ZpbGV9IGZyb20gXCIuLi9yZWNvcmRpbmdcIjtcclxuaW1wb3J0IHtNZWRpYVV0aWxzfSBmcm9tIFwiLi4vLi4vbWVkaWEvdXRpbHNcIjtcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2V9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xyXG5pbXBvcnQge1JlY0ZpbGVzQ2FjaGV9IGZyb20gXCIuL3JlY29yZGluZ19maWxlX2NhY2hlXCI7XHJcbmltcG9ydCB7QXVkaW9EYXRhSG9sZGVyfSBmcm9tIFwiLi4vLi4vYXVkaW8vYXVkaW9fZGF0YV9ob2xkZXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1yZWNvcmRpbmdsaXN0JyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtY2FyZD5cclxuICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICA8aDI+UmVjb3JkaW5nIGxpc3Q8L2gyPlxyXG4gICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZWNvcmRpbmdMaXN0RGF0YVNvdXJjZVwiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MFwiPlxyXG4gICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJjb2xzO3N0aWNreTp0cnVlXCI+PC90cj5cclxuICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgZWxlbWVudDsgY29sdW1uczogY29scztcIlxyXG4gICAgICAgICAgICAgIFtzY3JvbGxJbnRvVmlld1RvQm90dG9tXT1cImVsZW1lbnQudXVpZD09PXNlbGVjdGVkUmVjb3JkaW5nRmlsZT8udXVpZFwiIFtjbGFzcy5zZWxlY3RlZF09XCJlbGVtZW50LnV1aWQ9PT1zZWxlY3RlZFJlY29yZGluZ0ZpbGU/LnV1aWRcIj48L3RyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXI+IzwvdGg+XHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBjbGFzcz1cIm1vbm9zcGFjZWRcIlxyXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDtsZXQgaSA9IGluZGV4XCI+e3tyZWNvcmRpbmdMaXN0RGF0YVNvdXJjZS5kYXRhLmxlbmd0aCAtIGl9fTwvdGQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3RhcnRlZERhdGVcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyPlN0YXJ0ZWQ8L3RoPlxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJtb25vc3BhY2VkXCJcclxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57e2VsZW1lbnQuc3RhcnRlZERhdGUgfCBkYXRlOidZWVlZLU1NLWRkIEhIOm1tOnNzJ319PC90ZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsZW5ndGhcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyPkxlbmd0aDwvdGg+XHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBjbGFzcz1cIm1vbm9zcGFjZWRcIiAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3tsZW5ndGhUaW1lRm9ybWF0dGVkKGVsZW1lbnQpfX08L3RkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvblwiPlxyXG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPkFjdGlvbjwvdGg+XHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XHJcbiAgICAgICAgICAgICAgPCEtLVxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInJlY29yZGluZ0ZpbGVDYWNoZWQoZWxlbWVudCk9PT1mYWxzZVwiIHN0eWxlPVwiZm9udC1zaXplOjAuOGVtO3dpZHRoOjAuOGVtO2hlaWdodDowLjhlbVwiPlxyXG4gICAgICAgICAgICAgICAgY2xvdWRfZG93bmxvYWRcclxuICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIC0tPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzZWxlY3RSZWNvcmRpbmdGaWxlKGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3REaXNhYmxlZCB8fCBlbGVtZW50LnV1aWQ9PT1zZWxlY3RlZFJlY29yZGluZ0ZpbGU/LnV1aWRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0X2F0dHJpYnV0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgU2VsZWN0XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgYCxcclxuICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcclxuICAgIHdpZHRoOiAxMDAlOyAvKiB1c2UgYWxsIGhvcml6b250YWwgYXZhaWxhYmxlIHNwYWNlICovXHJcbiAgICBmbGV4OiAxOyAvKiAuLi4gYW5kIGZpbGwgcmVzdCBvZiB2ZXJ0aWNhbCBhdmFpbGFibGUgc3BhY2UgKG90aGVyIGNvbXBvbmVudHMgaGF2ZSBmbGV4IDApICovXHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG5cclxuICAgIC8qIFdvcmthcm91bmQgZm9yIEZpcmVmb3hcclxuICAgIElmIHRoZSBwcm9ncmVzcyB0YWJsZSBnZXRzIGxvbmcgKHNjcmlwdCB3aXRoIG1hbnkgaXRlbXMpIEZGIGluY3JlYXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBvdmVyZmxvdyBwcm9ncmVzc0NvbnRhaW5lciBhbmRcclxuICAgIHRoZSB3aG9sZSBhcHAgZG9lcyBub3QgZml0IGludG8gdGhlIHBhZ2UgYW55bW9yZS4gVGhlIGFwcCBvdmVyZmxvd3MgYW5kIHNob3dzIGEgdmVydGljYWwgc2Nyb2xsYmFyIGZvciB0aGUgd2hvbGUgYXBwLlxyXG4gICAgU2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjg2MzY4MzIvZmlyZWZveC1vdmVyZmxvdy15LW5vdC13b3JraW5nLXdpdGgtbmVzdGVkLWZsZXhib3hcclxuICAgICovXHJcbiAgICBtaW4taGVpZ2h0OiAwcHg7XHJcblxyXG4gIH1gLGBcclxuICAgIC5zZWxlY3RlZHtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcbiAgYF0sXHJcbiAgc3R5bGVVcmxzOiBbJy4uLy4uL3NwZWVjaHJlY29yZGVyX21hdC5zY3NzJ11cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdMaXN0IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdHtcclxuICAvL3ByaXZhdGUgcmVjb3JkaW5nTGlzdDpBcnJheTxSZWNvcmRpbmdGaWxlPj1uZXcgQXJyYXk8UmVjb3JkaW5nRmlsZT4oKTtcclxuICBwcml2YXRlIHJlY29yZGluZ0xpc3Q6UmVjRmlsZXNDYWNoZT1uZXcgUmVjRmlsZXNDYWNoZSgpO1xyXG4gIC8vcmVjb3JkaW5nTGlzdFN1YmplY3Q6U3ViamVjdDxBcnJheTxSZWNvcmRpbmdGaWxlPj4gPSBuZXcgU3ViamVjdDxBcnJheTxSZWNvcmRpbmdGaWxlPj4oKTtcclxuICByZWNvcmRpbmdMaXN0RGF0YVNvdXJjZTpNYXRUYWJsZURhdGFTb3VyY2U8UmVjb3JkaW5nRmlsZT47XHJcbiAgLy9jb2xzPVsnaW5kZXgnLCdsZW5ndGgnLCdzYW1wbGVzJywnc2FtcGxlcmF0ZScsJ2FjdGlvbiddO1xyXG4gIGNvbHM9WydpbmRleCcsJ3N0YXJ0ZWREYXRlJywnbGVuZ3RoJywnYWN0aW9uJ107XHJcbiAgQElucHV0KCkgc2VsZWN0RGlzYWJsZWQ6Ym9vbGVhbj1mYWxzZTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSZWNvcmRpbmdGaWxlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkaW5nRmlsZT4oKTtcclxuICBASW5wdXQoKSBzZWxlY3RlZFJlY29yZGluZ0ZpbGU6UmVjb3JkaW5nRmlsZXxudWxsPW51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5yZWNvcmRpbmdMaXN0RGF0YVNvdXJjZT1uZXcgTWF0VGFibGVEYXRhU291cmNlPFJlY29yZGluZ0ZpbGU+KCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRGF0YVNvdXJjZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZERhdGFTb3VyY2UoKXtcclxuICAgIHRoaXMucmVjb3JkaW5nTGlzdC5yZWNGaWxlcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIGxldCBjbXA6bnVtYmVyPTA7XHJcbiAgICAgIGxldCBhRDpEYXRlfG51bGw9bnVsbDtcclxuICAgICAgbGV0IGJEOkRhdGV8bnVsbD1udWxsO1xyXG4gICAgICBpZihhLl9zdGFydGVkQXNEYXRlT2JqICYmIGIuX3N0YXJ0ZWRBc0RhdGVPYmope1xyXG4gICAgICAgIGFEPWEuX3N0YXJ0ZWRBc0RhdGVPYmpcclxuICAgICAgICBiRD1iLl9zdGFydGVkQXNEYXRlT2JqXHJcbiAgICAgIH1lbHNlIGlmKGEuc3RhcnRlZERhdGUgJiYgYi5zdGFydGVkRGF0ZSl7XHJcbiAgICAgICAgYUQ9bmV3IERhdGUoYS5zdGFydGVkRGF0ZSk7XHJcbiAgICAgICAgYkQ9bmV3IERhdGUoYi5zdGFydGVkRGF0ZSk7XHJcbiAgICAgIH1lbHNlIGlmKGEuZGF0ZSAmJiBiLmRhdGUpIHtcclxuICAgICAgICBhRD1uZXcgRGF0ZShhLmRhdGUpO1xyXG4gICAgICAgIGJEPW5ldyBEYXRlKGIuZGF0ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYoYUQhPT1udWxsICYmIGJEIT09bnVsbCl7XHJcbiAgICAgICAgY21wPWJELmdldFRpbWUoKS1hRC5nZXRUaW1lKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNtcDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWNvcmRpbmdMaXN0RGF0YVNvdXJjZS5kYXRhPXRoaXMucmVjb3JkaW5nTGlzdC5yZWNGaWxlcztcclxuICB9XHJcblxyXG4gIGFkZFJlY0ZpbGUocmY6UmVjb3JkaW5nRmlsZSl7XHJcbiAgICB0aGlzLnJlY29yZGluZ0xpc3QuYWRkUmVjRmlsZShyZik7XHJcbiAgICB0aGlzLmJ1aWxkRGF0YVNvdXJjZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVjRmlsZUF1ZGlvRGF0YShyZWNGaWxlOlJlY29yZGluZ0ZpbGUsIGFkaDpBdWRpb0RhdGFIb2xkZXJ8bnVsbCkge1xyXG4gICAgdGhpcy5yZWNvcmRpbmdMaXN0LnNldFJlY0ZpbGVBdWRpb0RhdGEocmVjRmlsZSxhZGgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0UmVjb3JkaW5nRmlsZShyZjpSZWNvcmRpbmdGaWxlKXtcclxuICAgIHRoaXMucmVjb3JkaW5nTGlzdC5jdXJyZW50UmVjb3JkaW5nRmlsZT1yZjtcclxuICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmRpbmdGaWxlQ2hhbmdlZC5lbWl0KHJmKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFRvcCgpIHtcclxuICAgIGlmICh0aGlzLnJlY29yZGluZ0xpc3QucmVjRmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdFJlY29yZGluZ0ZpbGUodGhpcy5yZWNvcmRpbmdMaXN0LnJlY0ZpbGVzWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxlbmd0aFRpbWVGb3JtYXR0ZWQocmY6UmVjb3JkaW5nRmlsZSl7XHJcbiAgICBsZXQgc3RyPSctLTotLTotLSc7XHJcbiAgICBsZXQgdGw9bnVsbDtcclxuICAgIGlmKHJmLnRpbWVMZW5ndGgpe1xyXG4gICAgICB0bD1yZi50aW1lTGVuZ3RoO1xyXG4gICAgfWVsc2UgaWYocmYuZnJhbWVzICYmIHJmLmF1ZGlvRGF0YUhvbGRlcikge1xyXG4gICAgICB0bD1yZi5mcmFtZXMgLyByZi5hdWRpb0RhdGFIb2xkZXI/LnNhbXBsZVJhdGVcclxuICAgIH1cclxuICAgIGlmKHRsKSB7XHJcbiAgICAgIHN0ciA9IE1lZGlhVXRpbHMudG9NZWRpYVRpbWUodGwpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcblxyXG4gIHJlY29yZGluZ0ZpbGVDYWNoZWQocmY6UmVjb3JkaW5nRmlsZSk6Ym9vbGVhbnxudWxse1xyXG4gICAgbGV0IGNhY2hlZD1udWxsO1xyXG4gICAgaWYocmYgJiYgcmYuc2VydmVyUGVyc2lzdGVkKSB7XHJcbiAgICAgIGNhY2hlZCA9IChyZi5hdWRpb0RhdGFIb2xkZXIgIT0gbnVsbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2FjaGVkO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -1,9 +1,9 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import { RecordingFileUtil } from "./recording-file";
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/card";
4
+ import * as i1 from "@angular/common";
5
5
  import * as i2 from "@angular/material/progress-spinner";
6
- import * as i3 from "@angular/common";
6
+ import * as i3 from "@angular/material/card";
7
7
  export class RecordingFileMetaComponent {
8
8
  constructor() {
9
9
  this.sessionId = null;
@@ -45,8 +45,8 @@ export class RecordingFileMetaComponent {
45
45
  return t;
46
46
  }
47
47
  }
48
- RecordingFileMetaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RecordingFileMetaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
- RecordingFileMetaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: RecordingFileMetaComponent, selector: "app-recording-file-meta", inputs: { sessionId: "sessionId", stateLoading: "stateLoading", recordingFile: "recordingFile" }, ngImport: i0, template: `
48
+ RecordingFileMetaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileMetaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
+ RecordingFileMetaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecordingFileMetaComponent, selector: "app-recording-file-meta", inputs: { sessionId: "sessionId", stateLoading: "stateLoading", recordingFile: "recordingFile" }, ngImport: i0, template: `
50
50
  <mat-card>
51
51
  <mat-card-title>Recording file ID: {{recordingFile?.recordingFileId}}</mat-card-title>
52
52
  <mat-card-content>
@@ -80,12 +80,10 @@ RecordingFileMetaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
80
80
  </table>
81
81
  </mat-card-content>
82
82
  </mat-card>
83
- `, isInline: true, components: [{ type: i1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], directives: [{ type: i1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i1.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RecordingFileMetaComponent, decorators: [{
83
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }] });
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingFileMetaComponent, decorators: [{
85
85
  type: Component,
86
- args: [{
87
- selector: 'app-recording-file-meta',
88
- template: `
86
+ args: [{ selector: 'app-recording-file-meta', template: `
89
87
  <mat-card>
90
88
  <mat-card-title>Recording file ID: {{recordingFile?.recordingFileId}}</mat-card-title>
91
89
  <mat-card-content>
@@ -119,9 +117,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
119
117
  </table>
120
118
  </mat-card-content>
121
119
  </mat-card>
122
- `,
123
- styles: []
124
- }]
120
+ ` }]
125
121
  }], propDecorators: { sessionId: [{
126
122
  type: Input
127
123
  }], stateLoading: [{
@@ -129,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
129
125
  }], recordingFile: [{
130
126
  type: Input
131
127
  }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWZpbGUtbWV0YS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdmaWxlL3JlY29yZGluZy1maWxlLW1ldGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7OztBQTBDbkQsTUFBTSxPQUFPLDBCQUEwQjtJQXZDdkM7UUEwQ1csY0FBUyxHQUF3QixJQUFJLENBQUM7UUFFdkMsbUJBQWMsR0FBdUIsSUFBSSxDQUFDO1FBRXpDLGlCQUFZLEdBQVMsS0FBSyxDQUFDO1FBNEJwQyxhQUFRLEdBQWEsSUFBSSxDQUFDO1FBQzFCLFNBQUksR0FBdUIsSUFBSSxDQUFDO0tBU2pDO0lBcENDLElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxhQUFhLENBQUMsYUFBbUM7UUFDNUQsSUFBSSxDQUFDLGNBQWMsR0FBQyxhQUFhLENBQUM7UUFDbEMsSUFBRyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDN0MsSUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFDO2dCQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUN0RDtZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLHdFQUF3RTthQUN6RTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQztnQkFDdEMscUVBQXFFO2FBQ3RFO1NBQ0Y7YUFBSTtZQUNILElBQUksQ0FBQyxRQUFRLEdBQUMsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUMsSUFBSSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUtELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsR0FBQyxJQUFJLENBQUM7UUFDWCxJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdEIsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7d0hBNUNVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLGlLQXJDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ1Q7NEZBR1UsMEJBQTBCO2tCQXZDdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ1Q7b0JBQ0QsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7OEJBSVUsU0FBUztzQkFBakIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQU1PLGFBQWE7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZVV0aWx9IGZyb20gXCIuL3JlY29yZGluZy1maWxlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZSwgU3ByUmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uLy4uL3JlY29yZGluZ1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVjb3JkaW5nLWZpbGUtbWV0YScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtY2FyZD5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlPlJlY29yZGluZyBmaWxlIElEOiB7e3JlY29yZGluZ0ZpbGU/LnJlY29yZGluZ0ZpbGVJZH19PC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyICpuZ0lmPVwic3RhdGVMb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbZGlhbWV0ZXJdPVwiMjBcIj48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxyXG4gICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgIDx0ciAqbmdJZj1cIml0ZW1Db2RlXCI+XHJcbiAgICAgICAgICAgIDx0ZD5JdGVtY29kZTo8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3tpdGVtQ29kZX19PC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8dHIgKm5nSWY9XCJ1dWlkICYmICFpdGVtQ29kZVwiPlxyXG4gICAgICAgICAgICA8dGQ+VVVJRDo8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3t1dWlkfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDx0ciAqbmdJZj1cInJlY29yZGluZ0ZpbGU/LnN0YXJ0ZWREYXRlXCI+XHJcbiAgICAgICAgICAgIDx0ZD5TdGFydGVkOjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3JlY29yZGluZ0ZpbGU/LnN0YXJ0ZWREYXRlfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDx0ciAqbmdJZj1cIiFyZWNvcmRpbmdGaWxlPy5zdGFydGVkRGF0ZSAmJiByZWNvcmRpbmdGaWxlPy5kYXRlXCI+XHJcbiAgICAgICAgICAgIDx0ZD5EYXRlOjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3JlY29yZGluZ0ZpbGU/LmRhdGV9fTwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPHRyICpuZ0lmPVwiaXRlbUNvZGVcIj5cclxuICAgICAgICAgICAgPHRkPlByb21wdDo8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3tyZWNvcmRpbmdBc1BsYWluVGV4dCgpfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICA8dHIgKm5nSWY9XCJzZXNzaW9uSWRcIj5cclxuICAgICAgICAgICAgPHRkPlNlc3Npb246PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7c2Vzc2lvbklkfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVjb3JkaW5nRmlsZU1ldGFDb21wb25lbnR7XHJcblxyXG5cclxuICBASW5wdXQoKSBzZXNzaW9uSWQ6c3RyaW5nIHwgbnVtYmVyIHwgbnVsbD1udWxsO1xyXG5cclxuICBwcml2YXRlIF9yZWNvcmRpbmdGaWxlOlNwclJlY29yZGluZ0ZpbGV8bnVsbD1udWxsO1xyXG5cclxuICBASW5wdXQoKSBzdGF0ZUxvYWRpbmc6Ym9vbGVhbj1mYWxzZTtcclxuXHJcbiAgZ2V0IHJlY29yZGluZ0ZpbGUoKTogU3ByUmVjb3JkaW5nRmlsZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZ0ZpbGU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgcmVjb3JkaW5nRmlsZShyZWNvcmRpbmdGaWxlOlNwclJlY29yZGluZ0ZpbGV8bnVsbCl7XHJcbiAgICB0aGlzLl9yZWNvcmRpbmdGaWxlPXJlY29yZGluZ0ZpbGU7XHJcbiAgICBpZih0aGlzLl9yZWNvcmRpbmdGaWxlKSB7XHJcbiAgICAgIHRoaXMuaXRlbUNvZGUgPSB0aGlzLl9yZWNvcmRpbmdGaWxlLml0ZW1Db2RlO1xyXG4gICAgICBpZighdGhpcy5pdGVtQ29kZSAmJiB0aGlzLl9yZWNvcmRpbmdGaWxlLnJlY29yZGluZz8uaXRlbWNvZGUpe1xyXG4gICAgICAgIHRoaXMuaXRlbUNvZGU9dGhpcy5fcmVjb3JkaW5nRmlsZS5yZWNvcmRpbmcuaXRlbWNvZGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbUNvZGUpIHtcclxuXHJcbiAgICAgICAgdGhpcy51dWlkID0gbnVsbDtcclxuICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJTcHJSZWNvcmRpbmdGaWxlOiBcIit0aGlzLml0ZW1Db2RlKyBcIiBVVUlEOiBcIit0aGlzLnV1aWQpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pdGVtQ29kZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy51dWlkID0gdGhpcy5fcmVjb3JkaW5nRmlsZT8udXVpZDtcclxuICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJSZWNvcmRpbmdGaWxlOiBcIit0aGlzLml0ZW1Db2RlKyBcIiBVVUlEOiBcIit0aGlzLnV1aWQpXHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLml0ZW1Db2RlPW51bGw7XHJcbiAgICAgIHRoaXMudXVpZD1udWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXRlbUNvZGU6c3RyaW5nfG51bGw9bnVsbDtcclxuICB1dWlkOnN0cmluZ3xudWxsfHVuZGVmaW5lZD1udWxsO1xyXG5cclxuICByZWNvcmRpbmdBc1BsYWluVGV4dCgpe1xyXG4gICAgbGV0IHQ9bnVsbDtcclxuICAgIGlmKHRoaXMuX3JlY29yZGluZ0ZpbGUpIHtcclxuICAgICAgdCA9IFJlY29yZGluZ0ZpbGVVdGlsLnJlY29yZGluZ0FzUGxhaW5UZXh0KHRoaXMuX3JlY29yZGluZ0ZpbGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWZpbGUtbWV0YS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdmaWxlL3JlY29yZGluZy1maWxlLW1ldGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7OztBQTBDbkQsTUFBTSxPQUFPLDBCQUEwQjtJQXZDdkM7UUEwQ1csY0FBUyxHQUF3QixJQUFJLENBQUM7UUFFdkMsbUJBQWMsR0FBdUIsSUFBSSxDQUFDO1FBRXpDLGlCQUFZLEdBQVMsS0FBSyxDQUFDO1FBNEJwQyxhQUFRLEdBQWEsSUFBSSxDQUFDO1FBQzFCLFNBQUksR0FBdUIsSUFBSSxDQUFDO0tBU2pDO0lBcENDLElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxhQUFhLENBQUMsYUFBbUM7UUFDNUQsSUFBSSxDQUFDLGNBQWMsR0FBQyxhQUFhLENBQUM7UUFDbEMsSUFBRyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDN0MsSUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFDO2dCQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUN0RDtZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLHdFQUF3RTthQUN6RTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQztnQkFDdEMscUVBQXFFO2FBQ3RFO1NBQ0Y7YUFBSTtZQUNILElBQUksQ0FBQyxRQUFRLEdBQUMsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUMsSUFBSSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUtELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsR0FBQyxJQUFJLENBQUM7UUFDWCxJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdEIsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7d0hBNUNVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLGlLQXJDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ1Q7NEZBR1UsMEJBQTBCO2tCQXZDdEMsU0FBUzsrQkFDRSx5QkFBeUIsWUFDekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ1Q7OEJBTVEsU0FBUztzQkFBakIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQU1PLGFBQWE7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZVV0aWx9IGZyb20gXCIuL3JlY29yZGluZy1maWxlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZSwgU3ByUmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uLy4uL3JlY29yZGluZ1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVjb3JkaW5nLWZpbGUtbWV0YScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtY2FyZD5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlPlJlY29yZGluZyBmaWxlIElEOiB7e3JlY29yZGluZ0ZpbGU/LnJlY29yZGluZ0ZpbGVJZH19PC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyICpuZ0lmPVwic3RhdGVMb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbZGlhbWV0ZXJdPVwiMjBcIj48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxyXG4gICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgIDx0ciAqbmdJZj1cIml0ZW1Db2RlXCI+XHJcbiAgICAgICAgICAgIDx0ZD5JdGVtY29kZTo8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3tpdGVtQ29kZX19PC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8dHIgKm5nSWY9XCJ1dWlkICYmICFpdGVtQ29kZVwiPlxyXG4gICAgICAgICAgICA8dGQ+VVVJRDo8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3t1dWlkfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDx0ciAqbmdJZj1cInJlY29yZGluZ0ZpbGU/LnN0YXJ0ZWREYXRlXCI+XHJcbiAgICAgICAgICAgIDx0ZD5TdGFydGVkOjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3JlY29yZGluZ0ZpbGU/LnN0YXJ0ZWREYXRlfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDx0ciAqbmdJZj1cIiFyZWNvcmRpbmdGaWxlPy5zdGFydGVkRGF0ZSAmJiByZWNvcmRpbmdGaWxlPy5kYXRlXCI+XHJcbiAgICAgICAgICAgIDx0ZD5EYXRlOjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3JlY29yZGluZ0ZpbGU/LmRhdGV9fTwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPHRyICpuZ0lmPVwiaXRlbUNvZGVcIj5cclxuICAgICAgICAgICAgPHRkPlByb21wdDo8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3tyZWNvcmRpbmdBc1BsYWluVGV4dCgpfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICA8dHIgKm5nSWY9XCJzZXNzaW9uSWRcIj5cclxuICAgICAgICAgICAgPHRkPlNlc3Npb246PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7c2Vzc2lvbklkfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVjb3JkaW5nRmlsZU1ldGFDb21wb25lbnR7XHJcblxyXG5cclxuICBASW5wdXQoKSBzZXNzaW9uSWQ6c3RyaW5nIHwgbnVtYmVyIHwgbnVsbD1udWxsO1xyXG5cclxuICBwcml2YXRlIF9yZWNvcmRpbmdGaWxlOlNwclJlY29yZGluZ0ZpbGV8bnVsbD1udWxsO1xyXG5cclxuICBASW5wdXQoKSBzdGF0ZUxvYWRpbmc6Ym9vbGVhbj1mYWxzZTtcclxuXHJcbiAgZ2V0IHJlY29yZGluZ0ZpbGUoKTogU3ByUmVjb3JkaW5nRmlsZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZ0ZpbGU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgcmVjb3JkaW5nRmlsZShyZWNvcmRpbmdGaWxlOlNwclJlY29yZGluZ0ZpbGV8bnVsbCl7XHJcbiAgICB0aGlzLl9yZWNvcmRpbmdGaWxlPXJlY29yZGluZ0ZpbGU7XHJcbiAgICBpZih0aGlzLl9yZWNvcmRpbmdGaWxlKSB7XHJcbiAgICAgIHRoaXMuaXRlbUNvZGUgPSB0aGlzLl9yZWNvcmRpbmdGaWxlLml0ZW1Db2RlO1xyXG4gICAgICBpZighdGhpcy5pdGVtQ29kZSAmJiB0aGlzLl9yZWNvcmRpbmdGaWxlLnJlY29yZGluZz8uaXRlbWNvZGUpe1xyXG4gICAgICAgIHRoaXMuaXRlbUNvZGU9dGhpcy5fcmVjb3JkaW5nRmlsZS5yZWNvcmRpbmcuaXRlbWNvZGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbUNvZGUpIHtcclxuXHJcbiAgICAgICAgdGhpcy51dWlkID0gbnVsbDtcclxuICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJTcHJSZWNvcmRpbmdGaWxlOiBcIit0aGlzLml0ZW1Db2RlKyBcIiBVVUlEOiBcIit0aGlzLnV1aWQpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pdGVtQ29kZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy51dWlkID0gdGhpcy5fcmVjb3JkaW5nRmlsZT8udXVpZDtcclxuICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJSZWNvcmRpbmdGaWxlOiBcIit0aGlzLml0ZW1Db2RlKyBcIiBVVUlEOiBcIit0aGlzLnV1aWQpXHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLml0ZW1Db2RlPW51bGw7XHJcbiAgICAgIHRoaXMudXVpZD1udWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXRlbUNvZGU6c3RyaW5nfG51bGw9bnVsbDtcclxuICB1dWlkOnN0cmluZ3xudWxsfHVuZGVmaW5lZD1udWxsO1xyXG5cclxuICByZWNvcmRpbmdBc1BsYWluVGV4dCgpe1xyXG4gICAgbGV0IHQ9bnVsbDtcclxuICAgIGlmKHRoaXMuX3JlY29yZGluZ0ZpbGUpIHtcclxuICAgICAgdCA9IFJlY29yZGluZ0ZpbGVVdGlsLnJlY29yZGluZ0FzUGxhaW5UZXh0KHRoaXMuX3JlY29yZGluZ0ZpbGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==