speechrecorderng 2.25.2 → 3.0.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/esm2020/lib/audio/array_audio_buffer.mjs +101 -0
- package/esm2020/lib/audio/array_audio_buffer_input_stream.mjs +86 -0
- package/esm2020/lib/audio/audio_data_holder.mjs +109 -0
- package/esm2020/lib/audio/audio_display.mjs +5 -5
- package/esm2020/lib/audio/audio_player.mjs +9 -7
- package/esm2020/lib/audio/capture/capture.mjs +6 -1
- package/esm2020/lib/audio/dsp/level_measure.mjs +97 -55
- package/esm2020/lib/audio/io/stream.mjs +3 -3
- package/esm2020/lib/audio/persistor.mjs +12 -6
- package/esm2020/lib/audio/playback/array_audio_buffer_source_node.mjs +265 -0
- package/esm2020/lib/audio/playback/player.mjs +184 -50
- package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +25 -13
- package/esm2020/lib/audio/ui/audio_display_scroll_pane.mjs +2 -2
- package/esm2020/lib/audio/ui/audiosignal.mjs +206 -77
- package/esm2020/lib/audio/ui/container.mjs +14 -14
- package/esm2020/lib/audio/ui/livelevel.mjs +17 -3
- package/esm2020/lib/audio/ui/sonagram.mjs +343 -160
- package/esm2020/lib/io/stream.mjs +77 -1
- package/esm2020/lib/net/uploader.mjs +15 -3
- package/esm2020/lib/speechrecorder/recording.mjs +63 -7
- package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +96 -7
- package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +119 -106
- package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +34 -7
- package/esm2020/lib/speechrecorder/session/progress.mjs +2 -2
- package/esm2020/lib/speechrecorder/session/prompting.mjs +2 -2
- package/esm2020/lib/speechrecorder/session/recorder_combi_pane.mjs +6 -3
- package/esm2020/lib/speechrecorder/session/recording_file_cache.mjs +195 -0
- package/esm2020/lib/speechrecorder/session/recording_list.mjs +23 -10
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +12 -6
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +5 -5
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +13 -9
- package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +8 -5
- package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +123 -101
- package/esm2020/lib/speechrecorderng.component.mjs +2 -2
- package/esm2020/lib/speechrecorderng.module.mjs +5 -4
- package/esm2020/lib/spr.module.version.mjs +2 -2
- package/esm2020/lib/ui/recordingitem_display.mjs +2 -2
- package/fesm2015/speechrecorderng.mjs +2355 -753
- package/fesm2015/speechrecorderng.mjs.map +1 -1
- package/fesm2020/speechrecorderng.mjs +2338 -746
- package/fesm2020/speechrecorderng.mjs.map +1 -1
- package/lib/audio/array_audio_buffer.d.ts +15 -0
- package/lib/audio/array_audio_buffer_input_stream.d.ts +14 -0
- package/lib/audio/audio_data_holder.d.ts +29 -0
- package/lib/audio/audio_display.d.ts +2 -1
- package/lib/audio/audio_player.d.ts +2 -1
- package/lib/audio/capture/capture.d.ts +2 -0
- package/lib/audio/dsp/level_measure.d.ts +2 -1
- package/lib/audio/persistor.d.ts +8 -3
- package/lib/audio/playback/array_audio_buffer_source_node.d.ts +24 -0
- package/lib/audio/playback/player.d.ts +6 -0
- package/lib/audio/ui/audio_canvas_layer_comp.d.ts +4 -1
- package/lib/audio/ui/audio_display_scroll_pane.d.ts +2 -1
- package/lib/audio/ui/audiosignal.d.ts +3 -2
- package/lib/audio/ui/container.d.ts +3 -2
- package/lib/audio/ui/livelevel.d.ts +4 -2
- package/lib/audio/ui/sonagram.d.ts +3 -2
- package/lib/io/stream.d.ts +17 -0
- package/lib/net/uploader.d.ts +6 -1
- package/lib/speechrecorder/recording.d.ts +16 -3
- package/lib/speechrecorder/recordings/recordings.service.d.ts +2 -0
- package/lib/speechrecorder/session/audiorecorder.d.ts +2 -7
- package/lib/speechrecorder/session/basicrecorder.d.ts +10 -5
- package/lib/speechrecorder/session/progress.d.ts +1 -1
- package/lib/speechrecorder/session/prompting.d.ts +1 -1
- package/lib/speechrecorder/session/recorder_combi_pane.d.ts +3 -1
- package/lib/speechrecorder/session/recording_file_cache.d.ts +33 -0
- package/lib/speechrecorder/session/recording_list.d.ts +3 -1
- package/lib/speechrecorder/session/recordingfile/recording-file-meta.component.d.ts +2 -1
- package/lib/speechrecorder/session/recordingfile/recording-file-view.component.d.ts +1 -0
- package/lib/speechrecorder/session/sessionmanager.d.ts +5 -11
- package/lib/speechrecorderng.module.d.ts +2 -1
- package/lib/spr.module.version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
export class ArrayAudioBuffer {
|
|
2
|
+
constructor(_channelCount, _sampleRate, _data) {
|
|
3
|
+
this._channelCount = _channelCount;
|
|
4
|
+
this._sampleRate = _sampleRate;
|
|
5
|
+
this._data = _data;
|
|
6
|
+
this._chunkCount = 0;
|
|
7
|
+
this._frameLen = 0;
|
|
8
|
+
if (this._data.length > 0) {
|
|
9
|
+
let ch0Data = this.data[0];
|
|
10
|
+
for (let ch0Chk of ch0Data) {
|
|
11
|
+
this._chunkCount++;
|
|
12
|
+
this._frameLen += ch0Chk.length;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
static fromAudioBuffer(audioBuffer, chunkFrameSize = 8192) {
|
|
17
|
+
let aab;
|
|
18
|
+
let chs = audioBuffer.numberOfChannels;
|
|
19
|
+
let frameLength = audioBuffer.length;
|
|
20
|
+
//let chunksSize=Math.ceil(frameLength/chunkFrameSize);
|
|
21
|
+
let framePos = 0;
|
|
22
|
+
let data = new Array(chs);
|
|
23
|
+
for (let ch = 0; ch < chs; ch++) {
|
|
24
|
+
data[ch] = new Array();
|
|
25
|
+
}
|
|
26
|
+
let toCopy = frameLength - framePos;
|
|
27
|
+
while (toCopy > 0) {
|
|
28
|
+
let toCopyChunk = chunkFrameSize;
|
|
29
|
+
if (toCopyChunk > toCopy) {
|
|
30
|
+
// last chunk, the rest
|
|
31
|
+
toCopyChunk = toCopy;
|
|
32
|
+
}
|
|
33
|
+
for (let ch = 0; ch < chs; ch++) {
|
|
34
|
+
data[ch].push(audioBuffer.getChannelData(ch).slice(framePos, framePos + toCopyChunk));
|
|
35
|
+
}
|
|
36
|
+
framePos += toCopyChunk;
|
|
37
|
+
toCopy -= toCopyChunk;
|
|
38
|
+
}
|
|
39
|
+
aab = new ArrayAudioBuffer(chs, audioBuffer.sampleRate, data);
|
|
40
|
+
return aab;
|
|
41
|
+
}
|
|
42
|
+
get channelCount() {
|
|
43
|
+
return this._channelCount;
|
|
44
|
+
}
|
|
45
|
+
frames(framePos, frameLen, bufs) {
|
|
46
|
+
let ccFramePos = 0;
|
|
47
|
+
let trgFramePos = framePos;
|
|
48
|
+
let ch0Data = this.data[0];
|
|
49
|
+
let cPos = 0;
|
|
50
|
+
let filled = 0;
|
|
51
|
+
let ci = 0;
|
|
52
|
+
while (filled < frameLen && ci < this._chunkCount) {
|
|
53
|
+
// Current chunk
|
|
54
|
+
let cc0 = ch0Data[ci];
|
|
55
|
+
let ccLen = cc0.length;
|
|
56
|
+
let ccFrameEndPos = ccFramePos + ccLen;
|
|
57
|
+
if (trgFramePos >= ccFramePos && trgFramePos < ccFrameEndPos) {
|
|
58
|
+
let toCp = frameLen - filled;
|
|
59
|
+
cPos = trgFramePos - ccFramePos;
|
|
60
|
+
if (cPos + toCp > ccLen) {
|
|
61
|
+
toCp = ccLen - cPos;
|
|
62
|
+
}
|
|
63
|
+
for (let ch = 0; ch < bufs.length; ch++) {
|
|
64
|
+
let cc = this.data[ch][ci];
|
|
65
|
+
for (let i = 0; i < toCp; i++) {
|
|
66
|
+
bufs[ch][filled + i] = cc[cPos + i];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
filled += toCp;
|
|
70
|
+
trgFramePos += toCp;
|
|
71
|
+
cPos += toCp;
|
|
72
|
+
ccFramePos += toCp;
|
|
73
|
+
if (cPos >= ccLen) {
|
|
74
|
+
ccFramePos = ccFrameEndPos;
|
|
75
|
+
cPos = 0;
|
|
76
|
+
ci++;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// next chunk
|
|
81
|
+
ccFramePos = ccFrameEndPos;
|
|
82
|
+
cPos = 0;
|
|
83
|
+
ci++;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return filled;
|
|
87
|
+
}
|
|
88
|
+
get sampleRate() {
|
|
89
|
+
return this._sampleRate;
|
|
90
|
+
}
|
|
91
|
+
get frameLen() {
|
|
92
|
+
return this._frameLen;
|
|
93
|
+
}
|
|
94
|
+
get chunkCount() {
|
|
95
|
+
return this._chunkCount;
|
|
96
|
+
}
|
|
97
|
+
get data() {
|
|
98
|
+
return this._data;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlfYXVkaW9fYnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2FycmF5X2F1ZGlvX2J1ZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZ0JBQWdCO0lBTTNCLFlBQW9CLGFBQXFCLEVBQVUsV0FBbUIsRUFBVSxLQUFpQztRQUE3RixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBNEI7UUFIekcsZ0JBQVcsR0FBQyxDQUFDLENBQUM7UUFDZCxjQUFTLEdBQVEsQ0FBQyxDQUFDO1FBR3pCLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFFO1lBQ3RCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO2FBQ2pDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUF1QixFQUFDLGNBQWMsR0FBQyxJQUFJO1FBQ2hFLElBQUksR0FBb0IsQ0FBQztRQUN6QixJQUFJLEdBQUcsR0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7UUFDckMsSUFBSSxXQUFXLEdBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUNuQyx1REFBdUQ7UUFDdkQsSUFBSSxRQUFRLEdBQUMsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxJQUFJLEdBQUMsSUFBSSxLQUFLLENBQXNCLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLEtBQUksSUFBSSxFQUFFLEdBQUMsQ0FBQyxFQUFDLEVB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akIsSUFBRyxJQUFJLElBQUUsS0FBSyxFQUFDO29CQUNiLFVBQVUsR0FBQyxhQUFhLENBQUM7b0JBQ3pCLElBQUksR0FBQyxDQUFDLENBQUM7b0JBQ1AsRUFBRSxFQUFFLENBQUM7aUJBQ047YUFFRjtpQkFBSTtnQkFDSCxhQUFhO2dCQUNiLFVBQVUsR0FBQyxhQUFhLENBQUM7Z0JBQ3pCLElBQUksR0FBQyxDQUFDLENBQUM7Z0JBQ1AsRUFBRSxFQUFFLENBQUM7YUFDTjtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zsb2F0MzJBcnJheUlucHV0U3RyZWFtfSBmcm9tIFwiLi4vaW8vc3RyZWFtXCI7XHJcbmltcG9ydCB7QXJyYXlBdWRpb0J1ZmZlcklucHV0U3RyZWFtfSBmcm9tIFwiLi9hcnJheV9hdWRpb19idWZmZXJfaW5wdXRfc3RyZWFtXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQXJyYXlBdWRpb0J1ZmZlciB7XHJcblxyXG5cclxuICBwcml2YXRlIF9jaHVua0NvdW50PTA7XHJcbiAgcHJpdmF0ZSBfZnJhbWVMZW46bnVtYmVyPTA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5uZWxDb3VudDogbnVtYmVyLCBwcml2YXRlIF9zYW1wbGVSYXRlOiBudW1iZXIsIHByaXZhdGUgX2RhdGE6IEFycmF5PEFycmF5PEZsb2F0MzJBcnJheT4+KSB7XHJcbiAgICBpZih0aGlzLl9kYXRhLmxlbmd0aD4wKSB7XHJcbiAgICAgIGxldCBjaDBEYXRhID0gdGhpcy5kYXRhWzBdO1xyXG4gICAgICBmb3IgKGxldCBjaDBDaGsgb2YgY2gwRGF0YSkge1xyXG4gICAgICAgIHRoaXMuX2NodW5rQ291bnQrKztcclxuICAgICAgICB0aGlzLl9mcmFtZUxlbiArPSBjaDBDaGsubGVuZ3RoO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUF1ZGlvQnVmZmVyKGF1ZGlvQnVmZmVyOkF1ZGlvQnVmZmVyLGNodW5rRnJhbWVTaXplPTgxOTIpOkFycmF5QXVkaW9CdWZmZXJ7XHJcbiAgICBsZXQgYWFiOkFycmF5QXVkaW9CdWZmZXI7XHJcbiAgICBsZXQgY2hzPWF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7XHJcbiAgICBsZXQgZnJhbWVMZW5ndGg9YXVkaW9CdWZmZXIubGVuZ3RoO1xyXG4gICAgLy9sZXQgY2h1bmtzU2l6ZT1NYXRoLmNlaWwoZnJhbWVMZW5ndGgvY2h1bmtGcmFtZVNpemUpO1xyXG4gICAgbGV0IGZyYW1lUG9zPTA7XHJcbiAgICBsZXQgZGF0YT1uZXcgQXJyYXk8QXJyYXk8RmxvYXQzMkFycmF5Pj4oY2hzKTtcclxuICAgIGZvcihsZXQgY2g9MDtjaDxjaHM7Y2grKykge1xyXG4gICAgICBkYXRhW2NoXT1uZXcgQXJyYXk8RmxvYXQzMkFycmF5PigpO1xyXG4gICAgfVxyXG4gICAgbGV0IHRvQ29weT1mcmFtZUxlbmd0aC1mcmFtZVBvcztcclxuICAgICAgd2hpbGUodG9Db3B5PjApe1xyXG5cclxuICAgICAgICBsZXQgdG9Db3B5Q2h1bms9Y2h1bmtGcmFtZVNpemU7XHJcbiAgICAgICAgaWYodG9Db3B5Q2h1bms+dG9Db3B5KXtcclxuICAgICAgICAgIC8vIGxhc3QgY2h1bmssIHRoZSByZXN0XHJcbiAgICAgICAgICB0b0NvcHlDaHVuaz10b0NvcHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvcihsZXQgY2g9MDtjaDxjaHM7Y2grKykge1xyXG4gICAgICAgICAgZGF0YVtjaF0ucHVzaChhdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YShjaCkuc2xpY2UoZnJhbWVQb3MsIGZyYW1lUG9zICsgdG9Db3B5Q2h1bmspKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnJhbWVQb3MrPXRvQ29weUNodW5rO1xyXG4gICAgICAgIHRvQ29weS09dG9Db3B5Q2h1bms7XHJcbiAgICAgIH1cclxuICAgIGFhYj1uZXcgQXJyYXlBdWRpb0J1ZmZlcihjaHMsYXVkaW9CdWZmZXIuc2FtcGxlUmF0ZSxkYXRhKTtcclxuICAgIHJldHVybiBhYWI7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IGNoYW5uZWxDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxDb3VudDtcclxuICB9XHJcblxyXG4gIGZyYW1lcyhmcmFtZVBvczpudW1iZXIsZnJhbWVMZW46bnVtYmVyLGJ1ZnM6RmxvYXQzMkFycmF5W10pOm51bWJlcntcclxuXHJcbiAgICBsZXQgY2NGcmFtZVBvcz0wO1xyXG4gICAgbGV0IHRyZ0ZyYW1lUG9zPWZyYW1lUG9zO1xyXG4gICAgbGV0IGNoMERhdGEgPSB0aGlzLmRhdGFbMF07XHJcbiAgICBsZXQgY1Bvcz0wO1xyXG4gICAgbGV0IGZpbGxlZD0wO1xyXG4gICAgbGV0IGNpPTA7XHJcblxyXG4gICAgd2hpbGUoZmlsbGVkPGZyYW1lTGVuICYmIGNpPHRoaXMuX2NodW5rQ291bnQpe1xyXG4gICAgICAvLyBDdXJyZW50IGNodW5rXHJcbiAgICAgIGxldCBjYzA9Y2gwRGF0YVtjaV07XHJcbiAgICAgIGxldCBjY0xlbj1jYzAubGVuZ3RoO1xyXG4gICAgICBsZXQgY2NGcmFtZUVuZFBvcz1jY0ZyYW1lUG9zK2NjTGVuO1xyXG5cclxuICAgICAgaWYodHJnRnJhbWVQb3M+PWNjRnJhbWVQb3MgJiYgdHJnRnJhbWVQb3M8Y2NGcmFtZUVuZFBvcyl7XHJcbiAgICAgICAgbGV0IHRvQ3A9ZnJhbWVMZW4tZmlsbGVkO1xyXG4gICAgICAgIGNQb3M9dHJnRnJhbWVQb3MtY2NGcmFtZVBvcztcclxuICAgICAgICBpZihjUG9zK3RvQ3A+Y2NMZW4pe1xyXG4gICAgICAgICAgdG9DcD1jY0xlbi1jUG9zO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IobGV0IGNoPTA7Y2g8YnVmcy5sZW5ndGg7Y2grKyl7XHJcbiAgICAgICAgICBsZXQgY2M9dGhpcy5kYXRhW2NoXVtjaV07XHJcblxyXG4gICAgICAgICAgZm9yKGxldCBpPTA7aTx0b0NwO2krKyl7XHJcbiAgICAgICAgICAgIGJ1ZnNbY2hdW2ZpbGxlZCtpXT1jY1tjUG9zK2ldO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxsZWQrPXRvQ3A7XHJcbiAgICAgICAgdHJnRnJhbWVQb3MrPXRvQ3A7XHJcbiAgICAgICAgY1Bvcys9dG9DcDtcclxuICAgICAgICBjY0ZyYW1lUG9zKz10b0NwO1xyXG4gICAgICAgIGlmKGNQb3M+PWNjTGVuKXtcclxuICAgICAgICAgIGNjRnJhbWVQb3M9Y2NGcmFtZUVuZFBvcztcclxuICAgICAgICAgIGNQb3M9MDtcclxuICAgICAgICAgIGNpKys7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgLy8gbmV4dCBjaHVua1xyXG4gICAgICAgIGNjRnJhbWVQb3M9Y2NGcmFtZUVuZFBvcztcclxuICAgICAgICBjUG9zPTA7XHJcbiAgICAgICAgY2krKztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbGxlZDtcclxuICB9XHJcblxyXG4gIGdldCBzYW1wbGVSYXRlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2FtcGxlUmF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBmcmFtZUxlbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZyYW1lTGVuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNodW5rQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaHVua0NvdW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRhdGEoKTogQXJyYXk8QXJyYXk8RmxvYXQzMkFycmF5Pj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export class ArrayAudioBufferInputStream {
|
|
2
|
+
constructor(arrayAudioBuffer) {
|
|
3
|
+
this.arrayAudioBuffer = arrayAudioBuffer;
|
|
4
|
+
this._framePos = 0;
|
|
5
|
+
this.chunkFramePos = 0;
|
|
6
|
+
this.chunkIdx = 0;
|
|
7
|
+
this.eod = false;
|
|
8
|
+
//console.debug("Array audio input stream array audio buffer frames: "+arrayAudioBuffer.frameLen);
|
|
9
|
+
}
|
|
10
|
+
close() {
|
|
11
|
+
}
|
|
12
|
+
skipFrames(n) {
|
|
13
|
+
let toSkip = n;
|
|
14
|
+
if (this.chunkIdx >= this.arrayAudioBuffer.chunkCount) {
|
|
15
|
+
this.eod = true;
|
|
16
|
+
if (toSkip > 0) {
|
|
17
|
+
throw Error('Skip out of bounds: Cannot skip ' + toSkip + ' frames.');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
let chunkBuf0 = this.arrayAudioBuffer.data[0][this.chunkIdx];
|
|
22
|
+
let chunkBufsLen = chunkBuf0.length;
|
|
23
|
+
let currBufSkippable = chunkBufsLen - this.chunkFramePos;
|
|
24
|
+
if (n >= currBufSkippable) {
|
|
25
|
+
this._framePos += currBufSkippable;
|
|
26
|
+
toSkip -= currBufSkippable;
|
|
27
|
+
this.chunkIdx++;
|
|
28
|
+
this.chunkFramePos = 0;
|
|
29
|
+
if (this.chunkIdx < this.arrayAudioBuffer.chunkCount) {
|
|
30
|
+
this.skipFrames(toSkip);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
if (toSkip > 0) {
|
|
34
|
+
throw Error('Skip out of bounds: Cannot skip ' + toSkip + ' frames.');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
toSkip -= n;
|
|
40
|
+
this.chunkFramePos += n;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
read(buffers) {
|
|
45
|
+
let read = 0;
|
|
46
|
+
let toRead = buffers[0].length;
|
|
47
|
+
while (read < toRead && !this.eod) {
|
|
48
|
+
//console.debug("Chunk "+this.chunkIdx+" of "+this.arrayAudioBuffer.chunkCount+" chunks.")
|
|
49
|
+
if (this.chunkIdx >= this.arrayAudioBuffer.chunkCount) {
|
|
50
|
+
this.eod = true;
|
|
51
|
+
//console.debug("Array audio input stream end of data read frames: "+this.framePos);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
let chunkBuf0 = this.arrayAudioBuffer.data[0][this.chunkIdx];
|
|
55
|
+
let chunkBufsLen = chunkBuf0.length;
|
|
56
|
+
let chunkBufAvail = chunkBufsLen - this.chunkFramePos;
|
|
57
|
+
let r = chunkBufAvail;
|
|
58
|
+
if (r > toRead - read) {
|
|
59
|
+
r = toRead - read;
|
|
60
|
+
}
|
|
61
|
+
for (let ch = 0; ch < buffers.length; ch++) {
|
|
62
|
+
let chChunkBuf = this.arrayAudioBuffer.data[ch][this.chunkIdx];
|
|
63
|
+
for (let bi = 0; bi < r; bi++) {
|
|
64
|
+
buffers[ch][read + bi] = chChunkBuf[this.chunkFramePos + bi];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
read += r;
|
|
68
|
+
this.chunkFramePos += r;
|
|
69
|
+
if (this.chunkFramePos >= chunkBufsLen) {
|
|
70
|
+
this.chunkIdx++;
|
|
71
|
+
this.chunkFramePos = 0;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
this._framePos += read;
|
|
76
|
+
//console.debug("Read: "+read+", frame pos: "+this.framePos)
|
|
77
|
+
if (this._framePos > this.arrayAudioBuffer.frameLen) {
|
|
78
|
+
console.error("Array audio input stream frame pos: " + this._framePos + " greater then frame length: " + this.arrayAudioBuffer.frameLen);
|
|
79
|
+
}
|
|
80
|
+
return read;
|
|
81
|
+
}
|
|
82
|
+
get framePos() {
|
|
83
|
+
return this._framePos;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlfYXVkaW9fYnVmZmVyX2lucHV0X3N0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby9hcnJheV9hdWRpb19idWZmZXJfaW5wdXRfc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTywyQkFBMkI7SUFNdEMsWUFBb0IsZ0JBQWlDO1FBQWpDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFKN0MsY0FBUyxHQUFDLENBQUMsQ0FBQztRQUNaLGtCQUFhLEdBQUMsQ0FBQyxDQUFDO1FBQ2hCLGFBQVEsR0FBQyxDQUFDLENBQUM7UUFDWCxRQUFHLEdBQUMsS0FBSyxDQUFDO1FBRWhCLGtHQUFrRztJQUNwRyxDQUFDO0lBRUQsS0FBSztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBUTtRQUNqQixJQUFJLE1BQU0sR0FBQyxDQUFDLENBQUM7UUFDYixJQUFHLElBQUksQ0FBQyxRQUFRLElBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRTtZQUNsRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztZQUNoQixJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2QsTUFBTSxLQUFLLENBQUMsa0NBQWtDLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFBO2FBQ3RFO1NBQ0Y7YUFBSztZQUNKLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdELElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDcEMsSUFBSSxnQkFBZ0IsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDekIs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LENBQUMsUUFBUSxDQUFDLENBQUM7U0FDcEk7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFJRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbX0gZnJvbSBcIi4uL2lvL3N0cmVhbVwiO1xyXG5pbXBvcnQge0FycmF5QXVkaW9CdWZmZXJ9IGZyb20gXCIuL2FycmF5X2F1ZGlvX2J1ZmZlclwiO1xyXG5leHBvcnQgY2xhc3MgQXJyYXlBdWRpb0J1ZmZlcklucHV0U3RyZWFtIGltcGxlbWVudHMgRmxvYXQzMkFycmF5SW5wdXRTdHJlYW17XHJcblxyXG4gIHByaXZhdGUgX2ZyYW1lUG9zPTA7XHJcbiAgcHJpdmF0ZSBjaHVua0ZyYW1lUG9zPTA7XHJcbiAgcHJpdmF0ZSBjaHVua0lkeD0wO1xyXG4gIHByaXZhdGUgZW9kPWZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXJyYXlBdWRpb0J1ZmZlcjpBcnJheUF1ZGlvQnVmZmVyKSB7XHJcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJBcnJheSBhdWRpbyBpbnB1dCBzdHJlYW0gYXJyYXkgYXVkaW8gYnVmZmVyIGZyYW1lczogXCIrYXJyYXlBdWRpb0J1ZmZlci5mcmFtZUxlbik7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIHNraXBGcmFtZXMobjpudW1iZXIpe1xyXG4gICAgbGV0IHRvU2tpcD1uO1xyXG4gICAgaWYodGhpcy5jaHVua0lkeD49dGhpcy5hcnJheUF1ZGlvQnVmZmVyLmNodW5rQ291bnQpIHtcclxuICAgICAgdGhpcy5lb2QgPSB0cnVlO1xyXG4gICAgICBpZiAodG9Ta2lwID4gMCkge1xyXG4gICAgICAgIHRocm93IEVycm9yKCdTa2lwIG91dCBvZiBib3VuZHM6IENhbm5vdCBza2lwICcgKyB0b1NraXAgKyAnIGZyYW1lcy4nKVxyXG4gICAgICB9XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIGxldCBjaHVua0J1ZjAgPSB0aGlzLmFycmF5QXVkaW9CdWZmZXIuZGF0YVswXVt0aGlzLmNodW5rSWR4XTtcclxuICAgICAgbGV0IGNodW5rQnVmc0xlbiA9IGNodW5rQnVmMC5sZW5ndGg7XHJcbiAgICAgIGxldCBjdXJyQnVmU2tpcHBhYmxlID0gY2h1bmtCdWZzTGVuIC0gdGhpcy5jaHVua0ZyYW1lUG9zO1xyXG4gICAgICBpZiAobiA+PSBjdXJyQnVmU2tpcHBhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5fZnJhbWVQb3MgKz0gY3VyckJ1ZlNraXBwYWJsZTtcclxuICAgICAgICB0b1NraXAgLT0gY3VyckJ1ZlNraXBwYWJsZTtcclxuICAgICAgICB0aGlzLmNodW5rSWR4KytcclxuICAgICAgICB0aGlzLmNodW5rRnJhbWVQb3MgPSAwO1xyXG4gICAgICAgIGlmICh0aGlzLmNodW5rSWR4IDwgdGhpcy5hcnJheUF1ZGlvQnVmZmVyLmNodW5rQ291bnQpIHtcclxuICAgICAgICAgIHRoaXMuc2tpcEZyYW1lcyh0b1NraXApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodG9Ta2lwID4gMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcignU2tpcCBvdXQgb2YgYm91bmRzOiBDYW5ub3Qgc2tpcCAnICsgdG9Ta2lwICsgJyBmcmFtZXMuJylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdG9Ta2lwIC09IG47XHJcbiAgICAgICAgdGhpcy5jaHVua0ZyYW1lUG9zICs9IG47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlYWQoYnVmZmVyczogQXJyYXk8RmxvYXQzMkFycmF5Pik6IG51bWJlciB7XHJcbiAgICBsZXQgcmVhZD0wO1xyXG5cclxuICAgIGxldCB0b1JlYWQ9YnVmZmVyc1swXS5sZW5ndGg7XHJcblxyXG4gICAgICB3aGlsZShyZWFkPHRvUmVhZCAmJiAhdGhpcy5lb2Qpe1xyXG4gICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkNodW5rIFwiK3RoaXMuY2h1bmtJZHgrXCIgb2YgXCIrdGhpcy5hcnJheUF1ZGlvQnVmZmVyLmNodW5rQ291bnQrXCIgY2h1bmtzLlwiKVxyXG4gICAgICAgIGlmKHRoaXMuY2h1bmtJZHg+PXRoaXMuYXJyYXlBdWRpb0J1ZmZlci5jaHVua0NvdW50KSB7XHJcbiAgICAgICAgICB0aGlzLmVvZCA9IHRydWU7XHJcbiAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJBcnJheSBhdWRpbyBpbnB1dCBzdHJlYW0gZW5kIG9mIGRhdGEgcmVhZCBmcmFtZXM6IFwiK3RoaXMuZnJhbWVQb3MpO1xyXG4gICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgIGxldCBjaHVua0J1ZjAgPSB0aGlzLmFycmF5QXVkaW9CdWZmZXIuZGF0YVswXVt0aGlzLmNodW5rSWR4XTtcclxuICAgICAgICAgIGxldCBjaHVua0J1ZnNMZW4gPSBjaHVua0J1ZjAubGVuZ3RoO1xyXG4gICAgICAgICAgbGV0IGNodW5rQnVmQXZhaWwgPSBjaHVua0J1ZnNMZW4gLSB0aGlzLmNodW5rRnJhbWVQb3M7XHJcbiAgICAgICAgICBsZXQgciA9IGNodW5rQnVmQXZhaWw7XHJcbiAgICAgICAgICBpZiAociA+IHRvUmVhZCAtIHJlYWQpIHtcclxuICAgICAgICAgICAgciA9IHRvUmVhZCAtIHJlYWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgYnVmZmVycy5sZW5ndGg7IGNoKyspIHtcclxuICAgICAgICAgICAgbGV0IGNoQ2h1bmtCdWY9dGhpcy5hcnJheUF1ZGlvQnVmZmVyLmRhdGFbY2hdW3RoaXMuY2h1bmtJZHhdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBiaSA9IDA7IGJpIDwgcjsgYmkrKykge1xyXG4gICAgICAgICAgICAgIGJ1ZmZlcnNbY2hdW3JlYWQgKyBiaV0gPSBjaENodW5rQnVmW3RoaXMuY2h1bmtGcmFtZVBvcyArIGJpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmVhZCArPSByO1xyXG5cclxuICAgICAgICAgIHRoaXMuY2h1bmtGcmFtZVBvcyArPSByO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2h1bmtGcmFtZVBvcyA+PSBjaHVua0J1ZnNMZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5jaHVua0lkeCsrO1xyXG4gICAgICAgICAgICB0aGlzLmNodW5rRnJhbWVQb3MgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgdGhpcy5fZnJhbWVQb3MrPXJlYWQ7XHJcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlJlYWQ6IFwiK3JlYWQrXCIsIGZyYW1lIHBvczogXCIrdGhpcy5mcmFtZVBvcylcclxuICAgIGlmKHRoaXMuX2ZyYW1lUG9zPnRoaXMuYXJyYXlBdWRpb0J1ZmZlci5mcmFtZUxlbil7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJBcnJheSBhdWRpbyBpbnB1dCBzdHJlYW0gZnJhbWUgcG9zOiBcIit0aGlzLl9mcmFtZVBvcytcIiBncmVhdGVyIHRoZW4gZnJhbWUgbGVuZ3RoOiBcIit0aGlzLmFycmF5QXVkaW9CdWZmZXIuZnJhbWVMZW4pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlYWQ7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGdldCBmcmFtZVBvcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZyYW1lUG9zO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { ArrayAudioBufferInputStream } from "./array_audio_buffer_input_stream";
|
|
2
|
+
export class AudioDataHolder {
|
|
3
|
+
constructor(_buffer, _arrayBuffer = null) {
|
|
4
|
+
this._buffer = _buffer;
|
|
5
|
+
this._arrayBuffer = _arrayBuffer;
|
|
6
|
+
this._numberOfChannels = 0;
|
|
7
|
+
this._sampleRate = 0;
|
|
8
|
+
this._frameLen = 0;
|
|
9
|
+
this._duration = 0;
|
|
10
|
+
if (this._buffer && this._arrayBuffer) {
|
|
11
|
+
throw Error('Only one of either audio buffer or array audio buffer must be set!');
|
|
12
|
+
}
|
|
13
|
+
if (this._buffer || this._arrayBuffer) {
|
|
14
|
+
if (this._buffer) {
|
|
15
|
+
this._numberOfChannels = this._buffer.numberOfChannels;
|
|
16
|
+
this._sampleRate = this._buffer.sampleRate;
|
|
17
|
+
this._frameLen = this._buffer.length;
|
|
18
|
+
this._duration = this._frameLen / this._sampleRate;
|
|
19
|
+
}
|
|
20
|
+
else if (this._arrayBuffer) {
|
|
21
|
+
this._numberOfChannels = this._arrayBuffer.channelCount;
|
|
22
|
+
this._sampleRate = this._arrayBuffer.sampleRate;
|
|
23
|
+
this._frameLen = this._arrayBuffer.frameLen;
|
|
24
|
+
this._duration = this._frameLen / this._sampleRate;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw Error(AudioDataHolder.ONE_OF_MUST_BE_SET_ERR_MSG);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
get duration() {
|
|
32
|
+
return this._duration;
|
|
33
|
+
}
|
|
34
|
+
get sampleRate() {
|
|
35
|
+
return this._sampleRate;
|
|
36
|
+
}
|
|
37
|
+
get numberOfChannels() {
|
|
38
|
+
return this._numberOfChannels;
|
|
39
|
+
}
|
|
40
|
+
get frameLen() {
|
|
41
|
+
return this._frameLen;
|
|
42
|
+
}
|
|
43
|
+
sampleCounts() {
|
|
44
|
+
return this._numberOfChannels * this._frameLen;
|
|
45
|
+
}
|
|
46
|
+
frames(framePos, frameLen, bufs) {
|
|
47
|
+
let read = 0;
|
|
48
|
+
if (this._buffer) {
|
|
49
|
+
let toRead = frameLen;
|
|
50
|
+
if (this._buffer.length < framePos + frameLen) {
|
|
51
|
+
toRead = this._buffer.length - framePos;
|
|
52
|
+
}
|
|
53
|
+
for (let ch = 0; ch < bufs.length; ch++) {
|
|
54
|
+
let chData = this._buffer.getChannelData(ch);
|
|
55
|
+
for (let i = 0; i < toRead; i++) {
|
|
56
|
+
bufs[ch][i] = chData[framePos + i];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
read = toRead;
|
|
60
|
+
}
|
|
61
|
+
else if (this._arrayBuffer) {
|
|
62
|
+
read = this._arrayBuffer.frames(framePos, frameLen, bufs);
|
|
63
|
+
}
|
|
64
|
+
return read;
|
|
65
|
+
}
|
|
66
|
+
audioInputStream() {
|
|
67
|
+
if (this._buffer) {
|
|
68
|
+
return new AudioBufferInputStream(this._buffer);
|
|
69
|
+
}
|
|
70
|
+
if (this._arrayBuffer) {
|
|
71
|
+
return new ArrayAudioBufferInputStream(this._arrayBuffer);
|
|
72
|
+
}
|
|
73
|
+
throw Error(AudioDataHolder.ONE_OF_MUST_BE_SET_ERR_MSG);
|
|
74
|
+
}
|
|
75
|
+
get buffer() {
|
|
76
|
+
return this._buffer;
|
|
77
|
+
}
|
|
78
|
+
get arrayBuffer() {
|
|
79
|
+
return this._arrayBuffer;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
AudioDataHolder.ONE_OF_MUST_BE_SET_ERR_MSG = 'One of either audio buffer or array audio buffer must be set!';
|
|
83
|
+
export class AudioBufferInputStream {
|
|
84
|
+
constructor(audioBuffer) {
|
|
85
|
+
this.audioBuffer = audioBuffer;
|
|
86
|
+
this.framePos = 0;
|
|
87
|
+
}
|
|
88
|
+
close() {
|
|
89
|
+
}
|
|
90
|
+
skipFrames(n) {
|
|
91
|
+
this.framePos += n;
|
|
92
|
+
}
|
|
93
|
+
read(buffers) {
|
|
94
|
+
let read = 0;
|
|
95
|
+
let toRead = buffers[0].length;
|
|
96
|
+
if (this.framePos + toRead > this.audioBuffer.length) {
|
|
97
|
+
toRead = this.audioBuffer.length - this.framePos;
|
|
98
|
+
}
|
|
99
|
+
for (let ch = 0; ch < buffers.length; ch++) {
|
|
100
|
+
for (let i = 0; i < toRead; i++) {
|
|
101
|
+
buffers[ch][i] = this.audioBuffer.getChannelData(ch)[this.framePos + i];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
read = toRead;
|
|
105
|
+
this.framePos += toRead;
|
|
106
|
+
return read;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fZGF0YV9ob2xkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvYXVkaW8vYXVkaW9fZGF0YV9ob2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFFOUUsTUFBTSxPQUFPLGVBQWU7SUFXMUIsWUFBb0IsT0FBeUIsRUFBUyxlQUFtQyxJQUFJO1FBQXpFLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQVMsaUJBQVksR0FBWixZQUFZLENBQTJCO1FBTnJGLHNCQUFpQixHQUFRLENBQUMsQ0FBQztRQUMzQixnQkFBVyxHQUFRLENBQUMsQ0FBQztRQUNyQixjQUFTLEdBQVEsQ0FBQyxDQUFDO1FBQ25CLGNBQVMsR0FBUSxDQUFDLENBQUM7UUFJekIsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUM7WUFDbkMsTUFBTSxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztTQUNuRjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUMsSUFBSSxDQUFDLFNBQVMsR0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ2hEO2lCQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDNUIsSUFBSSxD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LEdBQVgsV0FBVyxDQUFZO1FBRm5DLGFBQVEsR0FBQyxDQUFDLENBQUM7SUFHbkIsQ0FBQztJQUVELEtBQUs7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLENBQVM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsSUFBRSxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksQ0FBQyxPQUE0QjtRQUMvQixJQUFJLElBQUksR0FBQyxDQUFDLENBQUM7UUFDWCxJQUFJLE1BQU0sR0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUcsSUFBSSxDQUFDLFFBQVEsR0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUM7WUFDOUMsTUFBTSxHQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDOUM7UUFDRCxLQUFJLElBQUksRUFBRSxHQUFDLENBQUMsRUFBQyxFQUFFLEdBQUMsT0FBTyxDQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUUsRUFBRTtZQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMvQixPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyRTtTQUNGO1FBQ0QsSUFBSSxHQUFDLE1BQU0sQ0FBQztRQUNaLElBQUksQ0FBQyxRQUFRLElBQUUsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcnJheUF1ZGlvQnVmZmVyfSBmcm9tIFwiLi9hcnJheV9hdWRpb19idWZmZXJcIjtcclxuaW1wb3J0IHtGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbX0gZnJvbSBcIi4uL2lvL3N0cmVhbVwiO1xyXG5pbXBvcnQge0FycmF5QXVkaW9CdWZmZXJJbnB1dFN0cmVhbX0gZnJvbSBcIi4vYXJyYXlfYXVkaW9fYnVmZmVyX2lucHV0X3N0cmVhbVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEF1ZGlvRGF0YUhvbGRlcntcclxuICBnZXQgZHVyYXRpb24oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kdXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX251bWJlck9mQ2hhbm5lbHM6bnVtYmVyPTA7XHJcbiAgcHJpdmF0ZSBfc2FtcGxlUmF0ZTpudW1iZXI9MDtcclxuICBwcml2YXRlIF9mcmFtZUxlbjpudW1iZXI9MDtcclxuICBwcml2YXRlIF9kdXJhdGlvbjpudW1iZXI9MDtcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBPTkVfT0ZfTVVTVF9CRV9TRVRfRVJSX01TRz0nT25lIG9mIGVpdGhlciBhdWRpbyBidWZmZXIgb3IgYXJyYXkgYXVkaW8gYnVmZmVyIG11c3QgYmUgc2V0ISc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2J1ZmZlcjogQXVkaW9CdWZmZXJ8bnVsbCxwcml2YXRlIF9hcnJheUJ1ZmZlcjpBcnJheUF1ZGlvQnVmZmVyfG51bGw9bnVsbCkge1xyXG4gICAgaWYodGhpcy5fYnVmZmVyICYmIHRoaXMuX2FycmF5QnVmZmVyKXtcclxuICAgICAgdGhyb3cgRXJyb3IoJ09ubHkgb25lIG9mIGVpdGhlciBhdWRpbyBidWZmZXIgb3IgYXJyYXkgYXVkaW8gYnVmZmVyIG11c3QgYmUgc2V0IScpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2J1ZmZlciB8fCB0aGlzLl9hcnJheUJ1ZmZlcikge1xyXG4gICAgICBpZiAodGhpcy5fYnVmZmVyKSB7XHJcbiAgICAgICAgdGhpcy5fbnVtYmVyT2ZDaGFubmVscyA9IHRoaXMuX2J1ZmZlci5udW1iZXJPZkNoYW5uZWxzO1xyXG4gICAgICAgIHRoaXMuX3NhbXBsZVJhdGUgPSB0aGlzLl9idWZmZXIuc2FtcGxlUmF0ZTtcclxuICAgICAgICB0aGlzLl9mcmFtZUxlbj10aGlzLl9idWZmZXIubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMuX2R1cmF0aW9uPXRoaXMuX2ZyYW1lTGVuL3RoaXMuX3NhbXBsZVJhdGU7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYXJyYXlCdWZmZXIpIHtcclxuICAgICAgICB0aGlzLl9udW1iZXJPZkNoYW5uZWxzID0gdGhpcy5fYXJyYXlCdWZmZXIuY2hhbm5lbENvdW50O1xyXG4gICAgICAgIHRoaXMuX3NhbXBsZVJhdGUgPSB0aGlzLl9hcnJheUJ1ZmZlci5zYW1wbGVSYXRlO1xyXG4gICAgICAgIHRoaXMuX2ZyYW1lTGVuPXRoaXMuX2FycmF5QnVmZmVyLmZyYW1lTGVuO1xyXG4gICAgICAgIHRoaXMuX2R1cmF0aW9uPXRoaXMuX2ZyYW1lTGVuL3RoaXMuX3NhbXBsZVJhdGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhyb3cgRXJyb3IoQXVkaW9EYXRhSG9sZGVyLk9ORV9PRl9NVVNUX0JFX1NFVF9FUlJfTVNHKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBzYW1wbGVSYXRlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2FtcGxlUmF0ZTtcclxuICB9XHJcbiAgZ2V0IG51bWJlck9mQ2hhbm5lbHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9udW1iZXJPZkNoYW5uZWxzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZyYW1lTGVuKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZnJhbWVMZW47XHJcbiAgfVxyXG5cclxuICBzYW1wbGVDb3VudHMoKTpudW1iZXJ7XHJcbiAgICByZXR1cm4gdGhpcy5fbnVtYmVyT2ZDaGFubmVscyp0aGlzLl9mcmFtZUxlbjtcclxuICB9XHJcblxyXG4gIGZyYW1lcyhmcmFtZVBvczpudW1iZXIsZnJhbWVMZW46bnVtYmVyLGJ1ZnM6RmxvYXQzMkFycmF5W10pOm51bWJlcntcclxuICAgIGxldCByZWFkPTA7XHJcbiAgICBpZih0aGlzLl9idWZmZXIpe1xyXG4gICAgICBsZXQgdG9SZWFkPWZyYW1lTGVuO1xyXG4gICAgICBpZih0aGlzLl9idWZmZXIubGVuZ3RoPGZyYW1lUG9zK2ZyYW1lTGVuKXtcclxuICAgICAgICB0b1JlYWQ9dGhpcy5fYnVmZmVyLmxlbmd0aC1mcmFtZVBvcztcclxuICAgICAgfVxyXG4gICAgICBmb3IobGV0IGNoPTA7Y2g8YnVmcy5sZW5ndGg7Y2grKyl7XHJcbiAgICAgICAgbGV0IGNoRGF0YT10aGlzLl9idWZmZXIuZ2V0Q2hhbm5lbERhdGEoY2gpO1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dG9SZWFkO2krKyl7XHJcbiAgICAgICAgICBidWZzW2NoXVtpXT1jaERhdGFbZnJhbWVQb3MraV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJlYWQ9dG9SZWFkO1xyXG4gICAgfWVsc2UgaWYodGhpcy5fYXJyYXlCdWZmZXIpe1xyXG4gICAgICByZWFkPXRoaXMuX2FycmF5QnVmZmVyLmZyYW1lcyhmcmFtZVBvcyxmcmFtZUxlbixidWZzKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZWFkO1xyXG4gIH1cclxuXHJcbiAgYXVkaW9JbnB1dFN0cmVhbSgpOkZsb2F0MzJBcnJheUlucHV0U3RyZWFte1xyXG4gICAgaWYodGhpcy5fYnVmZmVyKXtcclxuICAgICAgcmV0dXJuIG5ldyBBdWRpb0J1ZmZlcklucHV0U3RyZWFtKHRoaXMuX2J1ZmZlcik7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLl9hcnJheUJ1ZmZlcil7XHJcbiAgICAgIHJldHVybiBuZXcgQXJyYXlBdWRpb0J1ZmZlcklucHV0U3RyZWFtKHRoaXMuX2FycmF5QnVmZmVyKTtcclxuICAgIH1cclxuICAgIHRocm93IEVycm9yKEF1ZGlvRGF0YUhvbGRlci5PTkVfT0ZfTVVTVF9CRV9TRVRfRVJSX01TRyk7XHJcbiAgfVxyXG5cclxuICBnZXQgYnVmZmVyKCk6IEF1ZGlvQnVmZmVyIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVmZmVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFycmF5QnVmZmVyKCk6IEFycmF5QXVkaW9CdWZmZXIgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9hcnJheUJ1ZmZlcjtcclxuICB9XHJcblxyXG4gIC8vIGdldENoYW5uZWxEYXRhKGNoYW5uZWw6bnVtYmVyLHN0YXJ0RnJhbWU6bnVtYmVyLGxlbmd0aDpudW1iZXIpOkZsb2F0MzJBcnJheXxudWxse1xyXG4gIC8vICAgbGV0IHJlcUJ1Zj1udWxsO1xyXG4gIC8vICAgaWYodGhpcy5fYnVmZmVyKXtcclxuICAvLyAgICAgbGV0IGNoRGF0YT10aGlzLl9idWZmZXIuZ2V0Q2hhbm5lbERhdGEoY2hhbm5lbCk7XHJcbiAgLy8gICAgIHJlcUJ1Zj0gY2hEYXRhLnNsaWNlKHN0YXJ0RnJhbWUsc3RhcnRGcmFtZStsZW5ndGgpO1xyXG4gIC8vICAgfSBlbHNlIGlmKHRoaXMuX2FycmF5QnVmZmVyKXtcclxuICAvLyAgICAgcmVxQnVmPW5ldyBGbG9hdDMyQXJyYXkobGVuZ3RoKTtcclxuICAvLyAgICAgbGV0IGNodW5rQ250PXRoaXMuX2FycmF5QnVmZmVyLmNodW5rQ291bnQ7XHJcbiAgLy8gICAgIGxldCBjaT0wO1xyXG4gIC8vICAgICBsZXQgZnJhbWVQb3M9MDtcclxuICAvLyAgICAgd2hpbGUoY2k8Y2h1bmtDbnQpe1xyXG4gIC8vICAgICAgIGxldCBjaHVua0J1Zj10aGlzLl9hcnJheUJ1ZmZlci5kYXRhW2NoYW5uZWxdW2NpXTtcclxuICAvLyAgICAgICBsZXQgY2h1bmtCdWZsZW49Y2h1bmtCdWYubGVuZ3RoO1xyXG4gIC8vICAgICAgIGxldCBvZmZzZXQ9c3RhcnRGcmFtZS1mcmFtZVBvcztcclxuICAvLyAgICAgICBpZihvZmZzZXQ+PTApe1xyXG4gIC8vICAgICAgICAgbGV0IGNodW5rQnVmRW5kUG9zPWZyYW1lUG9zK2NodW5rQnVmbGVuO1xyXG4gIC8vICAgICAgICAgbGV0IHJlcUVuZFBvcz1zdGFydEZyYW1lK2xlbmd0aDtcclxuICAvLyAgICAgICAgIGlmKGZyYW1lUG9zPnJlcUVuZFBvcyl7XHJcbiAgLy8gICAgICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICAgICAgfWVsc2V7XHJcbiAgLy8gICAgICAgICAgIC8vIFRPRE9cclxuICAvLyAgICAgICAgICAgbGV0IHRvQ29weT1sZW5ndGg7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gIHJlcUJ1ZjtcclxuICAvLyB9XHJcblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEF1ZGlvQnVmZmVySW5wdXRTdHJlYW0gaW1wbGVtZW50cyBGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbXtcclxuICBwcml2YXRlIGZyYW1lUG9zPTA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXVkaW9CdWZmZXI6QXVkaW9CdWZmZXIpIHtcclxuICB9XHJcblxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgc2tpcEZyYW1lcyhuOiBudW1iZXIpIHtcclxuICAgIHRoaXMuZnJhbWVQb3MrPW47XHJcbiAgfVxyXG5cclxuICByZWFkKGJ1ZmZlcnM6IEFycmF5PEZsb2F0MzJBcnJheT4pOiBudW1iZXIge1xyXG4gICAgbGV0IHJlYWQ9MDtcclxuICAgIGxldCB0b1JlYWQ9YnVmZmVyc1swXS5sZW5ndGg7XHJcbiAgICBpZih0aGlzLmZyYW1lUG9zK3RvUmVhZD50aGlzLmF1ZGlvQnVmZmVyLmxlbmd0aCl7XHJcbiAgICAgIHRvUmVhZD10aGlzLmF1ZGlvQnVmZmVyLmxlbmd0aC10aGlzLmZyYW1lUG9zO1xyXG4gICAgfVxyXG4gICAgZm9yKGxldCBjaD0wO2NoPGJ1ZmZlcnMubGVuZ3RoO2NoKyspIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b1JlYWQ7IGkrKykge1xyXG4gICAgICAgIGJ1ZmZlcnNbY2hdW2ldPXRoaXMuYXVkaW9CdWZmZXIuZ2V0Q2hhbm5lbERhdGEoY2gpW3RoaXMuZnJhbWVQb3MraV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJlYWQ9dG9SZWFkO1xyXG4gICAgdGhpcy5mcmFtZVBvcys9dG9SZWFkO1xyXG4gICAgcmV0dXJuIHJlYWQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -42,17 +42,17 @@ export class AudioDisplay {
|
|
|
42
42
|
console.log("Play started");
|
|
43
43
|
this.status = 'Playing...';
|
|
44
44
|
}
|
|
45
|
-
set audioData(
|
|
46
|
-
this.audioDisplayScrollPane.audioData =
|
|
45
|
+
set audioData(audioData) {
|
|
46
|
+
this.audioDisplayScrollPane.audioData = audioData;
|
|
47
47
|
if (this.playStartAction) {
|
|
48
|
-
this.playStartAction.disabled = (
|
|
48
|
+
this.playStartAction.disabled = (audioData == null);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
set audioClip(audioClip) {
|
|
52
52
|
let audioData = null;
|
|
53
53
|
let sel = null;
|
|
54
54
|
if (audioClip) {
|
|
55
|
-
audioData = audioClip.buffer;
|
|
55
|
+
audioData = audioClip.audioDataHolder.buffer;
|
|
56
56
|
sel = audioClip.selection;
|
|
57
57
|
}
|
|
58
58
|
this._audioClip = audioClip;
|
|
@@ -141,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
141
141
|
}], audioClip: [{
|
|
142
142
|
type: Input
|
|
143
143
|
}] } });
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fZGlzcGxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby9hdWRpb19kaXNwbGF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUVNLEtBQUssR0FDdkIsTUFBTSxlQUFlLENBQUE7QUFJdEIsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQTJDdEUsTUFBTSxPQUFPLFlBQVk7SUE0QnZCLFlBQW9CLEtBQXFCLEVBQVUsR0FBc0IsRUFBUyxJQUFlO1FBQTdFLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBekJ6RixlQUFVLEdBQWdCLElBQUksQ0FBQTtRQTBCcEMsdUNBQXVDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsbUJBQW1CLEdBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFDLGlCQUFpQixDQUFDO0lBRWhDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixHQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQTtRQUN0RSxJQUFJLENBQUMsb0JBQW9CLEdBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLG9CQUFv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QVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQThDL0MsU0FBUztzQkFEWixLQUFLO2dCQVNGLFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEFmdGVyVmlld0luaXQsIElucHV0LCBPbkluaXQsIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuXHJcbmltcG9ydCB7QXVkaW9DbGlwLCBTZWxlY3Rpb259IGZyb20gJy4vcGVyc2lzdG9yJ1xyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7QWN0aW9ufSBmcm9tIFwiLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge0F1ZGlvRGlzcGxheVNjcm9sbFBhbmV9IGZyb20gXCIuL3VpL2F1ZGlvX2Rpc3BsYXlfc2Nyb2xsX3BhbmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1hdWRpb2Rpc3BsYXknLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG5cclxuICAgIDxhdWRpby1kaXNwbGF5LXNjcm9sbC1wYW5lICNhdWRpb0Rpc3BsYXlTY3JvbGxQYW5lPjwvYXVkaW8tZGlzcGxheS1zY3JvbGwtcGFuZT5cclxuXHJcbiAgICA8YXVkaW8tZGlzcGxheS1jb250cm9sIFthdWRpb0NsaXBdPVwiYXVkaW9DbGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0YXJ0QWN0aW9uXT1cInBsYXlTdGFydEFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTZWxlY3Rpb25BY3Rpb25dPVwicGxheVNlbGVjdGlvbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0b3BBY3Rpb25dPVwicGxheVN0b3BBY3Rpb25cIlxyXG4gICAgW2F1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb25dPVwiYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvblwiXHJcbiAgICBbem9vbUluQWN0aW9uXT1cInpvb21JbkFjdGlvblwiXHJcbiAgICBbem9vbU91dEFjdGlvbl09XCJ6b29tT3V0QWN0aW9uXCJcclxuICAgIFt6b29tU2VsZWN0ZWRBY3Rpb25dPVwiem9vbVNlbGVjdGVkQWN0aW9uXCJcclxuICAgIFt6b29tRml0VG9QYW5lbEFjdGlvbl09XCJ6b29tRml0VG9QYW5lbEFjdGlvblwiPjwvYXVkaW8tZGlzcGxheS1jb250cm9sPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICAgIGA6aG9zdCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAwcHg7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICAgIHotaW5kZXg6IDU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMwLCAyMzAsIDIzMCwgMS4wKVxyXG4gICAgfWAsYFxyXG4gICAgICAgICAgbGVnZW5ke1xyXG4gICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxZW07IHBhZGRpbmc6IDAuMmVtIDAuOGVtO2ZvbnQtc2l6ZTogMC44ZW07XHJcbiAgICAgIH1gLGBcclxuICAgICAgICBmaWVsZHNldHtcclxuICAgICAgICAgICAgYm9yZGVyOiAxcHggZGFya2dyYXkgc29saWRcclxuICAgICAgfVxyXG4gICAgICBgXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGlvRGlzcGxheSBpbXBsZW1lbnRzIE9uSW5pdCxBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgcGFyZW50RTogSFRNTEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBfYXVkaW9DbGlwOkF1ZGlvQ2xpcHxudWxsPW51bGxcclxuXHJcbiAgQElucHV0KClcclxuICBwbGF5U3RhcnRBY3Rpb246IEFjdGlvbjx2b2lkPnx1bmRlZmluZWQ7XHJcbiAgQElucHV0KClcclxuICBwbGF5U3RvcEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKVxyXG4gIHBsYXlTZWxlY3Rpb25BY3Rpb246QWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKVxyXG4gIGF1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb24hOkFjdGlvbjxib29sZWFuPnx1bmRlZmluZWQ7XHJcblxyXG4gIHpvb21GaXRUb1BhbmVsQWN0aW9uITpBY3Rpb248dm9pZD47XHJcbiAgem9vbVNlbGVjdGVkQWN0aW9uITpBY3Rpb248dm9pZD5cclxuICB6b29tSW5BY3Rpb24hOkFjdGlvbjx2b2lkPjtcclxuICB6b29tT3V0QWN0aW9uITpBY3Rpb248dm9pZD47XHJcblxyXG4gIGNsZWFyU2VsZWN0aW9uQWN0aW9uITpBY3Rpb248dm9pZD5cclxuXHJcbiAgc3RhdHVzOiBzdHJpbmc7XHJcblxyXG4gIGF1ZGlvOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoQXVkaW9EaXNwbGF5U2Nyb2xsUGFuZSwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBhdWRpb0Rpc3BsYXlTY3JvbGxQYW5lITogQXVkaW9EaXNwbGF5U2Nyb2xsUGFuZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIGVSZWY6RWxlbWVudFJlZikge1xyXG4gICAgLy9jb25zb2xlLmxvZyhcImNvbnN0cnVjdG9yOiBcIit0aGlzLmFjKTtcclxuICAgICAgdGhpcy5wYXJlbnRFPXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5wbGF5U3RhcnRBY3Rpb24gPSBuZXcgQWN0aW9uKFwiU3RhcnRcIik7XHJcbiAgICB0aGlzLnBsYXlTZWxlY3Rpb25BY3Rpb249bmV3IEFjdGlvbihcIlBsYXkgc2VsZWN0ZWRcIik7XHJcbiAgICB0aGlzLnBsYXlTdG9wQWN0aW9uID0gbmV3IEFjdGlvbihcIlN0b3BcIik7XHJcbiAgICB0aGlzLnN0YXR1cz1cIlBsYXllciBjcmVhdGVkLlwiO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICB0aGlzLnpvb21TZWxlY3RlZEFjdGlvbj10aGlzLmF1ZGlvRGlzcGxheVNjcm9sbFBhbmUuem9vbVNlbGVjdGVkQWN0aW9uXHJcbiAgICB0aGlzLnpvb21GaXRUb1BhbmVsQWN0aW9uPXRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS56b29tRml0VG9QYW5lbEFjdGlvblxyXG4gICAgdGhpcy56b29tT3V0QWN0aW9uPXRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS56b29tT3V0QWN0aW9uXHJcbiAgICB0aGlzLnpvb21JbkFjdGlvbj10aGlzLmF1ZGlvRGlzcGxheVNjcm9sbFBhbmUuem9vbUluQWN0aW9uXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gICAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgICBsZXQgaGVpZ2h0TGlzdGVuZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG1yczpBcnJheTxNdXRhdGlvblJlY29yZD4sbW86TXV0YXRpb25PYnNlcnZlcik9PntcclxuICAgICAgICAgIG1ycy5mb3JFYWNoKChtcjpNdXRhdGlvblJlY29yZCk9PntcclxuICAgICAgICAgICAgICBpZignYXR0cmlidXRlcyc9PT1tci50eXBlICYmICgnY2xhc3MnPT09bXIuYXR0cmlidXRlTmFtZSB8fCAnc3R5bGUnPT09bXIuYXR0cmlidXRlTmFtZSkpe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgIH0pO1xyXG4gICAgICBoZWlnaHRMaXN0ZW5lci5vYnNlcnZlKHRoaXMucGFyZW50RSx7YXR0cmlidXRlczogdHJ1ZSxjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWV9KTtcclxuICB9XHJcblxyXG5cclxuICBsYXlvdXQoKXtcclxuICAgIHRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS5sYXlvdXQoKTtcclxuICB9XHJcblxyXG5cclxuICBzdGFydGVkKCkge1xyXG4gICAgY29uc29sZS5sb2coXCJQbGF5IHN0YXJ0ZWRcIik7XHJcbiAgICB0aGlzLnN0YXR1cyA9ICdQbGF5aW5nLi4uJztcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhdWRpb0RhdGEoYXVkaW9CdWZmZXI6IEF1ZGlvQnVmZmVyKXtcclxuICAgICAgdGhpcy5hdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLmF1ZGlvRGF0YSA9IGF1ZGlvQnVmZmVyO1xyXG4gICAgICBpZih0aGlzLnBsYXlTdGFydEFjdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5wbGF5U3RhcnRBY3Rpb24uZGlzYWJsZWQgPSAoYXVkaW9CdWZmZXIgPT0gbnVsbClcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgYXVkaW9DbGlwKGF1ZGlvQ2xpcDogQXVkaW9DbGlwIHwgbnVsbCkge1xyXG5cclxuICAgIGxldCBhdWRpb0RhdGE6QXVkaW9CdWZmZXJ8bnVsbD1udWxsO1xyXG4gICAgbGV0IHNlbDpTZWxlY3Rpb258bnVsbD1udWxsO1xyXG4gICAgaWYoYXVkaW9DbGlwKXtcclxuICAgICAgYXVkaW9EYXRhPWF1ZGlvQ2xpcC5idWZmZXI7XHJcbiAgICAgIHNlbD1hdWRpb0NsaXAuc2VsZWN0aW9uO1xyXG4gICAgICB9XHJcbiAgICB0aGlzLl9hdWRpb0NsaXA9YXVkaW9DbGlwXHJcbiAgICB0aGlzLmF1ZGlvRGlzcGxheVNjcm9sbFBhbmUuYXVkaW9DbGlwID0gYXVkaW9DbGlwO1xyXG4gICAgLy90aGlzLnBsYXlTdGFydEFjdGlvbi5kaXNhYmxlZCA9IChhdWRpb0RhdGEhPT1udWxsKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGF1ZGlvQ2xpcCgpOkF1ZGlvQ2xpcHxudWxse1xyXG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ2xpcFxyXG4gIH1cclxuXHJcbiAgc2V0IHBsYXlGcmFtZVBvc2l0aW9uKHBsYXlGcmFtZVBvc2l0aW9uOm51bWJlcil7XHJcbiAgICAgIHRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS5wbGF5RnJhbWVQb3NpdGlvbiA9IHBsYXlGcmFtZVBvc2l0aW9uXHJcbiAgfVxyXG5cclxuICBlcnJvcigpIHtcclxuICAgIHRoaXMuc3RhdHVzID0gJ0VSUk9SJztcclxuICB9XHJcblxyXG59XHJcblxyXG4iXX0=
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fZGlzcGxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby9hdWRpb19kaXNwbGF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUVNLEtBQUssR0FDdkIsTUFBTSxlQUFlLENBQUE7QUFJdEIsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQTRDdEUsTUFBTSxPQUFPLFlBQVk7SUE0QnZCLFlBQW9CLEtBQXFCLEVBQVUsR0FBc0IsRUFBUyxJQUFlO1FBQTdFLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBekJ6RixlQUFVLEdBQWdCLElBQUksQ0FBQTtRQTBCcEMsdUNBQXVDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsbUJBQW1CLEdBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFDLGlCQUFpQixDQUFDO0lBRWhDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixHQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQTtRQUN0RSxJQUFJLENBQUMsb0JBQW9CLEdBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLG9CQUFv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O3NCQURyQixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkE4Qy9DLFNBQVM7c0JBRFosS0FBSztnQkFVRixTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBBZnRlclZpZXdJbml0LCBJbnB1dCwgT25Jbml0LCBFbGVtZW50UmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5pbXBvcnQge0F1ZGlvQ2xpcCwgU2VsZWN0aW9ufSBmcm9tICcuL3BlcnNpc3RvcidcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge0FjdGlvbn0gZnJvbSBcIi4uL2FjdGlvbi9hY3Rpb25cIjtcclxuaW1wb3J0IHtBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lfSBmcm9tIFwiLi91aS9hdWRpb19kaXNwbGF5X3Njcm9sbF9wYW5lXCI7XHJcbmltcG9ydCB7QXVkaW9EYXRhSG9sZGVyfSBmcm9tIFwiLi9hdWRpb19kYXRhX2hvbGRlclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLWF1ZGlvZGlzcGxheScsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcblxyXG4gICAgPGF1ZGlvLWRpc3BsYXktc2Nyb2xsLXBhbmUgI2F1ZGlvRGlzcGxheVNjcm9sbFBhbmU+PC9hdWRpby1kaXNwbGF5LXNjcm9sbC1wYW5lPlxyXG5cclxuICAgIDxhdWRpby1kaXNwbGF5LWNvbnRyb2wgW2F1ZGlvQ2xpcF09XCJhdWRpb0NsaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGF5U3RhcnRBY3Rpb25dPVwicGxheVN0YXJ0QWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVNlbGVjdGlvbkFjdGlvbl09XCJwbGF5U2VsZWN0aW9uQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGF5U3RvcEFjdGlvbl09XCJwbGF5U3RvcEFjdGlvblwiXHJcbiAgICBbYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbl09XCJhdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uXCJcclxuICAgIFt6b29tSW5BY3Rpb25dPVwiem9vbUluQWN0aW9uXCJcclxuICAgIFt6b29tT3V0QWN0aW9uXT1cInpvb21PdXRBY3Rpb25cIlxyXG4gICAgW3pvb21TZWxlY3RlZEFjdGlvbl09XCJ6b29tU2VsZWN0ZWRBY3Rpb25cIlxyXG4gICAgW3pvb21GaXRUb1BhbmVsQWN0aW9uXT1cInpvb21GaXRUb1BhbmVsQWN0aW9uXCI+PC9hdWRpby1kaXNwbGF5LWNvbnRyb2w+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgICAgYDpob3N0IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IDBweDtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgei1pbmRleDogNTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMzAsIDIzMCwgMjMwLCAxLjApXHJcbiAgICB9YCxgXHJcbiAgICAgICAgICBsZWdlbmR7XHJcbiAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDFlbTsgcGFkZGluZzogMC4yZW0gMC44ZW07Zm9udC1zaXplOiAwLjhlbTtcclxuICAgICAgfWAsYFxyXG4gICAgICAgIGZpZWxkc2V0e1xyXG4gICAgICAgICAgICBib3JkZXI6IDFweCBkYXJrZ3JheSBzb2xpZFxyXG4gICAgICB9XHJcbiAgICAgIGBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaW9EaXNwbGF5IGltcGxlbWVudHMgT25Jbml0LEFmdGVyVmlld0luaXQge1xyXG5cclxuICBwYXJlbnRFOiBIVE1MRWxlbWVudDtcclxuICBwcml2YXRlIF9hdWRpb0NsaXA6QXVkaW9DbGlwfG51bGw9bnVsbFxyXG5cclxuICBASW5wdXQoKVxyXG4gIHBsYXlTdGFydEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKVxyXG4gIHBsYXlTdG9wQWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgcGxheVNlbGVjdGlvbkFjdGlvbjpBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbiE6QWN0aW9uPGJvb2xlYW4+fHVuZGVmaW5lZDtcclxuXHJcbiAgem9vbUZpdFRvUGFuZWxBY3Rpb24hOkFjdGlvbjx2b2lkPjtcclxuICB6b29tU2VsZWN0ZWRBY3Rpb24hOkFjdGlvbjx2b2lkPlxyXG4gIHpvb21JbkFjdGlvbiE6QWN0aW9uPHZvaWQ+O1xyXG4gIHpvb21PdXRBY3Rpb24hOkFjdGlvbjx2b2lkPjtcclxuXHJcbiAgY2xlYXJTZWxlY3Rpb25BY3Rpb24hOkFjdGlvbjx2b2lkPlxyXG5cclxuICBzdGF0dXM6IHN0cmluZztcclxuXHJcbiAgYXVkaW86IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZChBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGF1ZGlvRGlzcGxheVNjcm9sbFBhbmUhOiBBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgZVJlZjpFbGVtZW50UmVmKSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiY29uc3RydWN0b3I6IFwiK3RoaXMuYWMpO1xyXG4gICAgICB0aGlzLnBhcmVudEU9dGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLnBsYXlTdGFydEFjdGlvbiA9IG5ldyBBY3Rpb24oXCJTdGFydFwiKTtcclxuICAgIHRoaXMucGxheVNlbGVjdGlvbkFjdGlvbj1uZXcgQWN0aW9uKFwiUGxheSBzZWxlY3RlZFwiKTtcclxuICAgIHRoaXMucGxheVN0b3BBY3Rpb24gPSBuZXcgQWN0aW9uKFwiU3RvcFwiKTtcclxuICAgIHRoaXMuc3RhdHVzPVwiUGxheWVyIGNyZWF0ZWQuXCI7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKXtcclxuICAgIHRoaXMuem9vbVNlbGVjdGVkQWN0aW9uPXRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS56b29tU2VsZWN0ZWRBY3Rpb25cclxuICAgIHRoaXMuem9vbUZpdFRvUGFuZWxBY3Rpb249dGhpcy5hdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLnpvb21GaXRUb1BhbmVsQWN0aW9uXHJcbiAgICB0aGlzLnpvb21PdXRBY3Rpb249dGhpcy5hdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLnpvb21PdXRBY3Rpb25cclxuICAgIHRoaXMuem9vbUluQWN0aW9uPXRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS56b29tSW5BY3Rpb25cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHJcbiAgICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgICAgIGxldCBoZWlnaHRMaXN0ZW5lcj1uZXcgTXV0YXRpb25PYnNlcnZlcigobXJzOkFycmF5PE11dGF0aW9uUmVjb3JkPixtbzpNdXRhdGlvbk9ic2VydmVyKT0+e1xyXG4gICAgICAgICAgbXJzLmZvckVhY2goKG1yOk11dGF0aW9uUmVjb3JkKT0+e1xyXG4gICAgICAgICAgICAgIGlmKCdhdHRyaWJ1dGVzJz09PW1yLnR5cGUgJiYgKCdjbGFzcyc9PT1tci5hdHRyaWJ1dGVOYW1lIHx8ICdzdHlsZSc9PT1tci5hdHRyaWJ1dGVOYW1lKSl7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICAgIGhlaWdodExpc3RlbmVyLm9ic2VydmUodGhpcy5wYXJlbnRFLHthdHRyaWJ1dGVzOiB0cnVlLGNoaWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZX0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGxheW91dCgpe1xyXG4gICAgdGhpcy5hdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLmxheW91dCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXJ0ZWQoKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlBsYXkgc3RhcnRlZFwiKTtcclxuICAgIHRoaXMuc3RhdHVzID0gJ1BsYXlpbmcuLi4nO1xyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGF1ZGlvRGF0YShhdWRpb0RhdGE6IEF1ZGlvRGF0YUhvbGRlcil7XHJcbiAgICAgIHRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS5hdWRpb0RhdGEgPSBhdWRpb0RhdGE7XHJcbiAgICAgIGlmKHRoaXMucGxheVN0YXJ0QWN0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLnBsYXlTdGFydEFjdGlvbi5kaXNhYmxlZCA9IChhdWRpb0RhdGEgPT0gbnVsbClcclxuICAgICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGF1ZGlvQ2xpcChhdWRpb0NsaXA6IEF1ZGlvQ2xpcCB8IG51bGwpIHtcclxuXHJcbiAgICBsZXQgYXVkaW9EYXRhOkF1ZGlvQnVmZmVyfG51bGw9bnVsbDtcclxuICAgIGxldCBzZWw6U2VsZWN0aW9ufG51bGw9bnVsbDtcclxuICAgIGlmKGF1ZGlvQ2xpcCl7XHJcbiAgICAgIGF1ZGlvRGF0YT1hdWRpb0NsaXAuYXVkaW9EYXRhSG9sZGVyLmJ1ZmZlcjtcclxuICAgICAgc2VsPWF1ZGlvQ2xpcC5zZWxlY3Rpb247XHJcbiAgICAgIH1cclxuICAgIHRoaXMuX2F1ZGlvQ2xpcD1hdWRpb0NsaXBcclxuICAgIHRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS5hdWRpb0NsaXAgPSBhdWRpb0NsaXA7XHJcbiAgICAvL3RoaXMucGxheVN0YXJ0QWN0aW9uLmRpc2FibGVkID0gKGF1ZGlvRGF0YSE9PW51bGwpXHJcbiAgfVxyXG5cclxuICBnZXQgYXVkaW9DbGlwKCk6QXVkaW9DbGlwfG51bGx7XHJcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9DbGlwXHJcbiAgfVxyXG5cclxuICBzZXQgcGxheUZyYW1lUG9zaXRpb24ocGxheUZyYW1lUG9zaXRpb246bnVtYmVyKXtcclxuICAgICAgdGhpcy5hdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLnBsYXlGcmFtZVBvc2l0aW9uID0gcGxheUZyYW1lUG9zaXRpb25cclxuICB9XHJcblxyXG4gIGVycm9yKCkge1xyXG4gICAgdGhpcy5zdGF0dXMgPSAnRVJST1InO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -4,6 +4,7 @@ import { AudioPlayer, EventType } from './playback/player';
|
|
|
4
4
|
import { Action } from "../action/action";
|
|
5
5
|
import { AudioDisplayScrollPane } from "./ui/audio_display_scroll_pane";
|
|
6
6
|
import { AudioContextProvider } from "./context";
|
|
7
|
+
import { AudioDataHolder } from "./audio_data_holder";
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@angular/router";
|
|
9
10
|
import * as i2 from "./ui/audio_display_scroll_pane";
|
|
@@ -126,14 +127,15 @@ export class AudioDisplayPlayer {
|
|
|
126
127
|
if (this.aCtx) {
|
|
127
128
|
this.aCtx.decodeAudioData(data, (audioBuffer) => {
|
|
128
129
|
//console.debug("Audio Buffer Samplerate: ", audioBuffer.sampleRate)
|
|
129
|
-
|
|
130
|
+
let adh = new AudioDataHolder(audioBuffer, null);
|
|
131
|
+
this.audioClip = new AudioClip(adh);
|
|
130
132
|
});
|
|
131
133
|
}
|
|
132
134
|
}
|
|
133
|
-
set audioData(
|
|
134
|
-
this.audioDisplayScrollPane.audioData =
|
|
135
|
-
if (
|
|
136
|
-
let clip = new AudioClip(
|
|
135
|
+
set audioData(audioData) {
|
|
136
|
+
this.audioDisplayScrollPane.audioData = audioData;
|
|
137
|
+
if (audioData) {
|
|
138
|
+
let clip = new AudioClip(audioData);
|
|
137
139
|
if (this.ap) {
|
|
138
140
|
this.ap.audioClip = clip;
|
|
139
141
|
this.playStartAction.disabled = false;
|
|
@@ -155,7 +157,7 @@ export class AudioDisplayPlayer {
|
|
|
155
157
|
let audioData = null;
|
|
156
158
|
let sel = null;
|
|
157
159
|
if (audioClip) {
|
|
158
|
-
audioData = audioClip.
|
|
160
|
+
audioData = audioClip.audioDataHolder;
|
|
159
161
|
sel = audioClip.selection;
|
|
160
162
|
if (this._audioClip) {
|
|
161
163
|
this._audioClip.addSelectionObserver((ac) => {
|
|
@@ -273,4 +275,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
273
275
|
}], audioClip: [{
|
|
274
276
|
type: Input
|
|
275
277
|
}] } });
|
|
276
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fcGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2F1ZGlvX3BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFFTSxLQUFLLEdBQ3ZCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBQyxTQUFTLEVBQVksTUFBTSxhQUFhLENBQUE7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBeUMsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFFL0YsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFvQy9DLE1BQU0sT0FBTyxrQkFBa0I7SUFrQzdCLFlBQXNCLEtBQXFCLEVBQVksR0FBc0IsRUFBVyxJQUFlO1FBQWpGLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVksUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBakMvRixjQUFTLEdBQWMsSUFBSSxDQUFDO1FBbUJwQyxTQUFJLEdBQW9CLElBQUksQ0FBQztRQUNyQixlQUFVLEdBQWdCLElBQUksQ0FBQztRQUl2QyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFVeEMsdUNBQXVDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsbUJBQW1CLEdBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckQsSUFBSSxD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QUFNLEdBQUcsUUFBUSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFFM0IsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUN4QixDQUFDOztnSEFsUVUsa0JBQWtCO29HQUFsQixrQkFBa0Isa1dBK0JsQixzQkFBc0IsOERBN0R2Qjs7Ozs7Ozs7Ozs7OztHQWFUOzRGQWlCVSxrQkFBa0I7a0JBbEM5QixTQUFTO21CQUFDO29CQUVULFFBQVEsRUFBRSx3QkFBd0I7b0JBRWxDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFUO29CQUNELE1BQU0sRUFBRTt3QkFDSjs7Ozs7Ozs7Ozs7O01BWUE7cUJBQUM7aUJBRU47OEpBT0MsZUFBZTtzQkFEZCxLQUFLO2dCQUdOLGNBQWM7c0JBRGIsS0FBSztnQkFHTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBR04sNEJBQTRCO3NCQUQzQixLQUFLO2dCQXFCRSxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQTZJL0MsU0FBUztzQkFEWixLQUFLO2dCQXVCRixTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBBZnRlclZpZXdJbml0LCBJbnB1dCwgQWZ0ZXJDb250ZW50SW5pdCwgT25Jbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdDaGVja2VkLCBFbGVtZW50UmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5pbXBvcnQge0F1ZGlvQ2xpcCwgU2VsZWN0aW9ufSBmcm9tICcuL3BlcnNpc3RvcidcclxuaW1wb3J0IHtBdWRpb1BsYXllciwgQXVkaW9QbGF5ZXJMaXN0ZW5lciwgQXVkaW9QbGF5ZXJFdmVudCwgRXZlbnRUeXBlfSBmcm9tICcuL3BsYXliYWNrL3BsYXllcidcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7QWN0aW9ufSBmcm9tIFwiLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge0F1ZGlvRGlzcGxheVNjcm9sbFBhbmV9IGZyb20gXCIuL3VpL2F1ZGlvX2Rpc3BsYXlfc2Nyb2xsX3BhbmVcIjtcclxuaW1wb3J0IHtBdWRpb0NvbnRleHRQcm92aWRlcn0gZnJvbSBcIi4vY29udGV4dFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLWF1ZGlvZGlzcGxheXBsYXllcicsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcblxyXG4gICAgPGF1ZGlvLWRpc3BsYXktc2Nyb2xsLXBhbmUgI2F1ZGlvRGlzcGxheVNjcm9sbFBhbmU+PC9hdWRpby1kaXNwbGF5LXNjcm9sbC1wYW5lPlxyXG5cclxuICAgIDxhdWRpby1kaXNwbGF5LWNvbnRyb2wgW2F1ZGlvQ2xpcF09XCJhdWRpb0NsaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGF5U3RhcnRBY3Rpb25dPVwicGxheVN0YXJ0QWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVNlbGVjdGlvbkFjdGlvbl09XCJwbGF5U2VsZWN0aW9uQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0b3BBY3Rpb25dPVwicGxheVN0b3BBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uXT1cImFwPy5hdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbem9vbUluQWN0aW9uXT1cInpvb21JbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21PdXRBY3Rpb25dPVwiem9vbU91dEFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21TZWxlY3RlZEFjdGlvbl09XCJ6b29tU2VsZWN0ZWRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tRml0VG9QYW5lbEFjdGlvbl09XCJ6b29tRml0VG9QYW5lbEFjdGlvblwiPjwvYXVkaW8tZGlzcGxheS1jb250cm9sPjxwPnt7c3RhdHVzfX1cclxuICBgLFxyXG4gIHN0eWxlczogW1xyXG4gICAgICBgOmhvc3Qge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGJvdHRvbTogMHB4O1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNzUpXHJcbiAgICB9YF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpb0Rpc3BsYXlQbGF5ZXIgaW1wbGVtZW50cyBBdWRpb1BsYXllckxpc3RlbmVyLCBPbkluaXQsQWZ0ZXJDb250ZW50SW5pdCxBZnRlckNvbnRlbnRDaGVja2VkLEFmdGVyVmlld0luaXQsQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgcHJpdmF0ZSBfYXVkaW9Vcmw6IHN0cmluZ3xudWxsPW51bGw7XHJcblxyXG4gIHBhcmVudEU6IEhUTUxFbGVtZW50O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBsYXlTdGFydEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIEBJbnB1dCgpXHJcbiAgcGxheVN0b3BBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBASW5wdXQoKVxyXG4gIHBsYXlTZWxlY3Rpb25BY3Rpb246QWN0aW9uPHZvaWQ+XHJcbiAgQElucHV0KClcclxuICBhdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uITpBY3Rpb248Ym9vbGVhbj47XHJcblxyXG4gIHpvb21GaXRUb1BhbmVsQWN0aW9uITpBY3Rpb248dm9pZD47XHJcbiAgem9vbVNlbGVjdGVkQWN0aW9uITpBY3Rpb248dm9pZD47XHJcbiAgem9vbUluQWN0aW9uITpBY3Rpb248dm9pZD47XHJcbiAgem9vbU91dEFjdGlvbiE6QWN0aW9uPHZvaWQ+O1xyXG5cclxuXHJcbiAgYUN0eDogQXVkaW9Db250ZXh0fG51bGw9bnVsbDtcclxuICBwcml2YXRlIF9hdWRpb0NsaXA6QXVkaW9DbGlwfG51bGw9bnVsbDtcclxuICBhcDogQXVkaW9QbGF5ZXJ8dW5kZWZpbmVkO1xyXG4gIHN0YXR1czogc3RyaW5nO1xyXG5cclxuICBjdXJyZW50TG9hZGVyOiBYTUxIdHRwUmVxdWVzdCB8IG51bGw9bnVsbDtcclxuXHJcbiAgYXVkaW86IGFueTtcclxuICB1cGRhdGVUaW1lcklkOiBhbnk7XHJcblxyXG5cclxuICBAVmlld0NoaWxkKEF1ZGlvRGlzcGxheVNjcm9sbFBhbmUsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBhdWRpb0Rpc3BsYXlTY3JvbGxQYW5lITogQXVkaW9EaXNwbGF5U2Nyb2xsUGFuZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJvdGVjdGVkIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYscHJvdGVjdGVkIGVSZWY6RWxlbWVudFJlZikge1xyXG4gICAgLy9jb25zb2xlLmxvZyhcImNvbnN0cnVjdG9yOiBcIit0aGlzLmFjKTtcclxuICAgICAgdGhpcy5wYXJlbnRFPXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5wbGF5U3RhcnRBY3Rpb24gPSBuZXcgQWN0aW9uKFwiU3RhcnRcIik7XHJcbiAgICB0aGlzLnBsYXlTZWxlY3Rpb25BY3Rpb249bmV3IEFjdGlvbihcIlBsYXkgc2VsZWN0ZWRcIik7XHJcbiAgICB0aGlzLnBsYXlTdG9wQWN0aW9uID0gbmV3IEFjdGlvbihcIlN0b3BcIik7XHJcbiAgICB0aGlzLnN0YXR1cz1cIlBsYXllciBjcmVhdGVkLlwiO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiT25Jbml0OiBcIit0aGlzLmFjKTtcclxuICAgIHRoaXMuem9vbVNlbGVjdGVkQWN0aW9uPXRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS56b29tU2VsZWN0ZWRBY3Rpb25cclxuICAgICAgdGhpcy56b29tRml0VG9QYW5lbEFjdGlvbj10aGlzLmF1ZGlvRGlzcGxheVNjcm9sbFBhbmUuem9vbUZpdFRvUGFuZWxBY3Rpb247XHJcbiAgICB0aGlzLnpvb21PdXRBY3Rpb249dGhpcy5hdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLnpvb21PdXRBY3Rpb247XHJcbiAgICB0aGlzLnpvb21JbkFjdGlvbj10aGlzLmF1ZGlvRGlzcGxheVNjcm9sbFBhbmUuem9vbUluQWN0aW9uO1xyXG4gICAgIHRyeSB7XHJcbiAgICAgICB0aGlzLmFDdHggPSBBdWRpb0NvbnRleHRQcm92aWRlci5hdWRpb0NvbnRleHRJbnN0YW5jZSgpO1xyXG4gICAgICAgaWYodGhpcy5hQ3R4KSB7XHJcbiAgICAgICAgIHRoaXMuYXAgPSBuZXcgQXVkaW9QbGF5ZXIodGhpcy5hQ3R4LCB0aGlzKTtcclxuICAgICAgIH1cclxuICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgIGlmKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgIHRoaXMuc3RhdHVzID0gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICB9XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpe1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIkFmdGVyQ29udGVudEluaXQ6IFwiK3RoaXMuYWMpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCl7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiQWZ0ZXJDb250ZW50Q2hlY2tlZDogXCIrdGhpcy5hYyk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgIGlmICh0aGlzLmFDdHggJiYgdGhpcy5hcCkge1xyXG4gICAgICAgICAgdGhpcy5wbGF5U3RhcnRBY3Rpb24ub25BY3Rpb24gPSAoKSA9PiB0aGlzLmFwPy5zdGFydCgpO1xyXG4gICAgICAgICAgdGhpcy5wbGF5U2VsZWN0aW9uQWN0aW9uLm9uQWN0aW9uID0gKCkgPT4gdGhpcy5hcD8uc3RhcnRTZWxlY3RlZCgpO1xyXG4gICAgICAgICAgdGhpcy5wbGF5U3RvcEFjdGlvbi5vbkFjdGlvbiA9ICgpID0+IHRoaXMuYXA/LnN0b3AoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgICBsZXQgaGVpZ2h0TGlzdGVuZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG1yczpBcnJheTxNdXRhdGlvblJlY29yZD4sbW86TXV0YXRpb25PYnNlcnZlcik9PntcclxuICAgICAgICAgIG1ycy5mb3JFYWNoKChtcjpNdXRhdGlvblJlY29yZCk9PntcclxuICAgICAgICAgICAgICBpZignYXR0cmlidXRlcyc9PT1tci50eXBlICYmICgnY2xhc3MnPT09bXIuYXR0cmlidXRlTmFtZSB8fCAnc3R5bGUnPT09bXIuYXR0cmlidXRlTmFtZSkpe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgIH0pO1xyXG4gICAgICBoZWlnaHRMaXN0ZW5lci5vYnNlcnZlKHRoaXMucGFyZW50RSx7YXR0cmlidXRlczogdHJ1ZSxjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWV9KTtcclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IFBhcmFtcykgPT4ge1xyXG4gICAgICBpZiAocGFyYW1zWyd1cmwnXSkge1xyXG4gICAgICAgIHRoaXMuYXVkaW9VcmwgPSBwYXJhbXNbJ3VybCddO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKXtcclxuICAgIC8vY29uc29sZS5sb2coXCJBZnRlclZpZXdDaGVja2VkOiBcIit0aGlzLmFjKTtcclxuICB9XHJcblxyXG5cclxuICBpbml0KCkge1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBsYXlvdXQoKXtcclxuICAgIHRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS5sYXlvdXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBhdWRpb1VybCgpOiBzdHJpbmd8bnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9Vcmw7XHJcbiAgfVxyXG5cclxuICBzZXQgYXVkaW9VcmwodmFsdWU6IHN0cmluZ3xudWxsKSB7XHJcbiAgICBpZih0aGlzLmFwKSB7XHJcbiAgICAgIHRoaXMuYXAuc3RvcCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fYXVkaW9VcmwgPSB2YWx1ZTtcclxuICAgIHRoaXMubG9hZCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXJ0ZWQoKSB7XHJcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJQbGF5IHN0YXJ0ZWRcIik7XHJcbiAgICB0aGlzLnN0YXR1cyA9ICdQbGF5aW5nLi4uJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZCgpIHtcclxuXHJcbiAgICBpZiAodGhpcy5jdXJyZW50TG9hZGVyKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudExvYWRlci5hYm9ydCgpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRMb2FkZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5fYXVkaW9VcmwpIHtcclxuICAgICAgLy90aGlzLnN0YXR1c01zZy5pbm5lckhUTUwgPSAnQ29ubmVjdGluZy4uLic7XHJcbiAgICAgIHRoaXMuY3VycmVudExvYWRlciA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRMb2FkZXIub3BlbihcIkdFVFwiLCB0aGlzLl9hdWRpb1VybCwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuY3VycmVudExvYWRlci5yZXNwb25zZVR5cGUgPSBcImFycmF5YnVmZmVyXCI7XHJcbiAgICAgIHRoaXMuY3VycmVudExvYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRMb2FkZXIpIHtcclxuXHJcbiAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuY3VycmVudExvYWRlci5yZXNwb25zZTsgLy8gbm90IHJlc3BvbnNlVGV4dFxyXG4gICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiUmVjZWl2ZWQgZGF0YSBcIiwgZGF0YS5ieXRlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudExvYWRlciA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlZChkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50TG9hZGVyLm9uZXJyb3IgPSAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBkb3dubG9hZGluZyAuLi5cIik7XHJcbiAgICAgICAgLy90aGlzLnN0YXR1c01zZy5pbm5lckhUTUwgPSAnRXJyb3IgbG9hZGluZyBhdWRpbyBmaWxlISc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TG9hZGVyID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICAvL3RoaXMuc3RhdHVzTXNnLmlubmVySFRNTCA9ICdMb2FkaW5nLi4uJztcclxuXHJcbiAgICAgIHRoaXMuY3VycmVudExvYWRlci5zZW5kKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRlZChkYXRhOiBBcnJheUJ1ZmZlcikge1xyXG5cclxuICAgIC8vY29uc29sZS5kZWJ1ZyhcIkxvYWRlZFwiKTtcclxuICAgIHRoaXMuc3RhdHVzID0gJ0F1ZGlvIGZpbGUgbG9hZGVkLic7XHJcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJSZWNlaXZlZCBkYXRhIFwiLCBkYXRhLmJ5dGVMZW5ndGgpO1xyXG5cclxuICAgIC8vIERvIG5vdCB1c2UgUHJvbWlzZSB2ZXJzaW9uLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdpdGggU2FmYXJpIDEzXHJcbiAgICBpZih0aGlzLmFDdHgpIHtcclxuICAgICAgdGhpcy5hQ3R4LmRlY29kZUF1ZGlvRGF0YShkYXRhLCAoYXVkaW9CdWZmZXIpID0+IHtcclxuICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJBdWRpbyBCdWZmZXIgU2FtcGxlcmF0ZTogXCIsIGF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUpXHJcbiAgICAgICAgdGhpcy5hdWRpb0NsaXAgPSBuZXcgQXVkaW9DbGlwKGF1ZGlvQnVmZmVyKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGF1ZGlvRGF0YShhdWRpb0J1ZmZlcjogQXVkaW9CdWZmZXIpe1xyXG4gICAgICB0aGlzLmF1ZGlvRGlzcGxheVNjcm9sbFBhbmUuYXVkaW9EYXRhID0gYXVkaW9CdWZmZXI7XHJcbiAgICAgIGlmKGF1ZGlvQnVmZmVyKSB7XHJcbiAgICAgICAgICBsZXQgY2xpcCA9IG5ldyBBdWRpb0NsaXAoYXVkaW9CdWZmZXIpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXApe1xyXG4gICAgICAgICAgICAgIHRoaXMuYXAuYXVkaW9DbGlwID0gY2xpcDtcclxuICAgICAgICAgICAgICAgIHRoaXMucGxheVN0YXJ0QWN0aW9uLmRpc2FibGVkID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMucGxheVN0YXJ0QWN0aW9uLmRpc2FibGVkID0gdHJ1ZVxyXG4gICAgICAgICAgaWYgKHRoaXMuYXApe1xyXG4gICAgICAgICAgICAgIHRoaXMuYXAuYXVkaW9DbGlwID0gbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgdGhpcy5wbGF5U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkPXRydWVcclxuICB9XHJcblxyXG4gIHN0YXJ0U2VsZWN0aW9uRGlzYWJsZWQoKXtcclxuICAgIHJldHVybiAhKHRoaXMuX2F1ZGlvQ2xpcCAmJiB0aGlzLmFwIT1udWxsICYmICF0aGlzLnBsYXlTdGFydEFjdGlvbi5kaXNhYmxlZCAmJiB0aGlzLl9hdWRpb0NsaXAuc2VsZWN0aW9uIClcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGF1ZGlvQ2xpcChhdWRpb0NsaXA6IEF1ZGlvQ2xpcCB8IG51bGwpIHtcclxuICAgIHRoaXMuX2F1ZGlvQ2xpcD1hdWRpb0NsaXBcclxuICAgIGxldCBhdWRpb0RhdGE6QXVkaW9CdWZmZXJ8bnVsbD1udWxsO1xyXG4gICAgbGV0IHNlbDpTZWxlY3Rpb258bnVsbD1udWxsO1xyXG4gICAgaWYoYXVkaW9DbGlwKXtcclxuICAgICAgYXVkaW9EYXRhPWF1ZGlvQ2xpcC5idWZmZXI7XHJcbiAgICAgIHNlbD1hdWRpb0NsaXAuc2VsZWN0aW9uO1xyXG4gICAgICBpZih0aGlzLl9hdWRpb0NsaXApIHtcclxuICAgICAgICB0aGlzLl9hdWRpb0NsaXAuYWRkU2VsZWN0aW9uT2JzZXJ2ZXIoKGFjKSA9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy5wbGF5U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkID0gdGhpcy5zdGFydFNlbGVjdGlvbkRpc2FibGVkKClcclxuICAgICAgICAgIC8vIGlmKHRoaXMuYXAgJiYgYWMuc2VsZWN0aW9uICYmIHRoaXMuYXV0b3BsYXlTZWxlY3RlZENoZWNrYm94LmNoZWNrZWQpe1xyXG4gICAgICAgICAgLy8gICB0aGlzLmFwLnN0YXJ0U2VsZWN0ZWQoKVxyXG4gICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZihhdWRpb0RhdGEpIHtcclxuICAgICAgdGhpcy5wbGF5U3RhcnRBY3Rpb24uZGlzYWJsZWQgPSghdGhpcy5hcClcclxuICAgICAgdGhpcy5wbGF5U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkPXRoaXMuc3RhcnRTZWxlY3Rpb25EaXNhYmxlZCgpXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5wbGF5U3RhcnRBY3Rpb24uZGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMucGxheVNlbGVjdGlvbkFjdGlvbi5kaXNhYmxlZD10cnVlXHJcbiAgfVxyXG5cclxuICAgIHRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS5hdWRpb0NsaXA9YXVkaW9DbGlwXHJcbiAgICBpZih0aGlzLmFwKSB7XHJcbiAgICAgIHRoaXMuYXAuYXVkaW9DbGlwID0gYXVkaW9DbGlwXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYXVkaW9DbGlwKCk6QXVkaW9DbGlwfG51bGx7XHJcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9DbGlwXHJcbiAgfVxyXG5cclxuICB1cGRhdGVQbGF5UG9zaXRpb24oKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuYXAgJiYgdGhpcy5hcC5wbGF5UG9zaXRpb25GcmFtZXMpIHtcclxuICAgICAgdGhpcy5hdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLnBsYXlGcmFtZVBvc2l0aW9uID0gdGhpcy5hcC5wbGF5UG9zaXRpb25GcmFtZXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhdWRpb1BsYXllclVwZGF0ZShlOiBBdWRpb1BsYXllckV2ZW50KSB7XHJcbiAgICBpZiAoRXZlbnRUeXBlLlNUQVJURUQgPT09IGUudHlwZSkge1xyXG4gICAgICB0aGlzLnN0YXR1cyA9ICdQbGF5YmFjay4uLic7XHJcbiAgICAgIHRoaXMudXBkYXRlVGltZXJJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB0aGlzLnVwZGF0ZVBsYXlQb3NpdGlvbigpLCA1MCk7XHJcbiAgICAgIHRoaXMucGxheVN0YXJ0QWN0aW9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5wbGF5U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkPXRydWVcclxuICAgICAgdGhpcy5wbGF5U3RvcEFjdGlvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmIChFdmVudFR5cGUuRU5ERUQgPT09IGUudHlwZSkge1xyXG4gICAgICB0aGlzLnN0YXR1cyA9ICdSZWFkeS4nO1xyXG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLnVwZGF0ZVRpbWVySWQpO1xyXG4gICAgICB0aGlzLnBsYXlTdGFydEFjdGlvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBsYXlTZWxlY3Rpb25BY3Rpb24uZGlzYWJsZWQ9dGhpcy5zdGFydFNlbGVjdGlvbkRpc2FibGVkKClcclxuICAgICAgdGhpcy5wbGF5U3RvcEFjdGlvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICB9XHJcblxyXG4gIGVycm9yKCkge1xyXG4gICAgdGhpcy5zdGF0dXMgPSAnRVJST1InO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fcGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2F1ZGlvX3BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFFTSxLQUFLLEdBQ3ZCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBQyxTQUFTLEVBQVksTUFBTSxhQUFhLENBQUE7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBeUMsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFFL0YsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBb0NwRCxNQUFNLE9BQU8sa0JBQWtCO0lBa0M3QixZQUFzQixLQUFxQixFQUFZLEdBQXNCLEVBQVcsSUFBZTtRQUFqRixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFZLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVcsU0FBSSxHQUFKLElBQUksQ0FBVztRQWpDL0YsY0FBUyxHQUFjLElBQUksQ0FBQztRQW1CcEMsU0FBSSxHQUFvQixJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFnQixJQUFJLENBQUM7UUFJdkMsa0JBQWEsR0FBd0IsSUFBSSxDQUFDO1FBVXhDLHVDQUF1QztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLG1CQUFtQixHQUFD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Q29tcG9uZW50LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBBZnRlclZpZXdJbml0LCBJbnB1dCwgQWZ0ZXJDb250ZW50SW5pdCwgT25Jbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdDaGVja2VkLCBFbGVtZW50UmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5pbXBvcnQge0F1ZGlvQ2xpcCwgU2VsZWN0aW9ufSBmcm9tICcuL3BlcnNpc3RvcidcclxuaW1wb3J0IHtBdWRpb1BsYXllciwgQXVkaW9QbGF5ZXJMaXN0ZW5lciwgQXVkaW9QbGF5ZXJFdmVudCwgRXZlbnRUeXBlfSBmcm9tICcuL3BsYXliYWNrL3BsYXllcidcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7QWN0aW9ufSBmcm9tIFwiLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge0F1ZGlvRGlzcGxheVNjcm9sbFBhbmV9IGZyb20gXCIuL3VpL2F1ZGlvX2Rpc3BsYXlfc2Nyb2xsX3BhbmVcIjtcclxuaW1wb3J0IHtBdWRpb0NvbnRleHRQcm92aWRlcn0gZnJvbSBcIi4vY29udGV4dFwiO1xyXG5pbXBvcnQge0F1ZGlvRGF0YUhvbGRlcn0gZnJvbSBcIi4vYXVkaW9fZGF0YV9ob2xkZXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1hdWRpb2Rpc3BsYXlwbGF5ZXInLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG5cclxuICAgIDxhdWRpby1kaXNwbGF5LXNjcm9sbC1wYW5lICNhdWRpb0Rpc3BsYXlTY3JvbGxQYW5lPjwvYXVkaW8tZGlzcGxheS1zY3JvbGwtcGFuZT5cclxuXHJcbiAgICA8YXVkaW8tZGlzcGxheS1jb250cm9sIFthdWRpb0NsaXBdPVwiYXVkaW9DbGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0YXJ0QWN0aW9uXT1cInBsYXlTdGFydEFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTZWxlY3Rpb25BY3Rpb25dPVwicGxheVNlbGVjdGlvbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTdG9wQWN0aW9uXT1cInBsYXlTdG9wQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbl09XCJhcD8uYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21JbkFjdGlvbl09XCJ6b29tSW5BY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tT3V0QWN0aW9uXT1cInpvb21PdXRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tU2VsZWN0ZWRBY3Rpb25dPVwiem9vbVNlbGVjdGVkQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbem9vbUZpdFRvUGFuZWxBY3Rpb25dPVwiem9vbUZpdFRvUGFuZWxBY3Rpb25cIj48L2F1ZGlvLWRpc3BsYXktY29udHJvbD48cD57e3N0YXR1c319XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgICAgYDpob3N0IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IDBweDtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgei1pbmRleDogNTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjc1KVxyXG4gICAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaW9EaXNwbGF5UGxheWVyIGltcGxlbWVudHMgQXVkaW9QbGF5ZXJMaXN0ZW5lciwgT25Jbml0LEFmdGVyQ29udGVudEluaXQsQWZ0ZXJDb250ZW50Q2hlY2tlZCxBZnRlclZpZXdJbml0LEFmdGVyVmlld0NoZWNrZWQge1xyXG4gIHByaXZhdGUgX2F1ZGlvVXJsOiBzdHJpbmd8bnVsbD1udWxsO1xyXG5cclxuICBwYXJlbnRFOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBwbGF5U3RhcnRBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBASW5wdXQoKVxyXG4gIHBsYXlTdG9wQWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgQElucHV0KClcclxuICBwbGF5U2VsZWN0aW9uQWN0aW9uOkFjdGlvbjx2b2lkPlxyXG4gIEBJbnB1dCgpXHJcbiAgYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbiE6QWN0aW9uPGJvb2xlYW4+O1xyXG5cclxuICB6b29tRml0VG9QYW5lbEFjdGlvbiE6QWN0aW9uPHZvaWQ+O1xyXG4gIHpvb21TZWxlY3RlZEFjdGlvbiE6QWN0aW9uPHZvaWQ+O1xyXG4gIHpvb21JbkFjdGlvbiE6QWN0aW9uPHZvaWQ+O1xyXG4gIHpvb21PdXRBY3Rpb24hOkFjdGlvbjx2b2lkPjtcclxuXHJcblxyXG4gIGFDdHg6IEF1ZGlvQ29udGV4dHxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSBfYXVkaW9DbGlwOkF1ZGlvQ2xpcHxudWxsPW51bGw7XHJcbiAgYXA6IEF1ZGlvUGxheWVyfHVuZGVmaW5lZDtcclxuICBzdGF0dXM6IHN0cmluZztcclxuXHJcbiAgY3VycmVudExvYWRlcjogWE1MSHR0cFJlcXVlc3QgfCBudWxsPW51bGw7XHJcblxyXG4gIGF1ZGlvOiBhbnk7XHJcbiAgdXBkYXRlVGltZXJJZDogYW55O1xyXG5cclxuXHJcbiAgQFZpZXdDaGlsZChBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZSE6IEF1ZGlvRGlzcGxheVNjcm9sbFBhbmU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByb3RlY3RlZCByZWY6IENoYW5nZURldGVjdG9yUmVmLHByb3RlY3RlZCBlUmVmOkVsZW1lbnRSZWYpIHtcclxuICAgIC8vY29uc29sZS5sb2coXCJjb25zdHJ1Y3RvcjogXCIrdGhpcy5hYyk7XHJcbiAgICAgIHRoaXMucGFyZW50RT10aGlzLmVSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMucGxheVN0YXJ0QWN0aW9uID0gbmV3IEFjdGlvbihcIlN0YXJ0XCIpO1xyXG4gICAgdGhpcy5wbGF5U2VsZWN0aW9uQWN0aW9uPW5ldyBBY3Rpb24oXCJQbGF5IHNlbGVjdGVkXCIpO1xyXG4gICAgdGhpcy5wbGF5U3RvcEFjdGlvbiA9IG5ldyBBY3Rpb24oXCJTdG9wXCIpO1xyXG4gICAgdGhpcy5zdGF0dXM9XCJQbGF5ZXIgY3JlYXRlZC5cIjtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpe1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIk9uSW5pdDogXCIrdGhpcy5hYyk7XHJcbiAgICB0aGlzLnpvb21TZWxlY3RlZEFjdGlvbj10aGlzLmF1ZGlvRGlzcGxheVNjcm9sbFBhbmUuem9vbVNlbGVjdGVkQWN0aW9uXHJcbiAgICAgIHRoaXMuem9vbUZpdFRvUGFuZWxBY3Rpb249dGhpcy5hdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLnpvb21GaXRUb1BhbmVsQWN0aW9uO1xyXG4gICAgdGhpcy56b29tT3V0QWN0aW9uPXRoaXMuYXVkaW9EaXNwbGF5U2Nyb2xsUGFuZS56b29tT3V0QWN0aW9uO1xyXG4gICAgdGhpcy56b29tSW5BY3Rpb249dGhpcy5hdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLnpvb21JbkFjdGlvbjtcclxuICAgICB0cnkge1xyXG4gICAgICAgdGhpcy5hQ3R4ID0gQXVkaW9Db250ZXh0UHJvdmlkZXIuYXVkaW9Db250ZXh0SW5zdGFuY2UoKTtcclxuICAgICAgIGlmKHRoaXMuYUN0eCkge1xyXG4gICAgICAgICB0aGlzLmFwID0gbmV3IEF1ZGlvUGxheWVyKHRoaXMuYUN0eCwgdGhpcyk7XHJcbiAgICAgICB9XHJcbiAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICBpZihlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgICB0aGlzLnN0YXR1cyA9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgfVxyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKXtcclxuICAgIC8vY29uc29sZS5sb2coXCJBZnRlckNvbnRlbnRJbml0OiBcIit0aGlzLmFjKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIkFmdGVyQ29udGVudENoZWNrZWQ6IFwiK3RoaXMuYWMpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICBpZiAodGhpcy5hQ3R4ICYmIHRoaXMuYXApIHtcclxuICAgICAgICAgIHRoaXMucGxheVN0YXJ0QWN0aW9uLm9uQWN0aW9uID0gKCkgPT4gdGhpcy5hcD8uc3RhcnQoKTtcclxuICAgICAgICAgIHRoaXMucGxheVNlbGVjdGlvbkFjdGlvbi5vbkFjdGlvbiA9ICgpID0+IHRoaXMuYXA/LnN0YXJ0U2VsZWN0ZWQoKTtcclxuICAgICAgICAgIHRoaXMucGxheVN0b3BBY3Rpb24ub25BY3Rpb24gPSAoKSA9PiB0aGlzLmFwPy5zdG9wKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYXlvdXQoKTtcclxuICAgICAgbGV0IGhlaWdodExpc3RlbmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKChtcnM6QXJyYXk8TXV0YXRpb25SZWNvcmQ+LG1vOk11dGF0aW9uT2JzZXJ2ZXIpPT57XHJcbiAgICAgICAgICBtcnMuZm9yRWFjaCgobXI6TXV0YXRpb25SZWNvcmQpPT57XHJcbiAgICAgICAgICAgICAgaWYoJ2F0dHJpYnV0ZXMnPT09bXIudHlwZSAmJiAoJ2NsYXNzJz09PW1yLmF0dHJpYnV0ZU5hbWUgfHwgJ3N0eWxlJz09PW1yLmF0dHJpYnV0ZU5hbWUpKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgICAgaGVpZ2h0TGlzdGVuZXIub2JzZXJ2ZSh0aGlzLnBhcmVudEUse2F0dHJpYnV0ZXM6IHRydWUsY2hpbGRMaXN0OiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbXMpID0+IHtcclxuICAgICAgaWYgKHBhcmFtc1sndXJsJ10pIHtcclxuICAgICAgICB0aGlzLmF1ZGlvVXJsID0gcGFyYW1zWyd1cmwnXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCl7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiQWZ0ZXJWaWV3Q2hlY2tlZDogXCIrdGhpcy5hYyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaW5pdCgpIHtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgbGF5b3V0KCl7XHJcbiAgICB0aGlzLmF1ZGlvRGlzcGxheVNjcm9sbFBhbmUubGF5b3V0KCk7XHJcbiAgfVxyXG5cclxuICBnZXQgYXVkaW9VcmwoKTogc3RyaW5nfG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvVXJsO1xyXG4gIH1cclxuXHJcbiAgc2V0IGF1ZGlvVXJsKHZhbHVlOiBzdHJpbmd8bnVsbCkge1xyXG4gICAgaWYodGhpcy5hcCkge1xyXG4gICAgICB0aGlzLmFwLnN0b3AoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2F1ZGlvVXJsID0gdmFsdWU7XHJcbiAgICB0aGlzLmxvYWQoKTtcclxuICB9XHJcblxyXG5cclxuICBzdGFydGVkKCkge1xyXG4gICAgLy9jb25zb2xlLmRlYnVnKFwiUGxheSBzdGFydGVkXCIpO1xyXG4gICAgdGhpcy5zdGF0dXMgPSAnUGxheWluZy4uLic7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWQoKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudExvYWRlcikge1xyXG4gICAgICB0aGlzLmN1cnJlbnRMb2FkZXIuYWJvcnQoKTtcclxuICAgICAgdGhpcy5jdXJyZW50TG9hZGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuX2F1ZGlvVXJsKSB7XHJcbiAgICAgIC8vdGhpcy5zdGF0dXNNc2cuaW5uZXJIVE1MID0gJ0Nvbm5lY3RpbmcuLi4nO1xyXG4gICAgICB0aGlzLmN1cnJlbnRMb2FkZXIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgICAgdGhpcy5jdXJyZW50TG9hZGVyLm9wZW4oXCJHRVRcIiwgdGhpcy5fYXVkaW9VcmwsIHRydWUpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRMb2FkZXIucmVzcG9uc2VUeXBlID0gXCJhcnJheWJ1ZmZlclwiO1xyXG4gICAgICB0aGlzLmN1cnJlbnRMb2FkZXIub25sb2FkID0gKGUpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50TG9hZGVyKSB7XHJcblxyXG4gICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmN1cnJlbnRMb2FkZXIucmVzcG9uc2U7IC8vIG5vdCByZXNwb25zZVRleHRcclxuICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlJlY2VpdmVkIGRhdGEgXCIsIGRhdGEuYnl0ZUxlbmd0aCk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRMb2FkZXIgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZWQoZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudExvYWRlci5vbmVycm9yID0gKGUpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZG93bmxvYWRpbmcgLi4uXCIpO1xyXG4gICAgICAgIC8vdGhpcy5zdGF0dXNNc2cuaW5uZXJIVE1MID0gJ0Vycm9yIGxvYWRpbmcgYXVkaW8gZmlsZSEnO1xyXG4gICAgICAgIHRoaXMuY3VycmVudExvYWRlciA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgLy90aGlzLnN0YXR1c01zZy5pbm5lckhUTUwgPSAnTG9hZGluZy4uLic7XHJcblxyXG4gICAgICB0aGlzLmN1cnJlbnRMb2FkZXIuc2VuZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkZWQoZGF0YTogQXJyYXlCdWZmZXIpIHtcclxuXHJcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJMb2FkZWRcIik7XHJcbiAgICB0aGlzLnN0YXR1cyA9ICdBdWRpbyBmaWxlIGxvYWRlZC4nO1xyXG4gICAgLy9jb25zb2xlLmRlYnVnKFwiUmVjZWl2ZWQgZGF0YSBcIiwgZGF0YS5ieXRlTGVuZ3RoKTtcclxuXHJcbiAgICAvLyBEbyBub3QgdXNlIFByb21pc2UgdmVyc2lvbiwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIFNhZmFyaSAxM1xyXG4gICAgaWYodGhpcy5hQ3R4KSB7XHJcbiAgICAgIHRoaXMuYUN0eC5kZWNvZGVBdWRpb0RhdGEoZGF0YSwgKGF1ZGlvQnVmZmVyKSA9PiB7XHJcbiAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiQXVkaW8gQnVmZmVyIFNhbXBsZXJhdGU6IFwiLCBhdWRpb0J1ZmZlci5zYW1wbGVSYXRlKVxyXG4gICAgICAgIGxldCBhZGg9bmV3IEF1ZGlvRGF0YUhvbGRlcihhdWRpb0J1ZmZlcixudWxsKTtcclxuICAgICAgICB0aGlzLmF1ZGlvQ2xpcCA9IG5ldyBBdWRpb0NsaXAoYWRoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhdWRpb0RhdGEoYXVkaW9EYXRhOiBBdWRpb0RhdGFIb2xkZXIpe1xyXG4gICAgICB0aGlzLmF1ZGlvRGlzcGxheVNjcm9sbFBhbmUuYXVkaW9EYXRhID0gYXVkaW9EYXRhO1xyXG4gICAgICBpZihhdWRpb0RhdGEpIHtcclxuICAgICAgICAgIGxldCBjbGlwID0gbmV3IEF1ZGlvQ2xpcChhdWRpb0RhdGEpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXApe1xyXG4gICAgICAgICAgICAgIHRoaXMuYXAuYXVkaW9DbGlwID0gY2xpcDtcclxuICAgICAgICAgICAgICAgIHRoaXMucGxheVN0YXJ0QWN0aW9uLmRpc2FibGVkID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMucGxheVN0YXJ0QWN0aW9uLmRpc2FibGVkID0gdHJ1ZVxyXG4gICAgICAgICAgaWYgKHRoaXMuYXApe1xyXG4gICAgICAgICAgICAgIHRoaXMuYXAuYXVkaW9DbGlwID0gbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgdGhpcy5wbGF5U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkPXRydWVcclxuICB9XHJcblxyXG4gIHN0YXJ0U2VsZWN0aW9uRGlzYWJsZWQoKXtcclxuICAgIHJldHVybiAhKHRoaXMuX2F1ZGlvQ2xpcCAmJiB0aGlzLmFwIT1udWxsICYmICF0aGlzLnBsYXlTdGFydEFjdGlvbi5kaXNhYmxlZCAmJiB0aGlzLl9hdWRpb0NsaXAuc2VsZWN0aW9uIClcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGF1ZGlvQ2xpcChhdWRpb0NsaXA6IEF1ZGlvQ2xpcCB8IG51bGwpIHtcclxuICAgIHRoaXMuX2F1ZGlvQ2xpcD1hdWRpb0NsaXBcclxuICAgIGxldCBhdWRpb0RhdGE6QXVkaW9EYXRhSG9sZGVyfCBudWxsPW51bGw7XHJcbiAgICBsZXQgc2VsOlNlbGVjdGlvbnxudWxsPW51bGw7XHJcbiAgICBpZihhdWRpb0NsaXApe1xyXG4gICAgICBhdWRpb0RhdGE9YXVkaW9DbGlwLmF1ZGlvRGF0YUhvbGRlcjtcclxuICAgICAgc2VsPWF1ZGlvQ2xpcC5zZWxlY3Rpb247XHJcbiAgICAgIGlmKHRoaXMuX2F1ZGlvQ2xpcCkge1xyXG4gICAgICAgIHRoaXMuX2F1ZGlvQ2xpcC5hZGRTZWxlY3Rpb25PYnNlcnZlcigoYWMpID0+IHtcclxuXHJcbiAgICAgICAgICB0aGlzLnBsYXlTZWxlY3Rpb25BY3Rpb24uZGlzYWJsZWQgPSB0aGlzLnN0YXJ0U2VsZWN0aW9uRGlzYWJsZWQoKVxyXG4gICAgICAgICAgLy8gaWYodGhpcy5hcCAmJiBhYy5zZWxlY3Rpb24gJiYgdGhpcy5hdXRvcGxheVNlbGVjdGVkQ2hlY2tib3guY2hlY2tlZCl7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuYXAuc3RhcnRTZWxlY3RlZCgpXHJcbiAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmKGF1ZGlvRGF0YSkge1xyXG4gICAgICB0aGlzLnBsYXlTdGFydEFjdGlvbi5kaXNhYmxlZCA9KCF0aGlzLmFwKVxyXG4gICAgICB0aGlzLnBsYXlTZWxlY3Rpb25BY3Rpb24uZGlzYWJsZWQ9dGhpcy5zdGFydFNlbGVjdGlvbkRpc2FibGVkKClcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnBsYXlTdGFydEFjdGlvbi5kaXNhYmxlZCA9IHRydWVcclxuICAgICAgdGhpcy5wbGF5U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkPXRydWVcclxuICB9XHJcblxyXG4gICAgdGhpcy5hdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLmF1ZGlvQ2xpcD1hdWRpb0NsaXBcclxuICAgIGlmKHRoaXMuYXApIHtcclxuICAgICAgdGhpcy5hcC5hdWRpb0NsaXAgPSBhdWRpb0NsaXBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBhdWRpb0NsaXAoKTpBdWRpb0NsaXB8bnVsbHtcclxuICAgIHJldHVybiB0aGlzLl9hdWRpb0NsaXBcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBsYXlQb3NpdGlvbigpIHtcclxuXHJcbiAgICBpZiAodGhpcy5hcCAmJiB0aGlzLmFwLnBsYXlQb3NpdGlvbkZyYW1lcykge1xyXG4gICAgICB0aGlzLmF1ZGlvRGlzcGxheVNjcm9sbFBhbmUucGxheUZyYW1lUG9zaXRpb24gPSB0aGlzLmFwLnBsYXlQb3NpdGlvbkZyYW1lcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1ZGlvUGxheWVyVXBkYXRlKGU6IEF1ZGlvUGxheWVyRXZlbnQpIHtcclxuICAgIGlmIChFdmVudFR5cGUuU1RBUlRFRCA9PT0gZS50eXBlKSB7XHJcbiAgICAgIHRoaXMuc3RhdHVzID0gJ1BsYXliYWNrLi4uJztcclxuICAgICAgdGhpcy51cGRhdGVUaW1lcklkID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHRoaXMudXBkYXRlUGxheVBvc2l0aW9uKCksIDUwKTtcclxuICAgICAgdGhpcy5wbGF5U3RhcnRBY3Rpb24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnBsYXlTZWxlY3Rpb25BY3Rpb24uZGlzYWJsZWQ9dHJ1ZVxyXG4gICAgICB0aGlzLnBsYXlTdG9wQWN0aW9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKEV2ZW50VHlwZS5FTkRFRCA9PT0gZS50eXBlKSB7XHJcbiAgICAgIHRoaXMuc3RhdHVzID0gJ1JlYWR5Lic7XHJcbiAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMudXBkYXRlVGltZXJJZCk7XHJcbiAgICAgIHRoaXMucGxheVN0YXJ0QWN0aW9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucGxheVNlbGVjdGlvbkFjdGlvbi5kaXNhYmxlZD10aGlzLnN0YXJ0U2VsZWN0aW9uRGlzYWJsZWQoKVxyXG4gICAgICB0aGlzLnBsYXlTdG9wQWN0aW9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgZXJyb3IoKSB7XHJcbiAgICB0aGlzLnN0YXR1cyA9ICdFUlJPUic7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
|