speechrecorderng 3.6.0 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/action/action.mjs +73 -0
- package/{esm2020 → esm2022}/lib/audio/array_audio_buffer.mjs +163 -163
- package/{esm2020 → esm2022}/lib/audio/array_audio_buffer_input_stream.mjs +85 -85
- package/{esm2020 → esm2022}/lib/audio/array_audio_buffer_random_access_stream.mjs +15 -15
- package/esm2022/lib/audio/audio_data_holder.mjs +264 -0
- package/{esm2020 → esm2022}/lib/audio/audio_display.mjs +93 -93
- package/{esm2020 → esm2022}/lib/audio/audio_player.mjs +213 -213
- package/esm2022/lib/audio/capture/capture.mjs +855 -0
- package/esm2022/lib/audio/context.mjs +79 -0
- package/{esm2020 → esm2022}/lib/audio/dsp/level_measure.mjs +515 -515
- package/{esm2020 → esm2022}/lib/audio/format.mjs +16 -16
- package/esm2022/lib/audio/impl/wavformat.mjs +6 -0
- package/{esm2020 → esm2022}/lib/audio/impl/wavreader.mjs +133 -133
- package/esm2022/lib/audio/impl/wavwriter.mjs +105 -0
- package/esm2022/lib/audio/inddb_audio_buffer.mjs +508 -0
- package/{esm2020 → esm2022}/lib/audio/io/stream.mjs +58 -58
- package/esm2022/lib/audio/net_audio_buffer.mjs +293 -0
- package/{esm2020 → esm2022}/lib/audio/persistor.mjs +80 -80
- package/{esm2020 → esm2022}/lib/audio/playback/array_audio_buffer_source_node.mjs +125 -125
- package/esm2022/lib/audio/playback/audio_source_node.mjs +18 -0
- package/esm2022/lib/audio/playback/audio_source_worklet_module_loader.mjs +167 -0
- package/{esm2020 → esm2022}/lib/audio/playback/inddb_audio_buffer_source_node.mjs +166 -166
- package/{esm2020 → esm2022}/lib/audio/playback/net_audio_buffer_source_node.mjs +217 -217
- package/esm2022/lib/audio/playback/player.mjs +402 -0
- package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +347 -0
- package/{esm2020 → esm2022}/lib/audio/ui/audio_display_control.mjs +65 -65
- package/{esm2020 → esm2022}/lib/audio/ui/audio_display_scroll_pane.mjs +139 -139
- package/{esm2020 → esm2022}/lib/audio/ui/audiosignal.mjs +524 -524
- package/{esm2020 → esm2022}/lib/audio/ui/common.mjs +18 -18
- package/esm2022/lib/audio/ui/container.mjs +414 -0
- package/{esm2020 → esm2022}/lib/audio/ui/livelevel.mjs +352 -352
- package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +11 -0
- package/esm2022/lib/audio/ui/sonagram.mjs +900 -0
- package/esm2022/lib/db/inddb.mjs +120 -0
- package/esm2022/lib/dsp/utils.mjs +48 -0
- package/{esm2020 → esm2022}/lib/io/BinaryReader.mjs +84 -84
- package/esm2022/lib/io/BinaryWriter.mjs +74 -0
- package/{esm2020 → esm2022}/lib/io/stream.mjs +258 -258
- package/{esm2020 → esm2022}/lib/math/2d/geometry.mjs +27 -27
- package/esm2022/lib/math/complex.mjs +58 -0
- package/{esm2020 → esm2022}/lib/math/dft.mjs +195 -195
- package/{esm2020 → esm2022}/lib/media/utils.mjs +13 -13
- package/esm2022/lib/net/uploader.mjs +367 -0
- package/{esm2020 → esm2022}/lib/recorder_component.mjs +64 -64
- package/esm2022/lib/speechrecorder/project/project.mjs +49 -0
- package/esm2022/lib/speechrecorder/project/project.service.mjs +64 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/recording.mjs +123 -123
- package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +218 -0
- package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +1014 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/script/script.mjs +114 -114
- package/{esm2020 → esm2022}/lib/speechrecorder/script/script.service.mjs +47 -47
- package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +1179 -0
- package/esm2022/lib/speechrecorder/session/basicrecorder.mjs +668 -0
- package/esm2022/lib/speechrecorder/session/controlpanel.mjs +416 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/item.mjs +29 -29
- package/{esm2020 → esm2022}/lib/speechrecorder/session/progress.mjs +69 -69
- package/{esm2020 → esm2022}/lib/speechrecorder/session/prompting.mjs +571 -571
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recorder_combi_pane.mjs +65 -65
- package/esm2022/lib/speechrecorder/session/recording_file_cache.mjs +195 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recording_list.mjs +103 -103
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +63 -63
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +51 -51
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +104 -104
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +381 -381
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file.mjs +67 -67
- package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +288 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/session.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/session.service.mjs +69 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/session_finished_dialog.mjs +29 -29
- package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +1386 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/warning_bar.mjs +28 -28
- package/{esm2020 → esm2022}/lib/speechrecorder/spruploader.mjs +22 -22
- package/{esm2020 → esm2022}/lib/speechrecorder/startstopsignal/startstopsignal.mjs +1 -1
- package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +57 -0
- package/{esm2020 → esm2022}/lib/speechrecorderng.component.mjs +388 -388
- package/{esm2020 → esm2022}/lib/speechrecorderng.module.mjs +100 -100
- package/{esm2020 → esm2022}/lib/spr.config.mjs +26 -26
- package/{esm2020 → esm2022}/lib/spr.module.version.mjs +2 -2
- package/{esm2020 → esm2022}/lib/ui/canvas_layer_comp.mjs +38 -38
- package/{esm2020 → esm2022}/lib/ui/message_dialog.mjs +30 -30
- package/esm2022/lib/ui/recordingitem_display.mjs +253 -0
- package/{esm2020 → esm2022}/lib/ui/responsive_component.mjs +24 -24
- package/{esm2020 → esm2022}/lib/utils/scrollIntoViewToBottom.mjs +23 -23
- package/esm2022/lib/utils/ua-parser.mjs +190 -0
- package/esm2022/lib/utils/utils.mjs +105 -0
- package/esm2022/lib/utils/wake_lock.mjs +114 -0
- package/{esm2020 → esm2022}/lib/utils/wake_lock_media.mjs +1 -1
- package/{esm2020 → esm2022}/public-api.mjs +33 -33
- package/{esm2020 → esm2022}/speechrecorderng.mjs +4 -4
- package/{fesm2020 → fesm2022}/speechrecorderng.mjs +16518 -16454
- package/fesm2022/speechrecorderng.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/action/action.d.ts +27 -27
- package/lib/audio/array_audio_buffer.d.ts +31 -31
- package/lib/audio/array_audio_buffer_input_stream.d.ts +14 -14
- package/lib/audio/array_audio_buffer_random_access_stream.d.ts +9 -9
- package/lib/audio/audio_data_holder.d.ts +84 -84
- package/lib/audio/audio_display.d.ts +36 -36
- package/lib/audio/audio_player.d.ts +47 -47
- package/lib/audio/capture/capture.d.ts +67 -67
- package/lib/audio/context.d.ts +6 -6
- package/lib/audio/dsp/level_measure.d.ts +60 -60
- package/lib/audio/format.d.ts +11 -11
- package/lib/audio/impl/wavformat.d.ts +5 -5
- package/lib/audio/impl/wavreader.d.ts +16 -16
- package/lib/audio/impl/wavwriter.d.ts +13 -13
- package/lib/audio/inddb_audio_buffer.d.ts +68 -68
- package/lib/audio/io/stream.d.ts +28 -28
- package/lib/audio/net_audio_buffer.d.ts +57 -57
- package/lib/audio/persistor.d.ts +29 -29
- package/lib/audio/playback/array_audio_buffer_source_node.d.ts +18 -18
- package/lib/audio/playback/audio_source_node.d.ts +10 -10
- package/lib/audio/playback/audio_source_worklet_module_loader.d.ts +4 -4
- package/lib/audio/playback/inddb_audio_buffer_source_node.d.ts +21 -21
- package/lib/audio/playback/net_audio_buffer_source_node.d.ts +27 -27
- package/lib/audio/playback/player.d.ts +65 -65
- package/lib/audio/ui/audio_canvas_layer_comp.d.ts +68 -68
- package/lib/audio/ui/audio_display_control.d.ts +25 -25
- package/lib/audio/ui/audio_display_scroll_pane.d.ts +26 -26
- package/lib/audio/ui/audiosignal.d.ts +30 -30
- package/lib/audio/ui/common.d.ts +11 -11
- package/lib/audio/ui/container.d.ts +63 -63
- package/lib/audio/ui/livelevel.d.ts +60 -60
- package/lib/audio/ui/scroll_pane_horizontal.d.ts +5 -5
- package/lib/audio/ui/sonagram.d.ts +37 -37
- package/lib/db/inddb.d.ts +21 -21
- package/lib/dsp/utils.d.ts +19 -19
- package/lib/io/BinaryReader.d.ts +18 -18
- package/lib/io/BinaryWriter.d.ts +15 -15
- package/lib/io/stream.d.ts +59 -59
- package/lib/math/2d/geometry.d.ts +18 -18
- package/lib/math/complex.d.ts +17 -17
- package/lib/math/dft.d.ts +22 -22
- package/lib/media/utils.d.ts +3 -3
- package/lib/net/uploader.d.ts +81 -81
- package/lib/recorder_component.d.ts +16 -16
- package/lib/speechrecorder/project/project.d.ts +59 -59
- package/lib/speechrecorder/project/project.service.d.ts +21 -21
- package/lib/speechrecorder/recording.d.ts +51 -51
- package/lib/speechrecorder/recordings/basic_recording.service.d.ts +27 -27
- package/lib/speechrecorder/recordings/recordings.service.d.ts +48 -48
- package/lib/speechrecorder/script/script.d.ts +80 -79
- package/lib/speechrecorder/script/script.service.d.ts +16 -16
- package/lib/speechrecorder/session/audiorecorder.d.ts +122 -122
- package/lib/speechrecorder/session/basicrecorder.d.ts +139 -139
- package/lib/speechrecorder/session/controlpanel.d.ts +109 -107
- package/lib/speechrecorder/session/item.d.ts +12 -12
- package/lib/speechrecorder/session/progress.d.ts +17 -17
- package/lib/speechrecorder/session/prompting.d.ts +121 -121
- package/lib/speechrecorder/session/recorder_combi_pane.d.ts +32 -32
- package/lib/speechrecorder/session/recording_file_cache.d.ts +33 -33
- package/lib/speechrecorder/session/recording_list.d.ts +24 -24
- package/lib/speechrecorder/session/recordingfile/recording-file-meta.component.d.ts +15 -15
- package/lib/speechrecorder/session/recordingfile/recording-file-navi.component.d.ts +20 -20
- package/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.d.ts +31 -31
- package/lib/speechrecorder/session/recordingfile/recording-file-view.component.d.ts +55 -55
- package/lib/speechrecorder/session/recordingfile/recording-file.d.ts +7 -7
- package/lib/speechrecorder/session/recordingfile/recordingfile-service.d.ts +24 -24
- package/lib/speechrecorder/session/session.d.ts +15 -15
- package/lib/speechrecorder/session/session.service.d.ts +20 -20
- package/lib/speechrecorder/session/session_finished_dialog.d.ts +10 -10
- package/lib/speechrecorder/session/sessionmanager.d.ts +129 -123
- package/lib/speechrecorder/session/warning_bar.d.ts +8 -8
- package/lib/speechrecorder/spruploader.d.ts +11 -11
- package/lib/speechrecorder/startstopsignal/startstopsignal.d.ts +10 -10
- package/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.d.ts +11 -11
- package/lib/speechrecorderng.component.d.ts +61 -61
- package/lib/speechrecorderng.module.d.ts +56 -56
- package/lib/spr.config.d.ts +17 -17
- package/lib/spr.module.version.d.ts +1 -1
- package/lib/ui/canvas_layer_comp.d.ts +13 -13
- package/lib/ui/message_dialog.d.ts +10 -10
- package/lib/ui/recordingitem_display.d.ts +84 -84
- package/lib/ui/responsive_component.d.ts +9 -9
- package/lib/utils/scrollIntoViewToBottom.d.ts +9 -9
- package/lib/utils/ua-parser.d.ts +43 -43
- package/lib/utils/utils.d.ts +19 -19
- package/lib/utils/wake_lock.d.ts +23 -23
- package/lib/utils/wake_lock_media.d.ts +1 -1
- package/package.json +17 -23
- package/public-api.d.ts +33 -33
- package/esm2020/lib/action/action.mjs +0 -73
- package/esm2020/lib/audio/audio_data_holder.mjs +0 -264
- package/esm2020/lib/audio/capture/capture.mjs +0 -855
- package/esm2020/lib/audio/context.mjs +0 -79
- package/esm2020/lib/audio/impl/wavformat.mjs +0 -6
- package/esm2020/lib/audio/impl/wavwriter.mjs +0 -105
- package/esm2020/lib/audio/inddb_audio_buffer.mjs +0 -508
- package/esm2020/lib/audio/net_audio_buffer.mjs +0 -293
- package/esm2020/lib/audio/playback/audio_source_node.mjs +0 -18
- package/esm2020/lib/audio/playback/audio_source_worklet_module_loader.mjs +0 -167
- package/esm2020/lib/audio/playback/player.mjs +0 -402
- package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +0 -347
- package/esm2020/lib/audio/ui/container.mjs +0 -414
- package/esm2020/lib/audio/ui/scroll_pane_horizontal.mjs +0 -11
- package/esm2020/lib/audio/ui/sonagram.mjs +0 -900
- package/esm2020/lib/db/inddb.mjs +0 -120
- package/esm2020/lib/dsp/utils.mjs +0 -48
- package/esm2020/lib/io/BinaryWriter.mjs +0 -74
- package/esm2020/lib/math/complex.mjs +0 -58
- package/esm2020/lib/net/uploader.mjs +0 -367
- package/esm2020/lib/speechrecorder/project/project.mjs +0 -49
- package/esm2020/lib/speechrecorder/project/project.service.mjs +0 -64
- package/esm2020/lib/speechrecorder/recordings/basic_recording.service.mjs +0 -216
- package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +0 -1014
- package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +0 -1179
- package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +0 -666
- package/esm2020/lib/speechrecorder/session/controlpanel.mjs +0 -409
- package/esm2020/lib/speechrecorder/session/recording_file_cache.mjs +0 -195
- package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +0 -288
- package/esm2020/lib/speechrecorder/session/session.service.mjs +0 -69
- package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +0 -1333
- package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +0 -57
- package/esm2020/lib/ui/recordingitem_display.mjs +0 -253
- package/esm2020/lib/utils/ua-parser.mjs +0 -190
- package/esm2020/lib/utils/utils.mjs +0 -105
- package/esm2020/lib/utils/wake_lock.mjs +0 -114
- package/fesm2015/speechrecorderng.mjs +0 -17708
- package/fesm2015/speechrecorderng.mjs.map +0 -1
- package/fesm2020/speechrecorderng.mjs.map +0 -1
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
export class UUID {
|
|
2
|
-
static generate() {
|
|
3
|
-
return UUID.s4() + UUID.s4() + '-' + UUID.s4() + '-' + UUID.s4() + '-' +
|
|
4
|
-
UUID.s4() + '-' + UUID.s4() + UUID.s4() + UUID.s4();
|
|
5
|
-
}
|
|
6
|
-
static s4() {
|
|
7
|
-
return Math.floor((1 + Math.random()) * 0x10000)
|
|
8
|
-
.toString(16)
|
|
9
|
-
.substring(1);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export class DataSize {
|
|
13
|
-
static formatBytesToBinaryUnits(bytes, decimals = 2) {
|
|
14
|
-
let binaryUnitIdx = 0;
|
|
15
|
-
let divisor = 1;
|
|
16
|
-
if (bytes > 0) {
|
|
17
|
-
const bytesLog = Math.log(bytes);
|
|
18
|
-
binaryUnitIdx = Math.floor(bytesLog / this.BINARY_UNIT_FACTOR_LOG);
|
|
19
|
-
if (binaryUnitIdx >= this.BINARY_UNITS.length) {
|
|
20
|
-
// fallback to bytes
|
|
21
|
-
binaryUnitIdx = 0;
|
|
22
|
-
}
|
|
23
|
-
divisor = Math.pow(this.BINARY_UNIT_FACTOR, binaryUnitIdx);
|
|
24
|
-
}
|
|
25
|
-
let decimalsUnitValue;
|
|
26
|
-
if (binaryUnitIdx === 0) {
|
|
27
|
-
decimalsUnitValue = bytes.toString();
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
const unitValue = bytes / divisor;
|
|
31
|
-
decimalsUnitValue = unitValue.toFixed(decimals);
|
|
32
|
-
}
|
|
33
|
-
const binaryUnitStr = decimalsUnitValue + ' ' + this.BINARY_UNITS[binaryUnitIdx];
|
|
34
|
-
return binaryUnitStr;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
DataSize.BINARY_UNITS = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB', 'RiB', 'QiB'];
|
|
38
|
-
DataSize.BINARY_UNIT_FACTOR = 1024;
|
|
39
|
-
DataSize.BINARY_UNIT_FACTOR_LOG = Math.log(DataSize.BINARY_UNIT_FACTOR);
|
|
40
|
-
export class Arrays {
|
|
41
|
-
static cloneNumberArray(numberArray) {
|
|
42
|
-
let len = numberArray.length;
|
|
43
|
-
let cloneArr = new Array(len);
|
|
44
|
-
for (let c = 0; c < numberArray.length; c++) {
|
|
45
|
-
cloneArr[c] = numberArray[c];
|
|
46
|
-
}
|
|
47
|
-
return cloneArr;
|
|
48
|
-
}
|
|
49
|
-
static swap(items, i, j) {
|
|
50
|
-
let tmp = items[i];
|
|
51
|
-
items[i] = items[j];
|
|
52
|
-
items[j] = tmp;
|
|
53
|
-
}
|
|
54
|
-
static shuffleArray(orgArray) {
|
|
55
|
-
let shuffledArray = [...orgArray];
|
|
56
|
-
for (let i = shuffledArray.length; i > 1; i--) {
|
|
57
|
-
let rnd = Math.random();
|
|
58
|
-
let rndArrIdx = Math.floor(rnd * i);
|
|
59
|
-
Arrays.swap(shuffledArray, i - 1, rndArrIdx);
|
|
60
|
-
}
|
|
61
|
-
return shuffledArray;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
export class WorkerHelper {
|
|
65
|
-
static buildWorkerBlobURL(workerFct) {
|
|
66
|
-
if (!(workerFct instanceof Function)) {
|
|
67
|
-
throw new Error('Parameter workerFct is not a function! (XSS attack?).');
|
|
68
|
-
}
|
|
69
|
-
let woFctNm = workerFct.name;
|
|
70
|
-
if (WorkerHelper.DEBUG) {
|
|
71
|
-
console.info("Worker method name: " + woFctNm);
|
|
72
|
-
}
|
|
73
|
-
let woFctStr = workerFct.toString();
|
|
74
|
-
if (WorkerHelper.DEBUG) {
|
|
75
|
-
console.info("Worker method string:");
|
|
76
|
-
console.info(woFctStr);
|
|
77
|
-
}
|
|
78
|
-
// Make sure code starts with "function()"
|
|
79
|
-
// Chrome, Firefox: "[wofctNm](){...}", Safari: "function [wofctNm](){...}"
|
|
80
|
-
// we need an anonymous function: "function() {...}"
|
|
81
|
-
let piWoFctStr = woFctStr.replace(/^function +/, '');
|
|
82
|
-
if (WorkerHelper.DEBUG) {
|
|
83
|
-
console.info("Worker platform independent function string:");
|
|
84
|
-
console.info(piWoFctStr);
|
|
85
|
-
}
|
|
86
|
-
// Convert to anonymous function
|
|
87
|
-
let anonWoFctStr = piWoFctStr.replace(woFctNm + '()', 'function()');
|
|
88
|
-
if (WorkerHelper.DEBUG) {
|
|
89
|
-
console.info("Worker anonymous function string:");
|
|
90
|
-
console.info(piWoFctStr);
|
|
91
|
-
}
|
|
92
|
-
// Self executing
|
|
93
|
-
let ws = '(' + anonWoFctStr + ')();';
|
|
94
|
-
if (WorkerHelper.DEBUG) {
|
|
95
|
-
console.info("Worker self executing anonymous function string:");
|
|
96
|
-
console.info(anonWoFctStr);
|
|
97
|
-
}
|
|
98
|
-
// Build the worker blob
|
|
99
|
-
let wb = new Blob([ws], { type: 'text/javascript' });
|
|
100
|
-
let workerBlobUrl = window.URL.createObjectURL(wb);
|
|
101
|
-
return workerBlobUrl;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
WorkerHelper.DEBUG = false;
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0UsTUFBTSxPQUFPLElBQUk7SUFFZixNQUFNLENBQUMsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRztZQUNwRSxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFUyxNQUFNLENBQUMsRUFBRTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO2FBQzdDLFFBQVEsQ0FBQyxFQUFFLENBQUM7YUFDWixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUNBO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFLbkIsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEtBQVksRUFBQyxXQUFnQixDQUFDO1FBRTVELElBQUksYUFBYSxHQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLE9BQU8sR0FBQyxDQUFDLENBQUM7UUFDZCxJQUFHLEtBQUssR0FBQyxDQUFDLEVBQUU7WUFDVixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMs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Q0FBQTtTQUMzQjtRQUNELHdCQUF3QjtRQUN4QixJQUFJLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFDLENBQUMsQ0FBQztRQUVuRCxJQUFJLGFBQWEsR0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOztBQWhETSxrQkFBSyxHQUFDLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4gIGV4cG9ydCBjbGFzcyBVVUlEIHtcclxuXHJcbiAgICBzdGF0aWMgZ2VuZXJhdGUoKTpzdHJpbmcge1xyXG4gICAgcmV0dXJuIFVVSUQuczQoKSArIFVVSUQuczQoKSArICctJyArIFVVSUQuczQoKSArICctJyArIFVVSUQuczQoKSArICctJyArXHJcbiAgICAgIFVVSUQuczQoKSArICctJyArIFVVSUQuczQoKSArIFVVSUQuczQoKSArIFVVSUQuczQoKTtcclxuICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgczQoKSB7XHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcigoMSArIE1hdGgucmFuZG9tKCkpICogMHgxMDAwMClcclxuICAgICAgLnRvU3RyaW5nKDE2KVxyXG4gICAgICAuc3Vic3RyaW5nKDEpO1xyXG4gIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydCBjbGFzcyBEYXRhU2l6ZXtcclxuICAgIHByaXZhdGUgc3RhdGljIEJJTkFSWV9VTklUUz1bJ0InLCdLaUInLCdNaUInLCdHaUInLCdUaUInLCdQaUInLCdFaUInLCdaaUInLCdZaUInLCdSaUInLCdRaUInXTtcclxuICAgIHByaXZhdGUgc3RhdGljIEJJTkFSWV9VTklUX0ZBQ1RPUjpudW1iZXI9MTAyNDtcclxuICAgIHByaXZhdGUgc3RhdGljIEJJTkFSWV9VTklUX0ZBQ1RPUl9MT0c6bnVtYmVyPU1hdGgubG9nKERhdGFTaXplLkJJTkFSWV9VTklUX0ZBQ1RPUik7XHJcblxyXG4gICAgc3RhdGljIGZvcm1hdEJ5dGVzVG9CaW5hcnlVbml0cyhieXRlczpudW1iZXIsZGVjaW1hbHM6bnVtYmVyPTIpOnN0cmluZ3tcclxuXHJcbiAgICAgIGxldCBiaW5hcnlVbml0SWR4PTA7XHJcbiAgICAgIGxldCBkaXZpc29yPTE7XHJcbiAgICAgIGlmKGJ5dGVzPjApIHtcclxuICAgICAgICBjb25zdCBieXRlc0xvZyA9IE1hdGgubG9nKGJ5dGVzKTtcclxuICAgICAgICBiaW5hcnlVbml0SWR4ID0gTWF0aC5mbG9vcihieXRlc0xvZyAvIHRoaXMuQklOQVJZX1VOSVRfRkFDVE9SX0xPRyk7XHJcbiAgICAgICAgaWYgKGJpbmFyeVVuaXRJZHggPj0gdGhpcy5CSU5BUllfVU5JVFMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyBmYWxsYmFjayB0byBieXRlc1xyXG4gICAgICAgICAgYmluYXJ5VW5pdElkeCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpdmlzb3IgPSBNYXRoLnBvdyh0aGlzLkJJTkFSWV9VTklUX0ZBQ1RPUiwgYmluYXJ5VW5pdElkeCk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGRlY2ltYWxzVW5pdFZhbHVlOnN0cmluZztcclxuICAgICAgaWYoYmluYXJ5VW5pdElkeD09PTApe1xyXG4gICAgICAgIGRlY2ltYWxzVW5pdFZhbHVlPWJ5dGVzLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICBjb25zdCB1bml0VmFsdWUgPSBieXRlcyAvIGRpdmlzb3I7XHJcbiAgICAgICAgZGVjaW1hbHNVbml0VmFsdWU9dW5pdFZhbHVlLnRvRml4ZWQoZGVjaW1hbHMpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGJpbmFyeVVuaXRTdHIgPSBkZWNpbWFsc1VuaXRWYWx1ZSArICcgJyArIHRoaXMuQklOQVJZX1VOSVRTW2JpbmFyeVVuaXRJZHhdO1xyXG5cclxuICAgICAgcmV0dXJuIGJpbmFyeVVuaXRTdHI7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGNsYXNzIEFycmF5cyB7XHJcblxyXG4gICAgc3RhdGljIGNsb25lTnVtYmVyQXJyYXkobnVtYmVyQXJyYXk6IEFycmF5PG51bWJlcj4pOiBBcnJheTxudW1iZXI+IHtcclxuICAgICAgbGV0IGxlbiA9IG51bWJlckFycmF5Lmxlbmd0aDtcclxuICAgICAgbGV0IGNsb25lQXJyID0gbmV3IEFycmF5PG51bWJlcj4obGVuKTtcclxuICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBudW1iZXJBcnJheS5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgIGNsb25lQXJyW2NdID0gbnVtYmVyQXJyYXlbY107XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNsb25lQXJyO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzd2FwPFQ+KGl0ZW1zOkFycmF5PFQ+LCBpOm51bWJlciwgajpudW1iZXIpIHtcclxuICAgICAgbGV0IHRtcCA9IGl0ZW1zW2ldO1xyXG4gICAgICBpdGVtc1tpXSA9IGl0ZW1zW2pdO1xyXG4gICAgICBpdGVtc1tqXSA9IHRtcDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2h1ZmZsZUFycmF5PFQ+KG9yZ0FycmF5OkFycmF5PFQ+KTpBcnJheTxUPntcclxuICAgICAgICBsZXQgc2h1ZmZsZWRBcnJheSA9IFsuLi5vcmdBcnJheV07XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHNodWZmbGVkQXJyYXkubGVuZ3RoOyBpID4gMTsgaS0tKSB7XHJcbiAgICAgICAgICBsZXQgcm5kPU1hdGgucmFuZG9tKCk7XHJcbiAgICAgICAgICBsZXQgcm5kQXJySWR4PU1hdGguZmxvb3Iocm5kKmkpO1xyXG4gICAgICAgICAgQXJyYXlzLnN3YXAoc2h1ZmZsZWRBcnJheSwgaSAtIDEsIHJuZEFycklkeCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzaHVmZmxlZEFycmF5O1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgY2xhc3MgV29ya2VySGVscGVyIHtcclxuXHJcbiAgICBzdGF0aWMgREVCVUc9ZmFsc2U7XHJcbiAgICBzdGF0aWMgYnVpbGRXb3JrZXJCbG9iVVJMKHdvcmtlckZjdDogRnVuY3Rpb24pOiBzdHJpbmcge1xyXG5cclxuICAgICAgaWYoISAod29ya2VyRmN0IGluc3RhbmNlb2YgRnVuY3Rpb24pKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAnUGFyYW1ldGVyIHdvcmtlckZjdCBpcyBub3QgYSBmdW5jdGlvbiEgKFhTUyBhdHRhY2s/KS4nXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCAgd29GY3RObSA9IHdvcmtlckZjdC5uYW1lXHJcbiAgICAgIGlmIChXb3JrZXJIZWxwZXIuREVCVUcpIHtcclxuICAgICAgICBjb25zb2xlLmluZm8oXCJXb3JrZXIgbWV0aG9kIG5hbWU6IFwiICsgd29GY3RObSlcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHdvRmN0U3RyID0gd29ya2VyRmN0LnRvU3RyaW5nKClcclxuICAgICAgaWYgKFdvcmtlckhlbHBlci5ERUJVRykge1xyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIldvcmtlciBtZXRob2Qgc3RyaW5nOlwiKVxyXG4gICAgICAgIGNvbnNvbGUuaW5mbyh3b0ZjdFN0cilcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIE1ha2Ugc3VyZSBjb2RlIHN0YXJ0cyB3aXRoIFwiZnVuY3Rpb24oKVwiXHJcblxyXG4gICAgICAvLyBDaHJvbWUsIEZpcmVmb3g6IFwiW3dvZmN0Tm1dKCl7Li4ufVwiLCBTYWZhcmk6IFwiZnVuY3Rpb24gW3dvZmN0Tm1dKCl7Li4ufVwiXHJcbiAgICAgIC8vIHdlIG5lZWQgYW4gYW5vbnltb3VzIGZ1bmN0aW9uOiBcImZ1bmN0aW9uKCkgey4uLn1cIlxyXG4gICAgICBsZXQgcGlXb0ZjdFN0ciA9IHdvRmN0U3RyLnJlcGxhY2UoL15mdW5jdGlvbiArLywgJycpO1xyXG5cclxuICAgICAgaWYoV29ya2VySGVscGVyLkRFQlVHKXtcclxuICAgICAgICBjb25zb2xlLmluZm8oXCJXb3JrZXIgcGxhdGZvcm0gaW5kZXBlbmRlbnQgZnVuY3Rpb24gc3RyaW5nOlwiKVxyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhwaVdvRmN0U3RyKVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IHRvIGFub255bW91cyBmdW5jdGlvblxyXG4gICAgICBsZXQgYW5vbldvRmN0U3RyID0gcGlXb0ZjdFN0ci5yZXBsYWNlKHdvRmN0Tm0gKyAnKCknLCAnZnVuY3Rpb24oKScpXHJcbiAgICAgIGlmKFdvcmtlckhlbHBlci5ERUJVRyl7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKFwiV29ya2VyIGFub255bW91cyBmdW5jdGlvbiBzdHJpbmc6XCIpXHJcbiAgICAgICAgY29uc29sZS5pbmZvKHBpV29GY3RTdHIpXHJcbiAgICAgIH1cclxuICAgICAgLy8gU2VsZiBleGVjdXRpbmdcclxuICAgICAgbGV0IHdzID0gJygnICsgYW5vbldvRmN0U3RyICsgJykoKTsnXHJcbiAgICAgIGlmKFdvcmtlckhlbHBlci5ERUJVRyl7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKFwiV29ya2VyIHNlbGYgZXhlY3V0aW5nIGFub255bW91cyBmdW5jdGlvbiBzdHJpbmc6XCIpXHJcbiAgICAgICAgY29uc29sZS5pbmZvKGFub25Xb0ZjdFN0cilcclxuICAgICAgfVxyXG4gICAgICAvLyBCdWlsZCB0aGUgd29ya2VyIGJsb2JcclxuICAgICAgbGV0IHdiID0gbmV3IEJsb2IoW3dzXSwge3R5cGU6ICd0ZXh0L2phdmFzY3JpcHQnfSk7XHJcblxyXG4gICAgICBsZXQgd29ya2VyQmxvYlVybD13aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCh3Yik7XHJcbiAgICAgIHJldHVybiB3b3JrZXJCbG9iVXJsO1xyXG4gICAgfVxyXG4gIH1cclxuIl19
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject } from "rxjs";
|
|
2
|
-
import { WAKE_LOCK_VIDEO_MP4_URI } from "./wake_lock_media";
|
|
3
|
-
import { Browser, UserAgentBuilder } from "./ua-parser";
|
|
4
|
-
/**
|
|
5
|
-
* Utility to prevent devices from screen lock.
|
|
6
|
-
* If supported uses the HTML5 wake lock API, if not, plays an invisible video.
|
|
7
|
-
*
|
|
8
|
-
* Note: I've used the GitHub project richtr/nosleep.js for that. The worked in most cases, but failed sometimes on an
|
|
9
|
-
* Android smartphone.
|
|
10
|
-
*/
|
|
11
|
-
export class WakeLockManager {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.wakeLockApiSupported = false;
|
|
14
|
-
this.wakeLockRetryCount = 0;
|
|
15
|
-
this.randomSeekRequired = false;
|
|
16
|
-
this._behaviorSubject = new BehaviorSubject(false);
|
|
17
|
-
this.VIDEO_LENGTH = 10;
|
|
18
|
-
this.wakeLockApiSupported = ('wakeLock' in navigator);
|
|
19
|
-
console.debug("Wake lock API supported: " + this.wakeLockApiSupported);
|
|
20
|
-
this.userAgent = UserAgentBuilder.userAgent();
|
|
21
|
-
this.randomSeekRequired = (this.userAgent?.detectedBrowser === Browser.Safari);
|
|
22
|
-
}
|
|
23
|
-
get behaviorSubject() {
|
|
24
|
-
return this._behaviorSubject;
|
|
25
|
-
}
|
|
26
|
-
enableWakeLock() {
|
|
27
|
-
if (this.wakeLockApiSupported) {
|
|
28
|
-
//@ts-ignore
|
|
29
|
-
navigator.wakeLock.request('screen').then((wls) => {
|
|
30
|
-
this.wakeLockSentinel = wls;
|
|
31
|
-
this.wakeLockRetryCount = 0;
|
|
32
|
-
console.debug('Wake lock screen request successful.');
|
|
33
|
-
this._behaviorSubject.next(true);
|
|
34
|
-
}).catch((reason) => {
|
|
35
|
-
console.error('Wakelock failed: ' + reason);
|
|
36
|
-
this._behaviorSubject.error(reason);
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
if (!this.mp4VideoElement) {
|
|
41
|
-
this.mp4VideoElement = document.createElement('video');
|
|
42
|
-
this.mp4VideoElement.loop = !this.randomSeekRequired;
|
|
43
|
-
this.mp4VideoElement.playsInline = true;
|
|
44
|
-
this.mp4VideoElement.src = WAKE_LOCK_VIDEO_MP4_URI;
|
|
45
|
-
this.mp4VideoElement.addEventListener('play', (ev) => {
|
|
46
|
-
console.debug('Wake lock video playing...');
|
|
47
|
-
this._behaviorSubject.next(true);
|
|
48
|
-
});
|
|
49
|
-
this.mp4VideoElement.addEventListener('ended', (ev) => {
|
|
50
|
-
console.debug('Wake lock video ended.');
|
|
51
|
-
this._behaviorSubject.next(false);
|
|
52
|
-
});
|
|
53
|
-
this.mp4VideoElement.addEventListener('pause', (ev) => {
|
|
54
|
-
console.debug('Wake lock video pause.');
|
|
55
|
-
this._behaviorSubject.next(false);
|
|
56
|
-
});
|
|
57
|
-
if (this.randomSeekRequired) {
|
|
58
|
-
this.mp4VideoElement.addEventListener('timeupdate', (ev) => {
|
|
59
|
-
if (this.randomSeekRequired && this.mp4VideoElement) {
|
|
60
|
-
let thirdVideoLen = this.VIDEO_LENGTH / 3;
|
|
61
|
-
if (this.mp4VideoElement.currentTime > thirdVideoLen * 2) {
|
|
62
|
-
let newPos = (thirdVideoLen * Math.random());
|
|
63
|
-
//console.debug('Wake lock random seek to '+newPos+'s');
|
|
64
|
-
this.mp4VideoElement.currentTime = newPos;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
this.mp4VideoElement.addEventListener('error', (ev) => {
|
|
70
|
-
console.debug('Wake lock video error: ' + ev.message);
|
|
71
|
-
this._behaviorSubject.error(ev.error);
|
|
72
|
-
});
|
|
73
|
-
console.debug('Added listeners to wake lock video.');
|
|
74
|
-
}
|
|
75
|
-
this.startWakeLockVideo();
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
startWakeLockVideo() {
|
|
79
|
-
if (this.mp4VideoElement) {
|
|
80
|
-
this.mp4VideoElement.play().then(() => {
|
|
81
|
-
this.wakeLockRetryCount = 0;
|
|
82
|
-
}).catch((err) => {
|
|
83
|
-
console.debug('Failed starting wake lock video!');
|
|
84
|
-
if (this.wakeLockRetryCount < 1) {
|
|
85
|
-
window.setTimeout(() => {
|
|
86
|
-
this.wakeLockRetryCount++;
|
|
87
|
-
console.debug('Retry wake lock video #' + this.wakeLockRetryCount);
|
|
88
|
-
this.startWakeLockVideo();
|
|
89
|
-
}, 4000);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
console.debug('Giving up to try to start wake lock video.');
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
disableWakeLock() {
|
|
98
|
-
if (this.wakeLockApiSupported) {
|
|
99
|
-
this.wakeLockSentinel.release().then(() => {
|
|
100
|
-
console.debug('Wake lock release successful.');
|
|
101
|
-
this._behaviorSubject.next(false);
|
|
102
|
-
}).catch((reason) => {
|
|
103
|
-
console.error('Wakelock release failed: ' + reason);
|
|
104
|
-
this._behaviorSubject.error(reason);
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
if (this.mp4VideoElement) {
|
|
109
|
-
this.mp4VideoElement.pause();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FrZV9sb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3V0aWxzL3dha2VfbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBQyxPQUFPLEVBQWEsZ0JBQWdCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFakU7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFpQjFCO1FBVFEseUJBQW9CLEdBQUMsS0FBSyxDQUFDO1FBQzNCLHVCQUFrQixHQUFDLENBQUMsQ0FBQztRQUVyQix1QkFBa0IsR0FBQyxLQUFLLENBQUM7UUFFekIscUJBQWdCLEdBQTBCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXJFLGlCQUFZLEdBQUMsRUFBRSxDQUFDO1FBRy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBQyxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixHQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxTQUFTLEdBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLGtCQUFrQixHQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLEtBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFyQkQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFxQkQsY0FBYztRQUNWLElBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzFCLFlBQVk7WUFDWixTQUFTLENBQUMs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QUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBVSxFQUFDLEVBQUU7Z0JBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEdBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQ2pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFLO1lBQ0osSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQzlCO1NBQ0Y7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtXQUtFX0xPQ0tfVklERU9fTVA0X1VSSX0gZnJvbSBcIi4vd2FrZV9sb2NrX21lZGlhXCI7XHJcbmltcG9ydCB7QnJvd3NlciwgVXNlckFnZW50LCBVc2VyQWdlbnRCdWlsZGVyfSBmcm9tIFwiLi91YS1wYXJzZXJcIjtcclxuXHJcbi8qKlxyXG4gKiBVdGlsaXR5IHRvIHByZXZlbnQgZGV2aWNlcyBmcm9tIHNjcmVlbiBsb2NrLlxyXG4gKiBJZiBzdXBwb3J0ZWQgdXNlcyB0aGUgSFRNTDUgd2FrZSBsb2NrIEFQSSwgaWYgbm90LCBwbGF5cyBhbiBpbnZpc2libGUgdmlkZW8uXHJcbiAqXHJcbiAqIE5vdGU6IEkndmUgdXNlZCB0aGUgR2l0SHViIHByb2plY3QgcmljaHRyL25vc2xlZXAuanMgZm9yIHRoYXQuIFRoZSB3b3JrZWQgaW4gbW9zdCBjYXNlcywgYnV0IGZhaWxlZCBzb21ldGltZXMgb24gYW5cclxuICogICBBbmRyb2lkIHNtYXJ0cGhvbmUuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgV2FrZUxvY2tNYW5hZ2VyIHtcclxuICBnZXQgYmVoYXZpb3JTdWJqZWN0KCk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYmVoYXZpb3JTdWJqZWN0O1xyXG4gIH1cclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIHByaXZhdGUgd2FrZUxvY2tTZW50aW5lbDpXYWtlTG9ja1NlbnRpbmVsO1xyXG4gIHByaXZhdGUgbXA0VmlkZW9FbGVtZW50PzpIVE1MVmlkZW9FbGVtZW50O1xyXG4gIHByaXZhdGUgd2FrZUxvY2tBcGlTdXBwb3J0ZWQ9ZmFsc2U7XHJcbiAgcHJpdmF0ZSB3YWtlTG9ja1JldHJ5Q291bnQ9MDtcclxuICBwcml2YXRlIHVzZXJBZ2VudD86VXNlckFnZW50O1xyXG4gIHByaXZhdGUgcmFuZG9tU2Vla1JlcXVpcmVkPWZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9iZWhhdmlvclN1YmplY3Q6QmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+PW5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IFZJREVPX0xFTkdUSD0xMDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLndha2VMb2NrQXBpU3VwcG9ydGVkPSgnd2FrZUxvY2snIGluIG5hdmlnYXRvcik7XHJcbiAgICBjb25zb2xlLmRlYnVnKFwiV2FrZSBsb2NrIEFQSSBzdXBwb3J0ZWQ6IFwiK3RoaXMud2FrZUxvY2tBcGlTdXBwb3J0ZWQpO1xyXG4gICAgdGhpcy51c2VyQWdlbnQ9VXNlckFnZW50QnVpbGRlci51c2VyQWdlbnQoKTtcclxuICAgIHRoaXMucmFuZG9tU2Vla1JlcXVpcmVkPSh0aGlzLnVzZXJBZ2VudD8uZGV0ZWN0ZWRCcm93c2VyPT09QnJvd3Nlci5TYWZhcmkpO1xyXG4gIH1cclxuXHJcbiAgZW5hYmxlV2FrZUxvY2soKXtcclxuICAgICAgaWYodGhpcy53YWtlTG9ja0FwaVN1cHBvcnRlZCkge1xyXG4gICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICBuYXZpZ2F0b3Iud2FrZUxvY2sucmVxdWVzdCgnc2NyZWVuJykudGhlbigod2xzKT0+e1xyXG4gICAgICAgICAgICB0aGlzLndha2VMb2NrU2VudGluZWw9d2xzO1xyXG4gICAgICAgICAgICB0aGlzLndha2VMb2NrUmV0cnlDb3VudD0wO1xyXG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdXYWtlIGxvY2sgc2NyZWVuIHJlcXVlc3Qgc3VjY2Vzc2Z1bC4nKTtcclxuICAgICAgICAgICAgdGhpcy5fYmVoYXZpb3JTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB9KS5jYXRjaCgocmVhc29uOmFueSk9PntcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignV2FrZWxvY2sgZmFpbGVkOiAnK3JlYXNvbilcclxuICAgICAgICAgICAgdGhpcy5fYmVoYXZpb3JTdWJqZWN0LmVycm9yKHJlYXNvbik7XHJcblxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm1wNFZpZGVvRWxlbWVudCkge1xyXG4gICAgICAgICAgdGhpcy5tcDRWaWRlb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycpO1xyXG5cclxuICAgICAgICAgIHRoaXMubXA0VmlkZW9FbGVtZW50Lmxvb3AgPSAhdGhpcy5yYW5kb21TZWVrUmVxdWlyZWQ7XHJcbiAgICAgICAgICB0aGlzLm1wNFZpZGVvRWxlbWVudC5wbGF5c0lubGluZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5tcDRWaWRlb0VsZW1lbnQuc3JjPVdBS0VfTE9DS19WSURFT19NUDRfVVJJO1xyXG5cclxuICAgICAgICAgIHRoaXMubXA0VmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCAoZXYpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnV2FrZSBsb2NrIHZpZGVvIHBsYXlpbmcuLi4nKTtcclxuICAgICAgICAgICAgdGhpcy5fYmVoYXZpb3JTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5tcDRWaWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCAoZXYpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnV2FrZSBsb2NrIHZpZGVvIGVuZGVkLicpO1xyXG4gICAgICAgICAgICB0aGlzLl9iZWhhdmlvclN1YmplY3QubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5tcDRWaWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCAoZXYpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1dha2UgbG9jayB2aWRlbyBwYXVzZS4nKTtcclxuICAgICAgICAgICAgdGhpcy5fYmVoYXZpb3JTdWJqZWN0Lm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGlmKHRoaXMucmFuZG9tU2Vla1JlcXVpcmVkKXtcclxuICAgICAgICAgICAgdGhpcy5tcDRWaWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIChldikgPT4ge1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMucmFuZG9tU2Vla1JlcXVpcmVkICYmIHRoaXMubXA0VmlkZW9FbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGhpcmRWaWRlb0xlbj10aGlzLlZJREVPX0xFTkdUSC8zO1xyXG4gICAgICAgICAgICAgICBpZiAodGhpcy5tcDRWaWRlb0VsZW1lbnQuY3VycmVudFRpbWUgPiB0aGlyZFZpZGVvTGVuKjIpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3UG9zPSh0aGlyZFZpZGVvTGVuKk1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnV2FrZSBsb2NrIHJhbmRvbSBzZWVrIHRvICcrbmV3UG9zKydzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tcDRWaWRlb0VsZW1lbnQuY3VycmVudFRpbWU9bmV3UG9zO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubXA0VmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKGV2KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1dha2UgbG9jayB2aWRlbyBlcnJvcjogJytldi5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdGhpcy5fYmVoYXZpb3JTdWJqZWN0LmVycm9yKGV2LmVycm9yKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKCdBZGRlZCBsaXN0ZW5lcnMgdG8gd2FrZSBsb2NrIHZpZGVvLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXJ0V2FrZUxvY2tWaWRlbygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIHByaXZhdGUgc3RhcnRXYWtlTG9ja1ZpZGVvKCl7XHJcbiAgICBpZih0aGlzLm1wNFZpZGVvRWxlbWVudCl7XHJcbiAgICAgIHRoaXMubXA0VmlkZW9FbGVtZW50LnBsYXkoKS50aGVuKCgpPT57XHJcbiAgICAgICAgdGhpcy53YWtlTG9ja1JldHJ5Q291bnQ9MDtcclxuICAgICAgfSkuY2F0Y2goKGVycik9PiB7XHJcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnRmFpbGVkIHN0YXJ0aW5nIHdha2UgbG9jayB2aWRlbyEnKTtcclxuICAgICAgICBpZiAodGhpcy53YWtlTG9ja1JldHJ5Q291bnQgPCAxKSB7XHJcbiAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMud2FrZUxvY2tSZXRyeUNvdW50Kys7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1JldHJ5IHdha2UgbG9jayB2aWRlbyAjJyArIHRoaXMud2FrZUxvY2tSZXRyeUNvdW50KTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFdha2VMb2NrVmlkZW8oKTtcclxuICAgICAgICAgIH0sIDQwMDApXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKCdHaXZpbmcgdXAgdG8gdHJ5IHRvIHN0YXJ0IHdha2UgbG9jayB2aWRlby4nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGRpc2FibGVXYWtlTG9jaygpe1xyXG4gICAgaWYodGhpcy53YWtlTG9ja0FwaVN1cHBvcnRlZCkge1xyXG4gICAgICAgIHRoaXMud2FrZUxvY2tTZW50aW5lbC5yZWxlYXNlKCkudGhlbigoKT0+e1xyXG4gICAgICAgICAgY29uc29sZS5kZWJ1ZygnV2FrZSBsb2NrIHJlbGVhc2Ugc3VjY2Vzc2Z1bC4nKTtcclxuICAgICAgICAgIHRoaXMuX2JlaGF2aW9yU3ViamVjdC5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9KS5jYXRjaCgocmVhc29uOmFueSk9PntcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dha2Vsb2NrIHJlbGVhc2UgZmFpbGVkOiAnK3JlYXNvbilcclxuICAgICAgICAgIHRoaXMuX2JlaGF2aW9yU3ViamVjdC5lcnJvcihyZWFzb24pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfWVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5tcDRWaWRlb0VsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLm1wNFZpZGVvRWxlbWVudC5wYXVzZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|