speechrecorderng 3.8.0 → 3.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/esm2022/lib/audio/audio_display.mjs +3 -3
- package/esm2022/lib/audio/audio_player.mjs +3 -3
- package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +6 -6
- package/esm2022/lib/audio/ui/audio_display_control.mjs +3 -3
- package/esm2022/lib/audio/ui/audio_display_scroll_pane.mjs +5 -5
- package/esm2022/lib/audio/ui/audiosignal.mjs +3 -3
- package/esm2022/lib/audio/ui/container.mjs +3 -3
- package/esm2022/lib/audio/ui/livelevel.mjs +5 -5
- package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +4 -4
- package/esm2022/lib/audio/ui/sonagram.mjs +3 -3
- package/esm2022/lib/db/inddb.mjs +3 -3
- package/esm2022/lib/environment/environment.defaults.mjs +9 -0
- package/esm2022/lib/speechrecorder/project/project.service.mjs +3 -3
- package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +5 -2
- package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +3 -3
- package/esm2022/lib/speechrecorder/script/script.service.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +8 -8
- package/esm2022/lib/speechrecorder/session/controlpanel.mjs +21 -21
- package/esm2022/lib/speechrecorder/session/progress.mjs +22 -11
- package/esm2022/lib/speechrecorder/session/prompting.mjs +26 -26
- package/esm2022/lib/speechrecorder/session/recorder_combi_pane.mjs +5 -5
- package/esm2022/lib/speechrecorder/session/recording_list.mjs +5 -5
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/session.service.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/session_finished_dialog.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +5 -5
- package/esm2022/lib/speechrecorder/session/warning_bar.mjs +3 -3
- package/esm2022/lib/speechrecorder/spruploader.mjs +3 -3
- package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +5 -5
- package/esm2022/lib/speechrecorderng.component.mjs +3 -3
- package/esm2022/lib/speechrecorderng.module.mjs +8 -7
- package/esm2022/lib/spr.config.mjs +5 -4
- package/esm2022/lib/spr.module.version.mjs +2 -2
- package/esm2022/lib/ui/canvas_layer_comp.mjs +3 -3
- package/esm2022/lib/ui/intersection-observer.directive.mjs +32 -0
- package/esm2022/lib/ui/message_dialog.mjs +3 -3
- package/esm2022/lib/ui/recordingitem_display.mjs +11 -11
- package/esm2022/lib/ui/responsive_component.mjs +3 -3
- package/esm2022/lib/utils/scrollIntoViewToBottom.mjs +3 -3
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/speechrecorderng.mjs +257 -203
- package/fesm2022/speechrecorderng.mjs.map +1 -1
- package/lib/environment/environment.defaults.d.ts +8 -0
- package/lib/speechrecorder/session/progress.d.ts +4 -1
- package/lib/speechrecorderng.module.d.ts +2 -1
- package/lib/spr.config.d.ts +1 -0
- package/lib/spr.module.version.d.ts +1 -1
- package/lib/ui/intersection-observer.directive.d.ts +13 -0
- package/package.json +13 -13
- package/public-api.d.ts +1 -0
package/README.md
CHANGED
|
@@ -67,8 +67,8 @@ export class AudioDisplay {
|
|
|
67
67
|
error() {
|
|
68
68
|
this.status = 'ERROR';
|
|
69
69
|
}
|
|
70
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
71
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioDisplay, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: AudioDisplay, selector: "app-audiodisplay", inputs: { playStartAction: "playStartAction", playStopAction: "playStopAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", audioData: "audioData", audioClip: "audioClip" }, viewQueries: [{ propertyName: "audioDisplayScrollPane", first: true, predicate: AudioDisplayScrollPane, descendants: true, static: true }], ngImport: i0, template: `
|
|
72
72
|
|
|
73
73
|
<audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>
|
|
74
74
|
|
|
@@ -83,7 +83,7 @@ export class AudioDisplay {
|
|
|
83
83
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control>
|
|
84
84
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;position:absolute;bottom:0;height:100%;width:100%;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#e6e6e6}\n", "legend{margin-left:1em;padding:.2em .8em;font-size:.8em}\n", "fieldset{border:1px darkgray solid}\n"], dependencies: [{ kind: "component", type: i1.AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { kind: "component", type: i2.AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }] }); }
|
|
85
85
|
}
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioDisplay, decorators: [{
|
|
87
87
|
type: Component,
|
|
88
88
|
args: [{ selector: 'app-audiodisplay', template: `
|
|
89
89
|
|
|
@@ -187,8 +187,8 @@ export class AudioDisplayPlayer {
|
|
|
187
187
|
error() {
|
|
188
188
|
this.status = 'ERROR';
|
|
189
189
|
}
|
|
190
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
191
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
190
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioDisplayPlayer, deps: [{ token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
191
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: AudioDisplayPlayer, selector: "app-audiodisplayplayer", inputs: { playStartAction: "playStartAction", playStopAction: "playStopAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", audioData: "audioData", audioClip: "audioClip" }, viewQueries: [{ propertyName: "audioDisplayScrollPane", first: true, predicate: AudioDisplayScrollPane, descendants: true, static: true }], ngImport: i0, template: `
|
|
192
192
|
|
|
193
193
|
<audio-display-scroll-pane #audioDisplayScrollPane></audio-display-scroll-pane>
|
|
194
194
|
|
|
@@ -203,7 +203,7 @@ export class AudioDisplayPlayer {
|
|
|
203
203
|
[zoomFitToPanelAction]="zoomFitToPanelAction"></audio-display-control><p>{{status}}
|
|
204
204
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;position:absolute;bottom:0;height:100%;width:100%;overflow:hidden;padding:20px;z-index:5;box-sizing:border-box;background-color:#000000bf}\n"], dependencies: [{ kind: "component", type: i2.AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: ["audioClip"], outputs: ["zoomInAction", "zoomOutAction", "zoomSelectedAction", "zoomFitToPanelAction"] }, { kind: "component", type: i3.AudioDisplayControl, selector: "audio-display-control", inputs: ["audioClip", "playStartAction", "playSelectionAction", "playStopAction", "zoomInAction", "zoomOutAction", "zoomFitToPanelAction", "zoomSelectedAction", "autoPlayOnSelectToggleAction"] }] }); }
|
|
205
205
|
}
|
|
206
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
206
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioDisplayPlayer, decorators: [{
|
|
207
207
|
type: Component,
|
|
208
208
|
args: [{ selector: 'app-audiodisplayplayer', template: `
|
|
209
209
|
|
|
@@ -138,10 +138,10 @@ export class BasicAudioCanvasLayerComponent extends CanvasLayerComponent {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
142
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
141
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: BasicAudioCanvasLayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
142
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.1", type: BasicAudioCanvasLayerComponent, usesInheritance: true, ngImport: i0 }); }
|
|
143
143
|
}
|
|
144
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: BasicAudioCanvasLayerComponent, decorators: [{
|
|
145
145
|
type: Directive
|
|
146
146
|
}] });
|
|
147
147
|
export class AudioCanvasLayerComponent extends BasicAudioCanvasLayerComponent {
|
|
@@ -317,10 +317,10 @@ export class AudioCanvasLayerComponent extends BasicAudioCanvasLayerComponent {
|
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
321
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
320
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioCanvasLayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
321
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.1", type: AudioCanvasLayerComponent, inputs: { pointerPosition: "pointerPosition", selecting: "selecting", selection: "selection" }, outputs: { pointerPositionEventEmitter: "pointerPositionEventEmitter", selectingEventEmitter: "selectingEventEmitter", selectedEventEmitter: "selectedEventEmitter" }, host: { listeners: { "document:mouseup": "onMouseup($event)" } }, viewQueries: [{ propertyName: "bgCanvasRef", first: true, predicate: ["bg"], descendants: true, static: true }, { propertyName: "cursorCanvasRef", first: true, predicate: ["cursor"], descendants: true, static: true }], usesInheritance: true, ngImport: i0 }); }
|
|
322
322
|
}
|
|
323
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioCanvasLayerComponent, decorators: [{
|
|
324
324
|
type: Directive
|
|
325
325
|
}], propDecorators: { bgCanvasRef: [{
|
|
326
326
|
type: ViewChild,
|
|
@@ -33,8 +33,8 @@ export class AudioDisplayControl {
|
|
|
33
33
|
error() {
|
|
34
34
|
this.status = 'ERROR';
|
|
35
35
|
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioDisplayControl, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: AudioDisplayControl, selector: "audio-display-control", inputs: { audioClip: "audioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", playStopAction: "playStopAction", zoomInAction: "zoomInAction", zoomOutAction: "zoomOutAction", zoomFitToPanelAction: "zoomFitToPanelAction", zoomSelectedAction: "zoomSelectedAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction" }, viewQueries: [{ propertyName: "autoplaySelectedCheckbox", first: true, predicate: MatCheckbox, descendants: true, static: true }], ngImport: i0, template: `
|
|
38
38
|
<div #controlPanel style="display:flex;flex-direction: row;">
|
|
39
39
|
<fieldset>
|
|
40
40
|
|
|
@@ -79,7 +79,7 @@ export class AudioDisplayControl {
|
|
|
79
79
|
</fieldset>
|
|
80
80
|
</div>`, isInline: true, styles: [":host{flex:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
|
|
81
81
|
}
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioDisplayControl, decorators: [{
|
|
83
83
|
type: Component,
|
|
84
84
|
args: [{ selector: 'audio-display-control', template: `
|
|
85
85
|
<div #controlPanel style="display:flex;flex-direction: row;">
|
|
@@ -109,20 +109,20 @@ export class AudioDisplayScrollPane {
|
|
|
109
109
|
set playFramePosition(framePos) {
|
|
110
110
|
this.ac.playFramePosition = framePos;
|
|
111
111
|
}
|
|
112
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
113
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioDisplayScrollPane, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: { audioClip: "audioClip" }, outputs: { zoomInAction: "zoomInAction", zoomOutAction: "zoomOutAction", zoomSelectedAction: "zoomSelectedAction", zoomFitToPanelAction: "zoomFitToPanelAction" }, host: { listeners: { "scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "ac", first: true, predicate: AudioClipUIContainer, descendants: true, static: true }], ngImport: i0, template: `
|
|
114
114
|
|
|
115
115
|
<app-audio #audioSignalContainer (selectionEventEmitter)="selectionChanged($event)"></app-audio>
|
|
116
116
|
|
|
117
|
-
`, isInline: true, styles: [":host{flex:2;width:100%;background
|
|
117
|
+
`, isInline: true, styles: [":host{flex:2;width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n", "app-audio{margin:0;padding:0;top:0;left:0;width:100%;height:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "component", type: i1.AudioClipUIContainer, selector: "app-audio", inputs: ["audioData", "audioClip"], outputs: ["selectionEventEmitter"] }] }); }
|
|
118
118
|
}
|
|
119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioDisplayScrollPane, decorators: [{
|
|
120
120
|
type: Component,
|
|
121
121
|
args: [{ selector: 'audio-display-scroll-pane', template: `
|
|
122
122
|
|
|
123
123
|
<app-audio #audioSignalContainer (selectionEventEmitter)="selectionChanged($event)"></app-audio>
|
|
124
124
|
|
|
125
|
-
`, styles: [":host{flex:2;width:100%;background
|
|
125
|
+
`, styles: [":host{flex:2;width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n", "app-audio{margin:0;padding:0;top:0;left:0;width:100%;height:100%;box-sizing:border-box}\n"] }]
|
|
126
126
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { zoomInAction: [{
|
|
127
127
|
type: Output
|
|
128
128
|
}], zoomOutAction: [{
|
|
@@ -507,15 +507,15 @@ export class AudioSignal extends AudioCanvasLayerComponent {
|
|
|
507
507
|
this._audioDataHolder = audioData;
|
|
508
508
|
this.playFramePosition = 0;
|
|
509
509
|
}
|
|
510
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
511
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
510
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioSignal, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
511
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: AudioSignal, selector: "audio-signal", viewQueries: [{ propertyName: "audioSignalCanvasRef", first: true, predicate: ["audioSignal"], descendants: true, static: true }, { propertyName: "playPosCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
512
512
|
<canvas #bg height="10"></canvas>
|
|
513
513
|
<canvas #audioSignal height="10"></canvas>
|
|
514
514
|
<canvas #cursor height="10" (mousedown)="selectionStart($event)" (mouseover)="updateCursorCanvas($event)" (mousemove)="updateCursorCanvas($event)"
|
|
515
515
|
(mouseleave)="updateCursorCanvas($event, false)"></canvas>
|
|
516
516
|
<canvas #marker height="10"></canvas>`, isInline: true, styles: [":host{min-height:0px}\n", "canvas{top:0;left:0;width:0;height:0;min-height:0px;position:absolute}\n"] }); }
|
|
517
517
|
}
|
|
518
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
518
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioSignal, decorators: [{
|
|
519
519
|
type: Component,
|
|
520
520
|
args: [{ selector: 'audio-signal', template: `
|
|
521
521
|
<canvas #bg height="10"></canvas>
|
|
@@ -363,8 +363,8 @@ export class AudioClipUIContainer extends BasicAudioCanvasLayerComponent {
|
|
|
363
363
|
this.as.playFramePosition = playFramePosition;
|
|
364
364
|
this.so.playFramePosition = playFramePosition;
|
|
365
365
|
}
|
|
366
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
367
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
366
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioClipUIContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
367
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: AudioClipUIContainer, selector: "app-audio", inputs: { audioData: "audioData", audioClip: "audioClip" }, outputs: { selectionEventEmitter: "selectionEventEmitter" }, host: { listeners: { "window:resize": "onResize($event)", "document:mouseup": "onMouseup($event)", "document:mousemove": "onMousemove($event)" } }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["divider"], descendants: true, static: true }, { propertyName: "ceRef", first: true, predicate: ["virtualCanvas"], descendants: true, static: true }, { propertyName: "as", first: true, predicate: AudioSignal, descendants: true, static: true }, { propertyName: "so", first: true, predicate: Sonagram, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
368
368
|
<div #virtualCanvas>
|
|
369
369
|
<canvas #divider (mousedown)="mousedown($event)" (mouseover)="mouseover($event)"
|
|
370
370
|
(mouseleave)="mouseleave($event)" height="10"></canvas>
|
|
@@ -373,7 +373,7 @@ export class AudioClipUIContainer extends BasicAudioCanvasLayerComponent {
|
|
|
373
373
|
</div>
|
|
374
374
|
`, isInline: true, styles: ["div{margin:0;padding:0;top:0;left:0;width:100%;height:100%;position:relative;box-sizing:border-box;transform:none;overflow:hidden}\n", "canvas{top:0;left:0;width:0;height:0;cursor:ns-resize;position:absolute;z-index:1;transform:none}\n", "audio-signal{top:0;left:0;position:absolute;z-index:1;transform:none}\n", "audio-sonagram{top:0;left:0;position:absolute;z-index:1;transform:none}\n"], dependencies: [{ kind: "component", type: i1.AudioSignal, selector: "audio-signal" }, { kind: "component", type: i2.Sonagram, selector: "audio-sonagram" }] }); }
|
|
375
375
|
}
|
|
376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AudioClipUIContainer, decorators: [{
|
|
377
377
|
type: Component,
|
|
378
378
|
args: [{ selector: 'app-audio', template: `
|
|
379
379
|
<div #virtualCanvas>
|
|
@@ -320,22 +320,22 @@ export class LevelBar {
|
|
|
320
320
|
}
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
324
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
323
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: LevelBar, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
324
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: LevelBar, selector: "audio-levelbar", inputs: { streamingMode: "streamingMode", displayLevelInfos: "displayLevelInfos", state: "state" }, host: { listeners: { "scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "virtualCanvasRef", first: true, predicate: ["virtualCanvas"], descendants: true, static: true }, { propertyName: "liveLevelCanvasRef", first: true, predicate: ["levelbar"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["markerCanvas"], descendants: true, static: true }], ngImport: i0, template: `
|
|
325
325
|
<div #virtualCanvas>
|
|
326
326
|
<canvas #levelbar></canvas>
|
|
327
327
|
<canvas #markerCanvas></canvas>
|
|
328
328
|
</div>
|
|
329
|
-
`, isInline: true, styles: [":host{width:100%;background
|
|
329
|
+
`, isInline: true, styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n", "div{top:0;left:0;width:100%;height:100%;box-sizing:border-box}\n", "canvas{top:0;left:0;width:100%;height:100%;position:absolute}\n"] }); }
|
|
330
330
|
}
|
|
331
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
331
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: LevelBar, decorators: [{
|
|
332
332
|
type: Component,
|
|
333
333
|
args: [{ selector: 'audio-levelbar', template: `
|
|
334
334
|
<div #virtualCanvas>
|
|
335
335
|
<canvas #levelbar></canvas>
|
|
336
336
|
<canvas #markerCanvas></canvas>
|
|
337
337
|
</div>
|
|
338
|
-
`, styles: [":host{width:100%;background
|
|
338
|
+
`, styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n", "div{top:0;left:0;width:100%;height:100%;box-sizing:border-box}\n", "canvas{top:0;left:0;width:100%;height:100%;position:absolute}\n"] }]
|
|
339
339
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { virtualCanvasRef: [{
|
|
340
340
|
type: ViewChild,
|
|
341
341
|
args: ['virtualCanvas', { static: true }]
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Component } from "@angular/core";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class ScrollPaneHorizontal {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
5
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
4
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ScrollPaneHorizontal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: ScrollPaneHorizontal, selector: "scroll-pane-horizontal", ngImport: i0, template: '', isInline: true, styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n"] }); }
|
|
6
6
|
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ScrollPaneHorizontal, decorators: [{
|
|
8
8
|
type: Component,
|
|
9
|
-
args: [{ selector: 'scroll-pane-horizontal', template: '', styles: [":host{width:100%;background
|
|
9
|
+
args: [{ selector: 'scroll-pane-horizontal', template: '', styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n"] }]
|
|
10
10
|
}] });
|
|
11
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsX3BhbmVfaG9yaXpvbnRhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby91aS9zY3JvbGxfcGFuZV9ob3Jpem9udGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBa0J4QyxNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7a0dBQXBCLG9CQUFvQiw4REFickIsRUFBRTs7MkZBYUQsb0JBQW9CO2tCQWhCaEMsU0FBUzsrQkFFRSx3QkFBd0IsWUFDeEIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnc2Nyb2xsLXBhbmUtaG9yaXpvbnRhbCcsXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIHN0eWxlczogW1xyXG4gICAgYDpob3N0IHtcclxuICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICBiYWNrZ3JvdW5kOiBkYXJrZ3JheTtcclxuICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgb3ZlcmZsb3cteDogc2Nyb2xsO1xyXG4gICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgICAgIH1gXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFNjcm9sbFBhbmVIb3Jpem9udGFse1xyXG5cclxufVxyXG4iXX0=
|
|
@@ -874,15 +874,15 @@ export class Sonagram extends AudioCanvasLayerComponent {
|
|
|
874
874
|
this._audioDataHolder = audioData;
|
|
875
875
|
this.playFramePosition = 0;
|
|
876
876
|
}
|
|
877
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
878
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
877
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: Sonagram, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
878
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: Sonagram, selector: "audio-sonagram", viewQueries: [{ propertyName: "sonagramCanvasRef", first: true, predicate: ["sonagram"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
879
879
|
<canvas #sonagram height="10"></canvas>
|
|
880
880
|
<canvas #bg height="10"></canvas>
|
|
881
881
|
<canvas #cursor height="10" (mousedown)="selectionStart($event)" (mouseover)="updateCursorCanvas($event)" (mousemove)="updateCursorCanvas($event)"
|
|
882
882
|
(mouseleave)="updateCursorCanvas($event, false)"></canvas>
|
|
883
883
|
<canvas #marker height="10"></canvas>`, isInline: true, styles: [":host{min-height:0px}\n", "canvas{top:0;left:0;width:0;height:0;min-height:0px;position:absolute}\n"] }); }
|
|
884
884
|
}
|
|
885
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
885
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: Sonagram, decorators: [{
|
|
886
886
|
type: Component,
|
|
887
887
|
args: [{ selector: 'audio-sonagram', template: `
|
|
888
888
|
<canvas #sonagram height="10"></canvas>
|
package/esm2022/lib/db/inddb.mjs
CHANGED
|
@@ -111,10 +111,10 @@ export class SprDb {
|
|
|
111
111
|
});
|
|
112
112
|
return obs;
|
|
113
113
|
}
|
|
114
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
115
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SprDb, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
115
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SprDb }); }
|
|
116
116
|
}
|
|
117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SprDb, decorators: [{
|
|
118
118
|
type: Injectable
|
|
119
119
|
}], ctorParameters: () => [] });
|
|
120
120
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvZGIvaW5kZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUdoQyxNQUFNLE9BQU8sSUFBSTtJQUtiLFlBQVksZUFBc0IsRUFBQyxRQUFzQjtRQUNyRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUMsZUFBZSxDQUFBO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUMsUUFBUSxDQUFBO0lBQzNCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDaEIsT0FBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUE7SUFDaEMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQTtJQUN6QixDQUFDO0NBQ0o7QUFHRCxNQUFNLE9BQU8sS0FBSzthQUVBLFdBQU0sR0FBQyxnQkFBZ0IsQUFBakIsQ0FBaUI7YUFFdkIsMkNBQXNDLEdBQUMsdUJBQXVCLEFBQXhCLENBQXlCO0lBQzVFLDBFQUEwRTthQUM3RCxjQUFTLEdBQUMsQ0FBQyxBQUFGLENBQUc7SUFHMUI7UUFEUSxXQUFNLEdBQWtCLElBQUksQ0FBQTtJQUVwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVk7UUFDaEIsSUFBSSxLQUFLLEdBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUVyQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBSUQsTUFBTSxDQUFDLE9BQU87UUFDVixJQUFJLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBYyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBRTdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxJQUFJ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QUUsQ0FBQzthQUN0QjtRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOzhHQTlHUSxLQUFLO2tIQUFMLEtBQUs7OzJGQUFMLEtBQUs7a0JBRGpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU3luY3tcclxuICAgIGlkPzpudW1iZXI7XHJcbiAgICBfb2JqZWN0U3RvcmVOYW1lOnN0cmluZztcclxuICAgIF9vYmplY3RJZDpzdHJpbmd8bnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKG9iamVjdFN0b3JlTmFtZTpzdHJpbmcsb2JqZWN0SWQ6c3RyaW5nfG51bWJlcil7XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmVOYW1lPW9iamVjdFN0b3JlTmFtZVxyXG4gICAgICAgIHRoaXMuX29iamVjdElkPW9iamVjdElkXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9iamVjdFN0b3JlTmFtZSgpOnN0cmluZ3tcclxuICAgICAgIHJldHVybiAgdGhpcy5fb2JqZWN0U3RvcmVOYW1lXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9iamVjdElkKCk6c3RyaW5nfG51bWJlcntcclxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0SWRcclxuICAgIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3ByRGIge1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZGJOYW1lPSdzcGVlY2hyZWNvcmRlcidcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIFJFQ09SRElOR19GSUxFX0NBQ0hFX09CSkVDVF9TVE9SRV9OQU1FPSdfcmVjb3JkaW5nX2ZpbGVfY2FjaGUnO1xyXG4gICAgIC8vcHVibGljIHN0YXRpYyBSRUNPUkRJTkdfRklMRV9DSFVOS1NfT0JKRUNUX1NUT1JFX05BTUU9J3JlY19maWxlX2NodW5rcyc7XHJcbiAgICBwdWJsaWMgc3RhdGljIGRiVmVyc2lvbj0xO1xyXG5cclxuICAgIHByaXZhdGUgX3N0b3JlOklEQkRhdGFiYXNlfG51bGw9bnVsbFxyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc3ByRGJGYWN0b3J5KCk6U3ByRGJ7XHJcbiAgICAgICBsZXQgc3ByRGI9bmV3IFNwckRiKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBzcHJEYjtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHN0YXRpYyBwcmVwYXJlKCk6T2JzZXJ2YWJsZTxJREJEYXRhYmFzZT4ge1xyXG4gICAgICAgIGxldCBvYnMgPSBuZXcgT2JzZXJ2YWJsZTxJREJEYXRhYmFzZT4oKHN1YnNjcmliZXIpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oXCJQcmVwYXJlIGluZGV4ZWQgZGF0YWJhc2UuLi5cIilcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleGVkREIpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb3I6IElEQk9wZW5EQlJlcXVlc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgb3IgPSBpbmRleGVkREIub3BlbihTcHJEYi5kYk5hbWUsIFNwckRiLmRiVmVyc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgb3Iub251cGdyYWRlbmVlZGVkID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYiA9IG9yLnJlc3VsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHI9b3IudHJhbnNhY3Rpb25cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhTcHJEYi5SRUNPUkRJTkdfRklMRV9DQUNIRV9PQkpFQ1RfU1RPUkVfTkFNRSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoU3ByRGIuUkVDT1JESU5HX0ZJTEVfQ0FDSEVfT0JKRUNUX1NUT1JFX05BTUUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGdXR1cmUgd29yayB0b3dhcmRzIGEgY29tcGxldGUgUFdBIHdoaWNoIHN0b3JlcyBhbGwgY2xpZW4gZGF0YSBpbiBpbmRleGVkIGRiIGFuZCBzeW5jaHJvbml6ZXMgdG8gdGhlIHNlcnZlcjogU2VlIGV4cGVyaW1lbnRhbCBHaXQgYnJhbmNoIFwicHJvZ3Jlc3NpdmVfd2ViX2FwcFwiXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ19zeW5jJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdfc3luYycsIHtrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OnRydWV9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Byb2plY3QnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Byb2plY3QnLCB7a2V5UGF0aDogJ25hbWUnfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzZXNzaW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCBzZXNzU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Nlc3Npb24nLCB7a2V5UGF0aDogJ3Nlc3Npb25JZCd9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHNlc3NTdG9yZS5jcmVhdGVJbmRleCgncHJvamVjdElkeCcsIFsncHJvamVjdCddLCB7dW5pcXVlOmZhbHNlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1lbHNlIGlmKGV2Lm9sZFZlcnNpb248NSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgc2Vzc1N0b3JlPXRyLm9iamVjdFN0b3JlKCdzZXNzaW9uJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgc2Vzc1N0b3JlLmNyZWF0ZUluZGV4KCdwcm9qZWN0SWR4JywgWydwcm9qZWN0J10sIHt1bmlxdWU6ZmFsc2V9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3NjcmlwdCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgc2NyU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NjcmlwdCcsIHtrZXlQYXRoOiAnc2NyaXB0SWQnfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzY3JTdG9yZS5jcmVhdGVJbmRleCgncHJvamVjdElkeCcsIFsncHJvamVjdCddLCB7dW5pcXVlOmZhbHNlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdyZWNmaWxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCByZlN0b3JlPWRiLmNyZWF0ZU9iamVjdFN0b3JlKCdyZWNmaWxlJywge2tleVBhdGg6ICd1dWlkJ30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgcmZTdG9yZS5jcmVhdGVJbmRleCgnc2Vzc0lkSWR4JywgWydzZXNzaW9uSWQnXSwge3VuaXF1ZTpmYWxzZX0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgcmZTdG9yZS5jcmVhdGVJbmRleCgnc2Vzc0lkSXRlbWNvZGVJZHgnLCBbJ3Nlc3Npb25JZCcsJ2l0ZW1Db2RlJ10sIHt1bmlxdWU6ZmFsc2V9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKFNwckRiLlJFQ09SRElOR19GSUxFX0NBQ0hFX09CSkVDVF9TVE9SRV9OQU1FKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJmU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoU3ByRGIuUkVDT1JESU5HX0ZJTEVfQ0FDSEVfT0JKRUNUX1NUT1JFX05BTUUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldi5vbGRWZXJzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oXCJVcGdyYWRlZCBpbmRleGVkIGRhdGFiYXNlIFwiICsgU3ByRGIuZGJOYW1lICsgXCIgc2NoZW1hIGZyb20gdmVyc2lvbiBcIiArIGV2Lm9sZFZlcnNpb24gKyBcIiB0byBcIiArIGV2Lm5ld1ZlcnNpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oXCJDcmVhdGVkIGluZGV4ZWQgZGF0YWJhc2UgXCIgKyBTcHJEYi5kYk5hbWUgKyBcIiBzY2hlbWEgdmVyc2lvbiBcIiArIGV2Lm5ld1ZlcnNpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgb3Iub25zdWNjZXNzID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIk9wZW5lZCBpbmRleGVkIGRhdGFiYXNlXCIpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGRiPW9yLnJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAgLy8gaVBhZCBXRWJLaXQgd29ya2Fyb3VuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gZG9lcyBub3QgaGVscCFcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAgZGIub25jbG9zZT0oZXYpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgY29uc29sZS5kZWJ1ZyhcIkRCIGNsb3NlZC4uLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZGVidWcoXCJDbG9zZSBkYi5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIGRiLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBsZXQgb3BhUnE9aW5kZXhlZERCLm9wZW4oU3ByRGIuZGJOYW1lLCBTcHJEYi5kYlZlcnNpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gb3BhUnEub251cGdyYWRlbmVlZGVkPShldik9Pnt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gb3BhUnEub25zdWNjZXNzPShldik9PntcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc29sZS5kZWJ1ZyhcImFuZCBvcGVuZWQgYWdhaW5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIHN1YnNjcmliZXIubmV4dChvcGFScS5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBvcGFScS5vbmVycm9yID0gKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IG9wZW4gaW5kZXhlZCBkYXRhYmFzZTogXCIgKyBTcHJEYi5kYk5hbWUgKyBcIjogXCIgKyBlcnIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChkYik7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBvci5vbmVycm9yID0gKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IG9wZW4gaW5kZXhlZCBkYXRhYmFzZTogXCIgKyBTcHJEYi5kYk5hbWUgKyBcIjogXCIgKyBlcnIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKFwiQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGluZGV4ZWQgZGF0YWJhc2VzXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBvYnM7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const SPEECHRECORDER_ENVIRONMENT_DEFAULTS = {
|
|
2
|
+
production: false,
|
|
3
|
+
apiType: 'files',
|
|
4
|
+
apiEndPoint: 'test',
|
|
5
|
+
apiVersion: 1,
|
|
6
|
+
enableDownloadRecordings: true,
|
|
7
|
+
enableUploadRecordings: false
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvZW52aXJvbm1lbnQvZW52aXJvbm1lbnQuZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUc7SUFDakQsVUFBVSxFQUFFLEtBQUs7SUFDakIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLE1BQU07SUFDbkIsVUFBVSxFQUFFLENBQUM7SUFDYix3QkFBd0IsRUFBQyxJQUFJO0lBQzdCLHNCQUFzQixFQUFFLEtBQUs7Q0FDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTUEVFQ0hSRUNPUkRFUl9FTlZJUk9OTUVOVF9ERUZBVUxUUyA9IHtcclxuICBwcm9kdWN0aW9uOiBmYWxzZSxcclxuICBhcGlUeXBlOiAnZmlsZXMnLFxyXG4gIGFwaUVuZFBvaW50OiAndGVzdCcsXHJcbiAgYXBpVmVyc2lvbjogMSxcclxuICBlbmFibGVEb3dubG9hZFJlY29yZGluZ3M6dHJ1ZSxcclxuICBlbmFibGVVcGxvYWRSZWNvcmRpbmdzOiBmYWxzZVxyXG59O1xyXG4iXX0=
|
|
@@ -52,10 +52,10 @@ export class ProjectService {
|
|
|
52
52
|
let prjUrl = this.projectUrl(id);
|
|
53
53
|
return this.http.get(prjUrl, { withCredentials: this.withCredentials });
|
|
54
54
|
}
|
|
55
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
56
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ProjectService, deps: [{ token: i1.HttpClient }, { token: i2.PlatformLocation }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
56
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ProjectService }); }
|
|
57
57
|
}
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ProjectService, decorators: [{
|
|
59
59
|
type: Injectable
|
|
60
60
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.PlatformLocation }, { type: i3.SpeechRecorderConfig, decorators: [{
|
|
61
61
|
type: Inject,
|
|
@@ -34,7 +34,7 @@ let BasicRecordingService = class BasicRecordingService {
|
|
|
34
34
|
constructor(http, config) {
|
|
35
35
|
this.http = http;
|
|
36
36
|
this.config = config;
|
|
37
|
-
this._maxAutoNetMemStoreSamples =
|
|
37
|
+
this._maxAutoNetMemStoreSamples = Number.MAX_SAFE_INTEGER;
|
|
38
38
|
this.withCredentials = false;
|
|
39
39
|
this.apiEndPoint = '';
|
|
40
40
|
if (config && config.apiEndPoint) {
|
|
@@ -46,6 +46,9 @@ let BasicRecordingService = class BasicRecordingService {
|
|
|
46
46
|
if (config != null && config.withCredentials != null) {
|
|
47
47
|
this.withCredentials = config.withCredentials;
|
|
48
48
|
}
|
|
49
|
+
if (config && config.apiVersion > 1) {
|
|
50
|
+
this._maxAutoNetMemStoreSamples = BasicRecordingService_1.DEFAULT_MAX_NET_AUTO_MEM_STORE_SAMPLES;
|
|
51
|
+
}
|
|
49
52
|
}
|
|
50
53
|
audioRequestByURL(audioBaseUrl, audioURLSearchParams) {
|
|
51
54
|
let audioUrl = audioBaseUrl;
|
|
@@ -215,4 +218,4 @@ BasicRecordingService = BasicRecordingService_1 = __decorate([
|
|
|
215
218
|
__param(1, Inject(SPEECHRECORDER_CONFIG))
|
|
216
219
|
], BasicRecordingService);
|
|
217
220
|
export { BasicRecordingService };
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWNfcmVjb3JkaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvcmVjb3JkaW5ncy9iYXNpY19yZWNvcmRpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBYSxXQUFXLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxPQUFPLEVBQUUscUJBQXFCLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFDdEYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8sYUFBYTtJQUN4QixJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUNELFlBQW9CLGtCQUFpQyxFQUFTLGVBQXNCLEVBQVMsbUJBQStCO1FBQXhHLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBZTtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFPO1FBQVMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFZO0lBQUUsQ0FB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QztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzs7QUFyTVEscUJBQXFCO0lBVVcsV0FBQSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQTtHQVY3RCxxQkFBcUIsQ0F1TWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtJbmplY3R9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QXBpVHlwZSwgU1BFRUNIUkVDT1JERVJfQ09ORklHLCBTcGVlY2hSZWNvcmRlckNvbmZpZ30gZnJvbSBcIi4uLy4uL3Nwci5jb25maWdcIjtcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge05ldEF1ZGlvQnVmZmVyfSBmcm9tIFwiLi4vLi4vYXVkaW8vbmV0X2F1ZGlvX2J1ZmZlclwiO1xyXG5pbXBvcnQge1VVSUR9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xyXG5pbXBvcnQge1dhdlJlYWRlcn0gZnJvbSBcIi4uLy4uL2F1ZGlvL2ltcGwvd2F2cmVhZGVyXCI7XHJcbmltcG9ydCB7UENNQXVkaW9Gb3JtYXR9IGZyb20gXCIuLi8uLi9hdWRpby9mb3JtYXRcIjtcclxuaW1wb3J0IHtBdWRpb0NvbnRleHRQcm92aWRlcn0gZnJvbSBcIi4uLy4uL2F1ZGlvL2NvbnRleHRcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBDaHVua0Rvd25sb2Fke1xyXG4gIGdldCBvcmdQQ01BdWRpb0Zvcm1hdCgpOiBQQ01BdWRpb0Zvcm1hdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3JnUENNQXVkaW9Gb3JtYXQ7XHJcbiAgfVxyXG5cclxuICBnZXQgb3JnRnJhbWVMZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9vcmdGcmFtZUxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldCBkZWNvZGVkQXVkaW9CdWZmZXIoKTogQXVkaW9CdWZmZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZWRBdWRpb0J1ZmZlcjtcclxuICB9XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfb3JnUENNQXVkaW9Gb3JtYXQ6UENNQXVkaW9Gb3JtYXQscHJpdmF0ZSBfb3JnRnJhbWVMZW5ndGg6bnVtYmVyLHByaXZhdGUgX2RlY29kZWRBdWRpb0J1ZmZlcjpBdWRpb0J1ZmZlcil7fVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQmFzaWNSZWNvcmRpbmdTZXJ2aWNle1xyXG4gIC8vIGlQYWQgOXRoIGdlbmVyYXRpb24sIGlPUyAxNS43LjEsIHNvbWV0aW1lczpcclxuICAvLyBGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogV2ViS2l0IGhhdCBlaW5lbiBpbnRlcm5lbiBGZWhsZXIgZmVzdGdlc3RlbGx0XHJcbiAgLy8gRmlyZWZveCBvbiBXaW5kb3dzIGNyYXNoZXNcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ0hVTktFRF9ET1dOTE9BRF9TRUNPTkRTOm51bWJlcj0xMDtcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX05FVF9BVVRPX01FTV9TVE9SRV9TQU1QTEVTOm51bWJlcj0yODgwMDAwKjU7IC8vIERlZmF1bHQgNSBtaW51dGVzIG9uZSBjaGFubmVsIGF0IDQ4a0h6XHJcbiAgcHJvdGVjdGVkIF9tYXhBdXRvTmV0TWVtU3RvcmVTYW1wbGVzOm51bWJlcj1CYXNpY1JlY29yZGluZ1NlcnZpY2UuREVGQVVMVF9NQVhfTkVUX0FVVE9fTUVNX1NUT1JFX1NBTVBMRVM7XHJcbiAgICBwcm90ZWN0ZWQgYXBpRW5kUG9pbnQ6IHN0cmluZztcclxuICAgIHByb3RlY3RlZCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCwgQEluamVjdChTUEVFQ0hSRUNPUkRFUl9DT05GSUcpIHByb3RlY3RlZCBjb25maWc/OiBTcGVlY2hSZWNvcmRlckNvbmZpZykge1xyXG4gICAgICAgIHRoaXMuYXBpRW5kUG9pbnQgPSAnJ1xyXG5cclxuICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5hcGlFbmRQb2ludCkge1xyXG4gICAgICAgICAgICB0aGlzLmFwaUVuZFBvaW50ID0gY29uZmlnLmFwaUVuZFBvaW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5hcGlFbmRQb2ludCAhPT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy5hcGlFbmRQb2ludCA9IHRoaXMuYXBpRW5kUG9pbnQgKyAnLydcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsICYmIGNvbmZpZy53aXRoQ3JlZGVudGlhbHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLndpdGhDcmVkZW50aWFscyA9IGNvbmZpZy53aXRoQ3JlZGVudGlhbHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhdWRpb1JlcXVlc3RCeVVSTChhdWRpb0Jhc2VVcmw6c3RyaW5nLGF1ZGlvVVJMU2VhcmNoUGFyYW1zOlVSTFNlYXJjaFBhcmFtcyk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFycmF5QnVmZmVyPj4ge1xyXG4gICAgICAgIGxldCBhdWRpb1VybD1hdWRpb0Jhc2VVcmw7XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmFwaVR5cGUgPT09IEFwaVR5cGUuRklMRVMpIHtcclxuICAgICAgICAgICAgLy8gZm9yIGRldmVsb3BtZW50IGFuZCBkZW1vXHJcbiAgICAgICAgICAgIGF1ZGlvVXJsPWF1ZGlvVXJsKycud2F2JztcclxuICAgICAgICAgICAgLy8gYXBwZW5kIFVVSUQgdG8gbWFrZSByZXF1ZXN0IFVSTCB1bmlxdWUgdG8gYXZvaWQgbG9jYWxob3N0IHNlcnZlciBjYWNoaW5nXHJcbiAgICAgICAgICAgIGF1ZGlvVVJMU2VhcmNoUGFyYW1zLnNldCgncmVxdWVzdFVVSUQnLFVVSUQuZ2VuZXJhdGUoKSk7XHJcbiAgICAgICAgICAgIC8vYXVkaW9VcmwgPSBhdWRpb1VybCArICcud2F2P3JlcXVlc3RVVUlEPScgKyBVVUlELmdlbmVyYXRlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhdWRpb1VybD1hdWRpb1VybCsnPycrYXVkaW9VUkxTZWFyY2hQYXJhbXMudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsICdhdWRpby93YXYnKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChhdWRpb1VybCwge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxyXG4gICAgICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXHJcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy53aXRoQ3JlZGVudGlhbHNcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNodW5rQXVkaW9SZXF1ZXN0KGJhc2VBdWRpb1VybDpzdHJpbmcsc3RhcnRGcmFtZTpudW1iZXI9MCxmcmFtZUxlbmd0aDpudW1iZXIpOiBPYnNlcnZhYmxlPENodW5rRG93bmxvYWR8bnVsbD4ge1xyXG5cclxuICAgICAgICBsZXQgYXVzcHM9bmV3IFVSTFNlYXJjaFBhcmFtcygpO1xyXG4gICAgICAgIGF1c3BzLnNldCgnc3RhcnRGcmFtZScsc3RhcnRGcmFtZS50b1N0cmluZygpKTtcclxuICAgICAgICBhdXNwcy5zZXQoJ2ZyYW1lTGVuZ3RoJyxmcmFtZUxlbmd0aC50b1N0cmluZygpKTtcclxuICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuYXBpVHlwZSA9PT0gQXBpVHlwZS5GSUxFUykge1xyXG4gICAgICAgICAgICAvLyBmb3IgZGV2ZWxvcG1lbnQgYW5kIGRlbW9cclxuICAgICAgICAgICAgLy8gYXBwZW5kIFVVSUQgdG8gbWFrZSByZXF1ZXN0IFVSTCB1bmlxdWUgdG8gYXZvaWQgbG9jYWxob3N0IHNlcnZlciBjYWNoaW5nXHJcbiAgICAgICAgICAgIC8vYXVkaW9VcmwgPSBhdWRpb1VybCArICcud2F2P3JlcXVlc3RVVUlEPScgKyBVVUlELmdlbmVyYXRlKCk7XHJcbiAgICAgICAgICAgIGF1c3BzLnNldCgncmVxdWVzdFVVSUQnLFVVSUQuZ2VuZXJhdGUoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgb2JzPW5ldyBPYnNlcnZhYmxlPENodW5rRG93bmxvYWR8bnVsbD4ob2JzZXJ2ZXI9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXVkaW9SZXF1ZXN0QnlVUkwoYmFzZUF1ZGlvVXJsLGF1c3BzKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogcmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCB1c2UgUHJvbWlzZSB2ZXJzaW9uLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdpdGggU2FmYXJpIDEzICgxMy4wLjUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwLmJvZHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcImNodW5rQXVkaW9SZXF1ZXN0OiBvYnNlcnZlci5jbG9zZWQ6IFwiK29ic2VydmVyLmNsb3NlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJBdWRpbyBmaWxlIGJ5dGVzOiBcIityZXNwLmJvZHkuYnl0ZUxlbmd0aCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgb3JpZ2luYWwgYXVkaW8gZm9ybWF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd3IgPSBuZXcgV2F2UmVhZGVyKHJlc3AuYm9keSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwY21GbXQgPSB3ci5yZWFkRm9ybWF0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmdGbCA9IHdyLmZyYW1lTGVuZ3RoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZihwY21GbXQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmRlYnVnKFwiT3JpZ2luYWwgV0FWRSBmb3JtYXQgb2YgZG93bmxvYWQgY2h1bms6IFwiK3BjbUZtdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc29sZS5lcnJvcihcIkNvdWxkIG5vdCByZWFkIFdBVkUgZm9ybWF0IG9mIG9yaWdpbmFsIGRvd25sb2FkIGNodW5rIVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmKG9yZ0ZsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc29sZS5kZWJ1ZyhcIk9yaWdpbmFsIGZyYW1lIGxlbmd0aCBvZiBkb3dubG9hZCBjaHVuazogXCIrb3JnRmwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUuZXJyb3IoXCJDb3VsZCBub3QgcmVhZCBXQVZFIGZvcm1hdCBvZiBvcmlnaW5hbCBkb3dubG9hZCBjaHVuayFcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBjbUZtdCAmJiBvcmdGbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0NvbnRleHRQcm92aWRlci5kZWNvZGVBdWRpb0RhdGEocmVzcC5ib2R5KS50aGVuKChhYik9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJEZWNvZGVkIGF1ZGlvIGNodW5rIGZyYW1lczogXCIrYWIubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hEbCA9IG5ldyBDaHVua0Rvd25sb2FkKHBjbUZtdCwgb3JnRmwsIGFiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGNoRGwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZXJyb3Iuc3RhdHVzID09IDQwNCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgLy8gSW50ZXJwcmV0IG5vdCBhcyBhbiBlcnJvciwgdGhlIGZpbGUgaXN0IG5vdCByZWNvcmRlZCB5ZXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBvYnNlcnZlci5jb21wbGV0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIC8vIGFsbCBvdGhlciBzdGF0ZXMgYXJlIGVycm9yc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJSZWNvcmRpbmdzIHNlcnZpY2UgY2h1bmtBdWRpb1JlcXVlc3QgZXJyb3IgZGVjb2RpbmcgYXVkaW8gZGF0YTogXCIgKyBlcnJvci5uYW1lICsgXCI6IFwiICsgZXJyb3IubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJNc2cgPSAnQ291bGQgbm90IHBhcnNlIGF1ZGlvIGhlYWRlciBmb3IgZm9ybWF0IGFuZC9vciBmcmFtZSBsZW5ndGggb2YgZG93bmxvYWQuJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVyck1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyTXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVyck1zZyA9ICdGZXRjaGluZyBhdWRpbyBmaWxlOiByZXNwb25zZSBoYXMgbm8gYm9keSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVyck1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJNc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyb3I6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsIG90aGVyIHN0YXRlcyBhcmUgZXJyb3JzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnN0IGVyck1zZz0nRmV0Y2hpbmcgYXVkaW8gZmlsZSBIVFRQIGVycm9yOiAnK2Vycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmVycm9yKGVyck1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL29ic2VydmVyLmNvbXBsZXRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gb2JzO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgY2h1bmtBdWRpb1JlcXVlc3RUb05ldEF1ZGlvQnVmZmVyKGJhc2VBdWRpb1VybDogc3RyaW5nLCBzdGFydEZyYW1lOiBudW1iZXIgPSAwLCBvcmdTYW1wbGVSYXRlOiBudW1iZXIsIHNlY29uZHM6bnVtYmVyLGZyYW1lczogbnVtYmVyIHwgbnVsbCk6IE9ic2VydmFibGU8TmV0QXVkaW9CdWZmZXIgfCBudWxsPiB7XHJcbiAgICAgICAgLy9sZXQgYXVkaW9Vcmw9YmFzZUF1ZGlvVXJsKyc/c3RhcnRGcmFtZT0nK3N0YXJ0RnJhbWUrJyZmcmFtZUxlbmd0aD0nK2ZyYW1lTGVuZ3RoO1xyXG4gICAgICAgIC8vbGV0IGF1ZGlvVXJsPW5ldyBVUkwoYmFzZUF1ZGlvVXJsKTtcclxuICAgICAgICAvLyBpZihvcmdTYW1wbGVSYXRlIT1udWxsICYmIGZyYW1lTGVuZ3RoJW9yZ1NhbXBsZVJhdGU+MCl7XHJcbiAgICAgICAgLy8gICBjb25zdCBlcnJNc2c9J2ZyYW1lTGVuZ3RoIG11c3QgYmUgZXF1YWwgb3IgbXVsdGlwbGUgb2Ygb3JpZ2luYWwgc2FtcGxlcmF0ZS4nO1xyXG4gICAgICAgIC8vICAgY29uc29sZS5lcnJvcihlcnJNc2crJyAoJytmcmFtZUxlbmd0aCsnJScrb3JnU2FtcGxlUmF0ZSsnPT0nKyhmcmFtZUxlbmd0aCVvcmdTYW1wbGVSYXRlKSsnKScpO1xyXG4gICAgICAgIC8vICAgdGhyb3cgRXJyb3IoZXJyTXNnKVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBsZXQgZnJhbWVMZW5ndGg6bnVtYmVyPW9yZ1NhbXBsZVJhdGUqTWF0aC5yb3VuZChzZWNvbmRzKTtcclxuICAgICAgICBsZXQgYXVzcHM9bmV3IFVSTFNlYXJjaFBhcmFtcygpO1xyXG4gICAgICAgIGF1c3BzLnNldCgnc3RhcnRGcmFtZScsc3RhcnRGcmFtZS50b1N0cmluZygpKTtcclxuICAgICAgICBhdXNwcy5zZXQoJ2ZyYW1lTGVuZ3RoJyxmcmFtZUxlbmd0aC50b1N0cmluZygpKTtcclxuICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuYXBpVHlwZSA9PT0gQXBpVHlwZS5GSUxFUykge1xyXG4gICAgICAgICAgICAvLyBmb3IgZGV2ZWxvcG1lbnQgYW5kIGRlbW9cclxuICAgICAgICAgICAgLy8gYXBwZW5kIFVVSUQgdG8gbWFrZSByZXF1ZXN0IFVSTCB1bmlxdWUgdG8gYXZvaWQgbG9jYWxob3N0IHNlcnZlciBjYWNoaW5nXHJcbiAgICAgICAgICAgIC8vYXVkaW9VcmwgPSBhdWRpb1VybCArICcud2F2P3JlcXVlc3RVVUlEPScgKyBVVUlELmdlbmVyYXRlKCk7XHJcbiAgICAgICAgICAgIGF1c3BzLnNldCgncmVxdWVzdFVVSUQnLFVVSUQuZ2VuZXJhdGUoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBvYnM9bmV3IE9ic2VydmFibGU8TmV0QXVkaW9CdWZmZXJ8bnVsbD4oc3Vic2NyaWJlcj0+IHtcclxuICAgICAgICAgICAgdGhpcy5hdWRpb1JlcXVlc3RCeVVSTChiYXNlQXVkaW9VcmwsYXVzcHMpLnN1YnNjcmliZSh7bmV4dDoocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCB1c2UgUHJvbWlzZSB2ZXJzaW9uLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdpdGggU2FmYXJpIDEzICgxMy4wLjUpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3AuYm9keSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJjaHVua0F1ZGlvUmVxdWVzdFRvbmV0QWI6IHN1YnNjcmliZXIuY2xvc2VkOiBcIitzdWJzY3JpYmVyLmNsb3NlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcImNodW5rQXVkaW9SZXF1ZXN0VG9uZXRBYjogQXVkaW8gZmlsZSBieXRlczogXCIrcmVzcC5ib2R5LmJ5dGVMZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0NvbnRleHRQcm92aWRlci5kZWNvZGVBdWRpb0RhdGEocmVzcC5ib2R5KS50aGVuKGFiID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJjaHVua0F1ZGlvUmVxdWVzdFRvbmV0QWI6IERlY29kZWQgYXVkaW8gY2h1bmsgZnJhbWVzIGZvciBuZXRBYjogXCIrYWIubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJjaHVua0F1ZGlvUmVxdWVzdFRvbmV0QWI6IENyZWF0ZSBuZXRBYiBhYiBmcm9tIGNodW5rIGFiLi4uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZyYW1lcz09PW51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcignQ291bGQgbm90IGdldCBmcmFtZSBsZW5ndGggZnJvbSByZWNvcmRpbmcgZmlsZSBvYmplY3QnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmwgPSBmcmFtZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhYi5zYW1wbGVSYXRlICE9PSBvcmdTYW1wbGVSYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JnU2FtcGxlUmF0ZSAmJiBmcmFtZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbCA9IE1hdGgucm91bmQoYWIuc2FtcGxlUmF0ZSAqIGZyYW1lcyAvIG9yZ1NhbXBsZVJhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlBsYXRmb3JtIHNyOiBcIithYi5zYW1wbGVSYXRlK1wiLCBmaWxlIHNyOiBcIitvcmdTYW1wbGVSYXRlK1wiLCBkZWNvZGVkL29yZyBmcmFtZSBsZW5ndGg6IFwiK2ZsK1wiL1wiK2ZyYW1lcytcIiwgYWIubGVuZ3RoOiBcIithYi5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmFiID0gTmV0QXVkaW9CdWZmZXIuZnJvbUNodW5rQXVkaW9CdWZmZXIodGhpcyxiYXNlQXVkaW9VcmwsIGFiLCBmbCxmcmFtZUxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbGV0IHJwPW5ldyBSZWFkeVByb3ZpZGVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbmFiLnJlYWR5UHJvdmlkZXI9cnA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcnAucmVhZHkoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFiLnJlYWR5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYWIuZnJhbWVMZW4gPCBmcmFtZUxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiY2h1bmtBdWRpb1JlcXVlc3RUb25ldEFiOiBCdWlsdCBuZXRBYiBhYiBmcm9tIGNodW5rIGFiOiBGaXJzdCBjaHVuayBzaG9ydGVyIHRoYSBmcmFtZUxlbmd0aCAoXCIrbmV0QWJBdWRpb0J1ZmZlci5mcmFtZUxlbitcIjxcIitmcmFtZUxlbmd0aCtcIiksIGFzc3VtaW5nIGVuZCBvZiBkYXRhLCBzZWFsaW5nIG5ldEFiIGFiLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hYi5zZWFsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KG5hYik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2NodW5rQXVkaW9SZXF1ZXN0VG9OZXRBYjogZXJyb3I6ICcrZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdjaHVua0F1ZGlvUmVxdWVzdFRvTmV0QWI6IEZldGNoaW5nIGF1ZGlvIGZpbGU6IHJlc3BvbnNlIGhhcyBubyBib2R5Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoJ2NodW5rQXVkaW9SZXF1ZXN0VG9OZXRBYjogRmV0Y2hpbmcgYXVkaW8gZmlsZTogcmVzcG9uc2UgaGFzIG5vIGJvZHknKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6KGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignY2h1bmtBdWRpb1JlcXVlc3RUb05ldEFiOiBlcnJvcjogJytlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9zdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBvYnM7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWNfcmVjb3JkaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvcmVjb3JkaW5ncy9iYXNpY19yZWNvcmRpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBYSxXQUFXLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxPQUFPLEVBQUUscUJBQXFCLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFDdEYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8sYUFBYTtJQUN4QixJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUNELFlBQW9CLGtCQUFpQyxFQUFTLGVBQXNCLEVBQVMsbUJBQStCO1FBQXhHLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBZTtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFPO1FBQVMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFZO0lBQUUsQ0FB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Q0FBQztvQkFDekQsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDeEIsd0JBQXdCO2dCQUM1QixDQUFDO2FBQ0osQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7O0FBeE1RLHFCQUFxQjtJQVVXLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7R0FWN0QscUJBQXFCLENBME1qQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7SW5qZWN0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0FwaVR5cGUsIFNQRUVDSFJFQ09SREVSX0NPTkZJRywgU3BlZWNoUmVjb3JkZXJDb25maWd9IGZyb20gXCIuLi8uLi9zcHIuY29uZmlnXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtOZXRBdWRpb0J1ZmZlcn0gZnJvbSBcIi4uLy4uL2F1ZGlvL25ldF9hdWRpb19idWZmZXJcIjtcclxuaW1wb3J0IHtVVUlEfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbHNcIjtcclxuaW1wb3J0IHtXYXZSZWFkZXJ9IGZyb20gXCIuLi8uLi9hdWRpby9pbXBsL3dhdnJlYWRlclwiO1xyXG5pbXBvcnQge1BDTUF1ZGlvRm9ybWF0fSBmcm9tIFwiLi4vLi4vYXVkaW8vZm9ybWF0XCI7XHJcbmltcG9ydCB7QXVkaW9Db250ZXh0UHJvdmlkZXJ9IGZyb20gXCIuLi8uLi9hdWRpby9jb250ZXh0XCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ2h1bmtEb3dubG9hZHtcclxuICBnZXQgb3JnUENNQXVkaW9Gb3JtYXQoKTogUENNQXVkaW9Gb3JtYXQge1xyXG4gICAgcmV0dXJuIHRoaXMuX29yZ1BDTUF1ZGlvRm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IG9yZ0ZyYW1lTGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3JnRnJhbWVMZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVjb2RlZEF1ZGlvQnVmZmVyKCk6IEF1ZGlvQnVmZmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVkQXVkaW9CdWZmZXI7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX29yZ1BDTUF1ZGlvRm9ybWF0OlBDTUF1ZGlvRm9ybWF0LHByaXZhdGUgX29yZ0ZyYW1lTGVuZ3RoOm51bWJlcixwcml2YXRlIF9kZWNvZGVkQXVkaW9CdWZmZXI6QXVkaW9CdWZmZXIpe31cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEJhc2ljUmVjb3JkaW5nU2VydmljZXtcclxuICAvLyBpUGFkIDl0aCBnZW5lcmF0aW9uLCBpT1MgMTUuNy4xLCBzb21ldGltZXM6XHJcbiAgLy8gRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IFdlYktpdCBoYXQgZWluZW4gaW50ZXJuZW4gRmVobGVyIGZlc3RnZXN0ZWxsdFxyXG4gIC8vIEZpcmVmb3ggb24gV2luZG93cyBjcmFzaGVzXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0NIVU5LRURfRE9XTkxPQURfU0VDT05EUzpudW1iZXI9MTA7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX01BWF9ORVRfQVVUT19NRU1fU1RPUkVfU0FNUExFUzpudW1iZXI9Mjg4MDAwMCo1OyAvLyBEZWZhdWx0IDUgbWludXRlcyBvbmUgY2hhbm5lbCBhdCA0OGtIelxyXG4gIHByb3RlY3RlZCBfbWF4QXV0b05ldE1lbVN0b3JlU2FtcGxlczpudW1iZXI9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XHJcbiAgICBwcm90ZWN0ZWQgYXBpRW5kUG9pbnQ6IHN0cmluZztcclxuICAgIHByb3RlY3RlZCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCwgQEluamVjdChTUEVFQ0hSRUNPUkRFUl9DT05GSUcpIHByb3RlY3RlZCBjb25maWc/OiBTcGVlY2hSZWNvcmRlckNvbmZpZykge1xyXG4gICAgICAgIHRoaXMuYXBpRW5kUG9pbnQgPSAnJ1xyXG5cclxuICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5hcGlFbmRQb2ludCkge1xyXG4gICAgICAgICAgICB0aGlzLmFwaUVuZFBvaW50ID0gY29uZmlnLmFwaUVuZFBvaW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5hcGlFbmRQb2ludCAhPT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy5hcGlFbmRQb2ludCA9IHRoaXMuYXBpRW5kUG9pbnQgKyAnLydcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsICYmIGNvbmZpZy53aXRoQ3JlZGVudGlhbHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLndpdGhDcmVkZW50aWFscyA9IGNvbmZpZy53aXRoQ3JlZGVudGlhbHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNvbmZpZyAmJiBjb25maWcuYXBpVmVyc2lvbj4xKXtcclxuICAgICAgICAgIHRoaXMuX21heEF1dG9OZXRNZW1TdG9yZVNhbXBsZXM9QmFzaWNSZWNvcmRpbmdTZXJ2aWNlLkRFRkFVTFRfTUFYX05FVF9BVVRPX01FTV9TVE9SRV9TQU1QTEVTO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXVkaW9SZXF1ZXN0QnlVUkwoYXVkaW9CYXNlVXJsOnN0cmluZyxhdWRpb1VSTFNlYXJjaFBhcmFtczpVUkxTZWFyY2hQYXJhbXMpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcnJheUJ1ZmZlcj4+IHtcclxuICAgICAgICBsZXQgYXVkaW9Vcmw9YXVkaW9CYXNlVXJsO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5hcGlUeXBlID09PSBBcGlUeXBlLkZJTEVTKSB7XHJcbiAgICAgICAgICAgIC8vIGZvciBkZXZlbG9wbWVudCBhbmQgZGVtb1xyXG4gICAgICAgICAgICBhdWRpb1VybD1hdWRpb1VybCsnLndhdic7XHJcbiAgICAgICAgICAgIC8vIGFwcGVuZCBVVUlEIHRvIG1ha2UgcmVxdWVzdCBVUkwgdW5pcXVlIHRvIGF2b2lkIGxvY2FsaG9zdCBzZXJ2ZXIgY2FjaGluZ1xyXG4gICAgICAgICAgICBhdWRpb1VSTFNlYXJjaFBhcmFtcy5zZXQoJ3JlcXVlc3RVVUlEJyxVVUlELmdlbmVyYXRlKCkpO1xyXG4gICAgICAgICAgICAvL2F1ZGlvVXJsID0gYXVkaW9VcmwgKyAnLndhdj9yZXF1ZXN0VVVJRD0nICsgVVVJRC5nZW5lcmF0ZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXVkaW9Vcmw9YXVkaW9VcmwrJz8nK2F1ZGlvVVJMU2VhcmNoUGFyYW1zLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCAnYXVkaW8vd2F2Jyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYXVkaW9VcmwsIHtcclxuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxyXG4gICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMud2l0aENyZWRlbnRpYWxzXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaHVua0F1ZGlvUmVxdWVzdChiYXNlQXVkaW9Vcmw6c3RyaW5nLHN0YXJ0RnJhbWU6bnVtYmVyPTAsZnJhbWVMZW5ndGg6bnVtYmVyKTogT2JzZXJ2YWJsZTxDaHVua0Rvd25sb2FkfG51bGw+IHtcclxuXHJcbiAgICAgICAgbGV0IGF1c3BzPW5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcclxuICAgICAgICBhdXNwcy5zZXQoJ3N0YXJ0RnJhbWUnLHN0YXJ0RnJhbWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgYXVzcHMuc2V0KCdmcmFtZUxlbmd0aCcsZnJhbWVMZW5ndGgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmFwaVR5cGUgPT09IEFwaVR5cGUuRklMRVMpIHtcclxuICAgICAgICAgICAgLy8gZm9yIGRldmVsb3BtZW50IGFuZCBkZW1vXHJcbiAgICAgICAgICAgIC8vIGFwcGVuZCBVVUlEIHRvIG1ha2UgcmVxdWVzdCBVUkwgdW5pcXVlIHRvIGF2b2lkIGxvY2FsaG9zdCBzZXJ2ZXIgY2FjaGluZ1xyXG4gICAgICAgICAgICAvL2F1ZGlvVXJsID0gYXVkaW9VcmwgKyAnLndhdj9yZXF1ZXN0VVVJRD0nICsgVVVJRC5nZW5lcmF0ZSgpO1xyXG4gICAgICAgICAgICBhdXNwcy5zZXQoJ3JlcXVlc3RVVUlEJyxVVUlELmdlbmVyYXRlKCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG9icz1uZXcgT2JzZXJ2YWJsZTxDaHVua0Rvd25sb2FkfG51bGw+KG9ic2VydmVyPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGlvUmVxdWVzdEJ5VVJMKGJhc2VBdWRpb1VybCxhdXNwcykuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IHJlc3AgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgdXNlIFByb21pc2UgdmVyc2lvbiwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIFNhZmFyaSAxMyAoMTMuMC41KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcC5ib2R5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJjaHVua0F1ZGlvUmVxdWVzdDogb2JzZXJ2ZXIuY2xvc2VkOiBcIitvYnNlcnZlci5jbG9zZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiQXVkaW8gZmlsZSBieXRlczogXCIrcmVzcC5ib2R5LmJ5dGVMZW5ndGgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIG9yaWdpbmFsIGF1ZGlvIGZvcm1hdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdyID0gbmV3IFdhdlJlYWRlcihyZXNwLmJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGNtRm10ID0gd3IucmVhZEZvcm1hdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JnRmwgPSB3ci5mcmFtZUxlbmd0aCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYocGNtRm10KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc29sZS5kZWJ1ZyhcIk9yaWdpbmFsIFdBVkUgZm9ybWF0IG9mIGRvd25sb2FkIGNodW5rOiBcIitwY21GbXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUuZXJyb3IoXCJDb3VsZCBub3QgcmVhZCBXQVZFIGZvcm1hdCBvZiBvcmlnaW5hbCBkb3dubG9hZCBjaHVuayFcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZihvcmdGbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUuZGVidWcoXCJPcmlnaW5hbCBmcmFtZSBsZW5ndGggb2YgZG93bmxvYWQgY2h1bms6IFwiK29yZ0ZsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IHJlYWQgV0FWRSBmb3JtYXQgb2Ygb3JpZ2luYWwgZG93bmxvYWQgY2h1bmshXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwY21GbXQgJiYgb3JnRmwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9Db250ZXh0UHJvdmlkZXIuZGVjb2RlQXVkaW9EYXRhKHJlc3AuYm9keSkudGhlbigoYWIpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiRGVjb2RlZCBhdWRpbyBjaHVuayBmcmFtZXM6IFwiK2FiLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoRGwgPSBuZXcgQ2h1bmtEb3dubG9hZChwY21GbXQsIG9yZ0ZsLCBhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChjaERsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZihlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGVycm9yLnN0YXR1cyA9PSA0MDQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIC8vIEludGVycHJldCBub3QgYXMgYW4gZXJyb3IsIHRoZSBmaWxlIGlzdCBub3QgcmVjb3JkZWQgeWV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgb2JzZXJ2ZXIuY29tcGxldGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAvLyBhbGwgb3RoZXIgc3RhdGVzIGFyZSBlcnJvcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUmVjb3JkaW5ncyBzZXJ2aWNlIGNodW5rQXVkaW9SZXF1ZXN0IGVycm9yIGRlY29kaW5nIGF1ZGlvIGRhdGE6IFwiICsgZXJyb3IubmFtZSArIFwiOiBcIiArIGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyTXNnID0gJ0NvdWxkIG5vdCBwYXJzZSBhdWRpbyBoZWFkZXIgZm9yIGZvcm1hdCBhbmQvb3IgZnJhbWUgbGVuZ3RoIG9mIGRvd25sb2FkLic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJNc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVyck1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJNc2cgPSAnRmV0Y2hpbmcgYXVkaW8gZmlsZTogcmVzcG9uc2UgaGFzIG5vIGJvZHknO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJNc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyTXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbCBvdGhlciBzdGF0ZXMgYXJlIGVycm9yc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zdCBlcnJNc2c9J0ZldGNoaW5nIGF1ZGlvIGZpbGUgSFRUUCBlcnJvcjogJytlcnJvcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcihlcnJNc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9vYnNlcnZlci5jb21wbGV0ZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG9icztcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIGNodW5rQXVkaW9SZXF1ZXN0VG9OZXRBdWRpb0J1ZmZlcihiYXNlQXVkaW9Vcmw6IHN0cmluZywgc3RhcnRGcmFtZTogbnVtYmVyID0gMCwgb3JnU2FtcGxlUmF0ZTogbnVtYmVyLCBzZWNvbmRzOm51bWJlcixmcmFtZXM6IG51bWJlciB8IG51bGwpOiBPYnNlcnZhYmxlPE5ldEF1ZGlvQnVmZmVyIHwgbnVsbD4ge1xyXG4gICAgICAgIC8vbGV0IGF1ZGlvVXJsPWJhc2VBdWRpb1VybCsnP3N0YXJ0RnJhbWU9JytzdGFydEZyYW1lKycmZnJhbWVMZW5ndGg9JytmcmFtZUxlbmd0aDtcclxuICAgICAgICAvL2xldCBhdWRpb1VybD1uZXcgVVJMKGJhc2VBdWRpb1VybCk7XHJcbiAgICAgICAgLy8gaWYob3JnU2FtcGxlUmF0ZSE9bnVsbCAmJiBmcmFtZUxlbmd0aCVvcmdTYW1wbGVSYXRlPjApe1xyXG4gICAgICAgIC8vICAgY29uc3QgZXJyTXNnPSdmcmFtZUxlbmd0aCBtdXN0IGJlIGVxdWFsIG9yIG11bHRpcGxlIG9mIG9yaWdpbmFsIHNhbXBsZXJhdGUuJztcclxuICAgICAgICAvLyAgIGNvbnNvbGUuZXJyb3IoZXJyTXNnKycgKCcrZnJhbWVMZW5ndGgrJyUnK29yZ1NhbXBsZVJhdGUrJz09JysoZnJhbWVMZW5ndGglb3JnU2FtcGxlUmF0ZSkrJyknKTtcclxuICAgICAgICAvLyAgIHRocm93IEVycm9yKGVyck1zZylcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgbGV0IGZyYW1lTGVuZ3RoOm51bWJlcj1vcmdTYW1wbGVSYXRlKk1hdGgucm91bmQoc2Vjb25kcyk7XHJcbiAgICAgICAgbGV0IGF1c3BzPW5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcclxuICAgICAgICBhdXNwcy5zZXQoJ3N0YXJ0RnJhbWUnLHN0YXJ0RnJhbWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgYXVzcHMuc2V0KCdmcmFtZUxlbmd0aCcsZnJhbWVMZW5ndGgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmFwaVR5cGUgPT09IEFwaVR5cGUuRklMRVMpIHtcclxuICAgICAgICAgICAgLy8gZm9yIGRldmVsb3BtZW50IGFuZCBkZW1vXHJcbiAgICAgICAgICAgIC8vIGFwcGVuZCBVVUlEIHRvIG1ha2UgcmVxdWVzdCBVUkwgdW5pcXVlIHRvIGF2b2lkIGxvY2FsaG9zdCBzZXJ2ZXIgY2FjaGluZ1xyXG4gICAgICAgICAgICAvL2F1ZGlvVXJsID0gYXVkaW9VcmwgKyAnLndhdj9yZXF1ZXN0VVVJRD0nICsgVVVJRC5nZW5lcmF0ZSgpO1xyXG4gICAgICAgICAgICBhdXNwcy5zZXQoJ3JlcXVlc3RVVUlEJyxVVUlELmdlbmVyYXRlKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgb2JzPW5ldyBPYnNlcnZhYmxlPE5ldEF1ZGlvQnVmZmVyfG51bGw+KHN1YnNjcmliZXI9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXVkaW9SZXF1ZXN0QnlVUkwoYmFzZUF1ZGlvVXJsLGF1c3BzKS5zdWJzY3JpYmUoe25leHQ6KHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgdXNlIFByb21pc2UgdmVyc2lvbiwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIFNhZmFyaSAxMyAoMTMuMC41KVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwLmJvZHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiY2h1bmtBdWRpb1JlcXVlc3RUb25ldEFiOiBzdWJzY3JpYmVyLmNsb3NlZDogXCIrc3Vic2NyaWJlci5jbG9zZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJjaHVua0F1ZGlvUmVxdWVzdFRvbmV0QWI6IEF1ZGlvIGZpbGUgYnl0ZXM6IFwiK3Jlc3AuYm9keS5ieXRlTGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9Db250ZXh0UHJvdmlkZXIuZGVjb2RlQXVkaW9EYXRhKHJlc3AuYm9keSkudGhlbihhYiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiY2h1bmtBdWRpb1JlcXVlc3RUb25ldEFiOiBEZWNvZGVkIGF1ZGlvIGNodW5rIGZyYW1lcyBmb3IgbmV0QWI6IFwiK2FiLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiY2h1bmtBdWRpb1JlcXVlc3RUb25ldEFiOiBDcmVhdGUgbmV0QWIgYWIgZnJvbSBjaHVuayBhYi4uLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihmcmFtZXM9PT1udWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihuZXcgRXJyb3IoJ0NvdWxkIG5vdCBnZXQgZnJhbWUgbGVuZ3RoIGZyb20gcmVjb3JkaW5nIGZpbGUgb2JqZWN0JykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsID0gZnJhbWVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWIuc2FtcGxlUmF0ZSAhPT0gb3JnU2FtcGxlUmF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9yZ1NhbXBsZVJhdGUgJiYgZnJhbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmwgPSBNYXRoLnJvdW5kKGFiLnNhbXBsZVJhdGUgKiBmcmFtZXMgLyBvcmdTYW1wbGVSYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJQbGF0Zm9ybSBzcjogXCIrYWIuc2FtcGxlUmF0ZStcIiwgZmlsZSBzcjogXCIrb3JnU2FtcGxlUmF0ZStcIiwgZGVjb2RlZC9vcmcgZnJhbWUgbGVuZ3RoOiBcIitmbCtcIi9cIitmcmFtZXMrXCIsIGFiLmxlbmd0aDogXCIrYWIubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5hYiA9IE5ldEF1ZGlvQnVmZmVyLmZyb21DaHVua0F1ZGlvQnVmZmVyKHRoaXMsYmFzZUF1ZGlvVXJsLCBhYiwgZmwsZnJhbWVMZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xldCBycD1uZXcgUmVhZHlQcm92aWRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL25hYi5yZWFkeVByb3ZpZGVyPXJwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3JwLnJlYWR5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hYi5yZWFkeSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFiLmZyYW1lTGVuIDwgZnJhbWVMZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcImNodW5rQXVkaW9SZXF1ZXN0VG9uZXRBYjogQnVpbHQgbmV0QWIgYWIgZnJvbSBjaHVuayBhYjogRmlyc3QgY2h1bmsgc2hvcnRlciB0aGEgZnJhbWVMZW5ndGggKFwiK25ldEFiQXVkaW9CdWZmZXIuZnJhbWVMZW4rXCI8XCIrZnJhbWVMZW5ndGgrXCIpLCBhc3N1bWluZyBlbmQgb2YgZGF0YSwgc2VhbGluZyBuZXRBYiBhYi5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYWIuc2VhbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChuYWIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdjaHVua0F1ZGlvUmVxdWVzdFRvTmV0QWI6IGVycm9yOiAnK2Vycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignY2h1bmtBdWRpb1JlcXVlc3RUb05ldEFiOiBGZXRjaGluZyBhdWRpbyBmaWxlOiByZXNwb25zZSBoYXMgbm8gYm9keScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKCdjaHVua0F1ZGlvUmVxdWVzdFRvTmV0QWI6IEZldGNoaW5nIGF1ZGlvIGZpbGU6IHJlc3BvbnNlIGhhcyBubyBib2R5Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOihlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2NodW5rQXVkaW9SZXF1ZXN0VG9OZXRBYjogZXJyb3I6ICcrZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gb2JzO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -1002,10 +1002,10 @@ export class RecordingService extends BasicRecordingService {
|
|
|
1002
1002
|
});
|
|
1003
1003
|
return wobs;
|
|
1004
1004
|
}
|
|
1005
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
1006
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
1005
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: RecordingService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1006
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: RecordingService }); }
|
|
1007
1007
|
}
|
|
1008
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
1008
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: RecordingService, decorators: [{
|
|
1009
1009
|
type: Injectable
|
|
1010
1010
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.SpeechRecorderConfig, decorators: [{
|
|
1011
1011
|
type: Inject,
|
|
@@ -35,10 +35,10 @@ export class ScriptService {
|
|
|
35
35
|
}
|
|
36
36
|
return this.http.get(scriptUrl, { withCredentials: this.withCredentials });
|
|
37
37
|
}
|
|
38
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
39
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ScriptService, deps: [{ token: i1.HttpClient }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
39
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ScriptService }); }
|
|
40
40
|
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ScriptService, decorators: [{
|
|
42
42
|
type: Injectable
|
|
43
43
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.SpeechRecorderConfig, decorators: [{
|
|
44
44
|
type: Inject,
|