speechrecorderng 3.10.13 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/speechrecorderng.mjs +204 -201
  3. package/fesm2022/speechrecorderng.mjs.map +1 -1
  4. package/lib/audio/ui/audio_canvas_layer_comp.d.ts +2 -2
  5. package/lib/spr.module.version.d.ts +1 -1
  6. package/lib/ui/canvas_layer_comp.d.ts +1 -1
  7. package/lib/ui/responsive_component.d.ts +1 -1
  8. package/package.json +13 -15
  9. package/esm2022/lib/action/action.mjs +0 -73
  10. package/esm2022/lib/audio/array_audio_buffer.mjs +0 -164
  11. package/esm2022/lib/audio/array_audio_buffer_input_stream.mjs +0 -86
  12. package/esm2022/lib/audio/array_audio_buffer_random_access_stream.mjs +0 -16
  13. package/esm2022/lib/audio/audio_data_holder.mjs +0 -264
  14. package/esm2022/lib/audio/audio_display.mjs +0 -118
  15. package/esm2022/lib/audio/audio_player.mjs +0 -238
  16. package/esm2022/lib/audio/capture/capture.mjs +0 -855
  17. package/esm2022/lib/audio/context.mjs +0 -79
  18. package/esm2022/lib/audio/dsp/level_measure.mjs +0 -517
  19. package/esm2022/lib/audio/format.mjs +0 -20
  20. package/esm2022/lib/audio/impl/wavformat.mjs +0 -7
  21. package/esm2022/lib/audio/impl/wavreader.mjs +0 -144
  22. package/esm2022/lib/audio/impl/wavwriter.mjs +0 -191
  23. package/esm2022/lib/audio/inddb_audio_buffer.mjs +0 -508
  24. package/esm2022/lib/audio/io/stream.mjs +0 -59
  25. package/esm2022/lib/audio/net_audio_buffer.mjs +0 -293
  26. package/esm2022/lib/audio/persistor.mjs +0 -81
  27. package/esm2022/lib/audio/playback/array_audio_buffer_source_node.mjs +0 -126
  28. package/esm2022/lib/audio/playback/audio_source_node.mjs +0 -18
  29. package/esm2022/lib/audio/playback/audio_source_worklet_module_loader.mjs +0 -167
  30. package/esm2022/lib/audio/playback/inddb_audio_buffer_source_node.mjs +0 -167
  31. package/esm2022/lib/audio/playback/net_audio_buffer_source_node.mjs +0 -218
  32. package/esm2022/lib/audio/playback/player.mjs +0 -402
  33. package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +0 -347
  34. package/esm2022/lib/audio/ui/audio_display_control.mjs +0 -150
  35. package/esm2022/lib/audio/ui/audio_display_scroll_pane.mjs +0 -146
  36. package/esm2022/lib/audio/ui/audiosignal.mjs +0 -533
  37. package/esm2022/lib/audio/ui/common.mjs +0 -19
  38. package/esm2022/lib/audio/ui/container.mjs +0 -414
  39. package/esm2022/lib/audio/ui/livelevel.mjs +0 -361
  40. package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +0 -11
  41. package/esm2022/lib/audio/ui/sonagram.mjs +0 -900
  42. package/esm2022/lib/db/inddb.mjs +0 -120
  43. package/esm2022/lib/dsp/utils.mjs +0 -48
  44. package/esm2022/lib/environment/environment.defaults.mjs +0 -9
  45. package/esm2022/lib/io/BinaryReader.mjs +0 -93
  46. package/esm2022/lib/io/BinaryWriter.mjs +0 -80
  47. package/esm2022/lib/io/stream.mjs +0 -259
  48. package/esm2022/lib/math/2d/geometry.mjs +0 -28
  49. package/esm2022/lib/math/complex.mjs +0 -58
  50. package/esm2022/lib/math/dft.mjs +0 -196
  51. package/esm2022/lib/media/utils.mjs +0 -14
  52. package/esm2022/lib/net/uploader.mjs +0 -367
  53. package/esm2022/lib/recorder_component.mjs +0 -65
  54. package/esm2022/lib/speechrecorder/project/project.mjs +0 -54
  55. package/esm2022/lib/speechrecorder/project/project.service.mjs +0 -64
  56. package/esm2022/lib/speechrecorder/recording.mjs +0 -124
  57. package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +0 -221
  58. package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +0 -1014
  59. package/esm2022/lib/speechrecorder/script/script.mjs +0 -114
  60. package/esm2022/lib/speechrecorder/script/script.service.mjs +0 -47
  61. package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +0 -1179
  62. package/esm2022/lib/speechrecorder/session/basicrecorder.mjs +0 -676
  63. package/esm2022/lib/speechrecorder/session/controlpanel.mjs +0 -416
  64. package/esm2022/lib/speechrecorder/session/item.mjs +0 -30
  65. package/esm2022/lib/speechrecorder/session/progress.mjs +0 -135
  66. package/esm2022/lib/speechrecorder/session/prompting.mjs +0 -639
  67. package/esm2022/lib/speechrecorder/session/recorder_combi_pane.mjs +0 -88
  68. package/esm2022/lib/speechrecorder/session/recording_file_cache.mjs +0 -195
  69. package/esm2022/lib/speechrecorder/session/recording_list.mjs +0 -188
  70. package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +0 -128
  71. package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +0 -114
  72. package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +0 -146
  73. package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +0 -424
  74. package/esm2022/lib/speechrecorder/session/recordingfile/recording-file.mjs +0 -68
  75. package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +0 -288
  76. package/esm2022/lib/speechrecorder/session/session.mjs +0 -2
  77. package/esm2022/lib/speechrecorder/session/session.service.mjs +0 -69
  78. package/esm2022/lib/speechrecorder/session/session_finished_dialog.mjs +0 -46
  79. package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +0 -1385
  80. package/esm2022/lib/speechrecorder/session/warning_bar.mjs +0 -33
  81. package/esm2022/lib/speechrecorder/spruploader.mjs +0 -22
  82. package/esm2022/lib/speechrecorder/startstopsignal/startstopsignal.mjs +0 -2
  83. package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +0 -57
  84. package/esm2022/lib/speechrecorderng.component.mjs +0 -392
  85. package/esm2022/lib/speechrecorderng.module.mjs +0 -97
  86. package/esm2022/lib/spr.config.mjs +0 -27
  87. package/esm2022/lib/spr.module.version.mjs +0 -2
  88. package/esm2022/lib/ui/canvas_layer_comp.mjs +0 -38
  89. package/esm2022/lib/ui/intersection-observer.directive.mjs +0 -32
  90. package/esm2022/lib/ui/message_dialog.mjs +0 -51
  91. package/esm2022/lib/ui/recordingitem_display.mjs +0 -253
  92. package/esm2022/lib/ui/responsive_component.mjs +0 -24
  93. package/esm2022/lib/utils/scrollIntoViewToBottom.mjs +0 -23
  94. package/esm2022/lib/utils/ua-parser.mjs +0 -190
  95. package/esm2022/lib/utils/utils.mjs +0 -132
  96. package/esm2022/lib/utils/wake_lock.mjs +0 -114
  97. package/esm2022/lib/utils/wake_lock_media.mjs +0 -2
  98. package/esm2022/public-api.mjs +0 -35
  99. package/esm2022/speechrecorderng.mjs +0 -5
@@ -1,120 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import { Observable } from "rxjs";
3
- import * as i0 from "@angular/core";
4
- export class Sync {
5
- constructor(objectStoreName, objectId) {
6
- this._objectStoreName = objectStoreName;
7
- this._objectId = objectId;
8
- }
9
- get objectStoreName() {
10
- return this._objectStoreName;
11
- }
12
- get objectId() {
13
- return this._objectId;
14
- }
15
- }
16
- export class SprDb {
17
- static { this.dbName = 'speechrecorder'; }
18
- static { this.RECORDING_FILE_CACHE_OBJECT_STORE_NAME = '_recording_file_cache'; }
19
- //public static RECORDING_FILE_CHUNKS_OBJECT_STORE_NAME='rec_file_chunks';
20
- static { this.dbVersion = 1; }
21
- constructor() {
22
- this._store = null;
23
- }
24
- static sprDbFactory() {
25
- let sprDb = new SprDb();
26
- return sprDb;
27
- }
28
- static prepare() {
29
- let obs = new Observable((subscriber) => {
30
- console.info("Prepare indexed database...");
31
- if (indexedDB) {
32
- let or;
33
- or = indexedDB.open(SprDb.dbName, SprDb.dbVersion);
34
- or.onupgradeneeded = (ev) => {
35
- let db = or.result;
36
- let tr = or.transaction;
37
- // if (!db.objectStoreNames.contains(SprDb.RECORDING_FILE_CACHE_OBJECT_STORE_NAME)) {
38
- // db.createObjectStore(SprDb.RECORDING_FILE_CACHE_OBJECT_STORE_NAME);
39
- // }
40
- // Future work towards a complete PWA which stores all clien data in indexed db and synchronizes to the server: See experimental Git branch "progressive_web_app"
41
- // if (!db.objectStoreNames.contains('_sync')) {
42
- // db.createObjectStore('_sync', {keyPath: 'id', autoIncrement:true});
43
- // }
44
- // if (!db.objectStoreNames.contains('project')) {
45
- // db.createObjectStore('project', {keyPath: 'name'});
46
- // }
47
- // if (!db.objectStoreNames.contains('session')) {
48
- // let sessStore=db.createObjectStore('session', {keyPath: 'sessionId'});
49
- // sessStore.createIndex('projectIdx', ['project'], {unique:false});
50
- // }else if(ev.oldVersion<5){
51
- //
52
- // let sessStore=tr.objectStore('session')
53
- // sessStore.createIndex('projectIdx', ['project'], {unique:false});
54
- // }
55
- //
56
- // if (!db.objectStoreNames.contains('script')) {
57
- // let scrStore=db.createObjectStore('script', {keyPath: 'scriptId'});
58
- // scrStore.createIndex('projectIdx', ['project'], {unique:false});
59
- // }
60
- //
61
- // if (!db.objectStoreNames.contains('recfile')) {
62
- // let rfStore=db.createObjectStore('recfile', {keyPath: 'uuid'});
63
- // rfStore.createIndex('sessIdIdx', ['sessionId'], {unique:false});
64
- // rfStore.createIndex('sessIdItemcodeIdx', ['sessionId','itemCode'], {unique:false});
65
- // }
66
- if (!db.objectStoreNames.contains(SprDb.RECORDING_FILE_CACHE_OBJECT_STORE_NAME)) {
67
- let rfStore = db.createObjectStore(SprDb.RECORDING_FILE_CACHE_OBJECT_STORE_NAME);
68
- }
69
- if (ev.oldVersion) {
70
- console.info("Upgraded indexed database " + SprDb.dbName + " schema from version " + ev.oldVersion + " to " + ev.newVersion);
71
- }
72
- else {
73
- console.info("Created indexed database " + SprDb.dbName + " schema version " + ev.newVersion);
74
- }
75
- };
76
- or.onsuccess = (ev) => {
77
- console.info("Opened indexed database");
78
- let db = or.result;
79
- // // iPad WEbKit workaround
80
- // does not help!
81
- // db.onclose=(ev)=>{
82
- // console.debug("DB closed...");
83
- //
84
- // }
85
- // console.debug("Close db.");
86
- // db.close();
87
- // let opaRq=indexedDB.open(SprDb.dbName, SprDb.dbVersion);
88
- // opaRq.onupgradeneeded=(ev)=>{}
89
- //
90
- // opaRq.onsuccess=(ev)=>{
91
- // console.debug("and opened again");
92
- // subscriber.next(opaRq.result);
93
- // subscriber.complete();
94
- // }
95
- // opaRq.onerror = (err) => {
96
- // console.error("Could not open indexed database: " + SprDb.dbName + ": " + err)
97
- // subscriber.error(err)
98
- // }
99
- subscriber.next(db);
100
- subscriber.complete();
101
- };
102
- or.onerror = (err) => {
103
- console.error("Could not open indexed database: " + SprDb.dbName + ": " + err);
104
- subscriber.error(err);
105
- };
106
- }
107
- else {
108
- console.info("Browser does not support indexed databases");
109
- subscriber.error();
110
- }
111
- });
112
- return obs;
113
- }
114
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SprDb, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
115
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SprDb }); }
116
- }
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SprDb, decorators: [{
118
- type: Injectable
119
- }], ctorParameters: () => [] });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvZGIvaW5kZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUdoQyxNQUFNLE9BQU8sSUFBSTtJQUtiLFlBQVksZUFBc0IsRUFBQyxRQUFzQjtRQUNyRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUMsZUFBZSxDQUFBO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUMsUUFBUSxDQUFBO0lBQzNCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDaEIsT0FBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUE7SUFDaEMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQTtJQUN6QixDQUFDO0NBQ0o7QUFHRCxNQUFNLE9BQU8sS0FBSzthQUVBLFdBQU0sR0FBQyxnQkFBZ0IsQUFBakIsQ0FBaUI7YUFFdkIsMkNBQXNDLEdBQUMsdUJBQXVCLEFBQXhCLENBQXlCO0lBQzVFLDBFQUEwRTthQUM3RCxjQUFTLEdBQUMsQ0FBQyxBQUFGLENBQUc7SUFHMUI7UUFEUSxXQUFNLEdBQWtCLElBQUksQ0FBQTtJQUVwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVk7UUFDaEIsSUFBSSxLQUFLLEdBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUVyQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBSUQsTUFBTSxDQUFDLE9BQU87UUFDVixJQUFJLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBYyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBRTdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtZQUMzQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNa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Q0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO2dCQUMxRCxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOytHQTlHUSxLQUFLO21IQUFMLEtBQUs7OzRGQUFMLEtBQUs7a0JBRGpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU3luY3tcclxuICAgIGlkPzpudW1iZXI7XHJcbiAgICBfb2JqZWN0U3RvcmVOYW1lOnN0cmluZztcclxuICAgIF9vYmplY3RJZDpzdHJpbmd8bnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKG9iamVjdFN0b3JlTmFtZTpzdHJpbmcsb2JqZWN0SWQ6c3RyaW5nfG51bWJlcil7XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmVOYW1lPW9iamVjdFN0b3JlTmFtZVxyXG4gICAgICAgIHRoaXMuX29iamVjdElkPW9iamVjdElkXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9iamVjdFN0b3JlTmFtZSgpOnN0cmluZ3tcclxuICAgICAgIHJldHVybiAgdGhpcy5fb2JqZWN0U3RvcmVOYW1lXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9iamVjdElkKCk6c3RyaW5nfG51bWJlcntcclxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0SWRcclxuICAgIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3ByRGIge1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZGJOYW1lPSdzcGVlY2hyZWNvcmRlcidcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIFJFQ09SRElOR19GSUxFX0NBQ0hFX09CSkVDVF9TVE9SRV9OQU1FPSdfcmVjb3JkaW5nX2ZpbGVfY2FjaGUnO1xyXG4gICAgIC8vcHVibGljIHN0YXRpYyBSRUNPUkRJTkdfRklMRV9DSFVOS1NfT0JKRUNUX1NUT1JFX05BTUU9J3JlY19maWxlX2NodW5rcyc7XHJcbiAgICBwdWJsaWMgc3RhdGljIGRiVmVyc2lvbj0xO1xyXG5cclxuICAgIHByaXZhdGUgX3N0b3JlOklEQkRhdGFiYXNlfG51bGw9bnVsbFxyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc3ByRGJGYWN0b3J5KCk6U3ByRGJ7XHJcbiAgICAgICBsZXQgc3ByRGI9bmV3IFNwckRiKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBzcHJEYjtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHN0YXRpYyBwcmVwYXJlKCk6T2JzZXJ2YWJsZTxJREJEYXRhYmFzZT4ge1xyXG4gICAgICAgIGxldCBvYnMgPSBuZXcgT2JzZXJ2YWJsZTxJREJEYXRhYmFzZT4oKHN1YnNjcmliZXIpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oXCJQcmVwYXJlIGluZGV4ZWQgZGF0YWJhc2UuLi5cIilcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleGVkREIpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb3I6IElEQk9wZW5EQlJlcXVlc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgb3IgPSBpbmRleGVkREIub3BlbihTcHJEYi5kYk5hbWUsIFNwckRiLmRiVmVyc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgb3Iub251cGdyYWRlbmVlZGVkID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYiA9IG9yLnJlc3VsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHI9b3IudHJhbnNhY3Rpb25cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhTcHJEYi5SRUNPUkRJTkdfRklMRV9DQUNIRV9PQkpFQ1RfU1RPUkVfTkFNRSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoU3ByRGIuUkVDT1JESU5HX0ZJTEVfQ0FDSEVfT0JKRUNUX1NUT1JFX05BTUUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGdXR1cmUgd29yayB0b3dhcmRzIGEgY29tcGxldGUgUFdBIHdoaWNoIHN0b3JlcyBhbGwgY2xpZW4gZGF0YSBpbiBpbmRleGVkIGRiIGFuZCBzeW5jaHJvbml6ZXMgdG8gdGhlIHNlcnZlcjogU2VlIGV4cGVyaW1lbnRhbCBHaXQgYnJhbmNoIFwicHJvZ3Jlc3NpdmVfd2ViX2FwcFwiXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ19zeW5jJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdfc3luYycsIHtrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OnRydWV9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Byb2plY3QnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Byb2plY3QnLCB7a2V5UGF0aDogJ25hbWUnfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzZXNzaW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCBzZXNzU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Nlc3Npb24nLCB7a2V5UGF0aDogJ3Nlc3Npb25JZCd9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHNlc3NTdG9yZS5jcmVhdGVJbmRleCgncHJvamVjdElkeCcsIFsncHJvamVjdCddLCB7dW5pcXVlOmZhbHNlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1lbHNlIGlmKGV2Lm9sZFZlcnNpb248NSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgc2Vzc1N0b3JlPXRyLm9iamVjdFN0b3JlKCdzZXNzaW9uJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgc2Vzc1N0b3JlLmNyZWF0ZUluZGV4KCdwcm9qZWN0SWR4JywgWydwcm9qZWN0J10sIHt1bmlxdWU6ZmFsc2V9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3NjcmlwdCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgc2NyU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NjcmlwdCcsIHtrZXlQYXRoOiAnc2NyaXB0SWQnfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzY3JTdG9yZS5jcmVhdGVJbmRleCgncHJvamVjdElkeCcsIFsncHJvamVjdCddLCB7dW5pcXVlOmZhbHNlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdyZWNmaWxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCByZlN0b3JlPWRiLmNyZWF0ZU9iamVjdFN0b3JlKCdyZWNmaWxlJywge2tleVBhdGg6ICd1dWlkJ30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgcmZTdG9yZS5jcmVhdGVJbmRleCgnc2Vzc0lkSWR4JywgWydzZXNzaW9uSWQnXSwge3VuaXF1ZTpmYWxzZX0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgcmZTdG9yZS5jcmVhdGVJbmRleCgnc2Vzc0lkSXRlbWNvZGVJZHgnLCBbJ3Nlc3Npb25JZCcsJ2l0ZW1Db2RlJ10sIHt1bmlxdWU6ZmFsc2V9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKFNwckRiLlJFQ09SRElOR19GSUxFX0NBQ0hFX09CSkVDVF9TVE9SRV9OQU1FKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJmU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoU3ByRGIuUkVDT1JESU5HX0ZJTEVfQ0FDSEVfT0JKRUNUX1NUT1JFX05BTUUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldi5vbGRWZXJzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oXCJVcGdyYWRlZCBpbmRleGVkIGRhdGFiYXNlIFwiICsgU3ByRGIuZGJOYW1lICsgXCIgc2NoZW1hIGZyb20gdmVyc2lvbiBcIiArIGV2Lm9sZFZlcnNpb24gKyBcIiB0byBcIiArIGV2Lm5ld1ZlcnNpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oXCJDcmVhdGVkIGluZGV4ZWQgZGF0YWJhc2UgXCIgKyBTcHJEYi5kYk5hbWUgKyBcIiBzY2hlbWEgdmVyc2lvbiBcIiArIGV2Lm5ld1ZlcnNpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgb3Iub25zdWNjZXNzID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIk9wZW5lZCBpbmRleGVkIGRhdGFiYXNlXCIpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGRiPW9yLnJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAgLy8gaVBhZCBXRWJLaXQgd29ya2Fyb3VuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gZG9lcyBub3QgaGVscCFcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAgZGIub25jbG9zZT0oZXYpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgY29uc29sZS5kZWJ1ZyhcIkRCIGNsb3NlZC4uLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZGVidWcoXCJDbG9zZSBkYi5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIGRiLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBsZXQgb3BhUnE9aW5kZXhlZERCLm9wZW4oU3ByRGIuZGJOYW1lLCBTcHJEYi5kYlZlcnNpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gb3BhUnEub251cGdyYWRlbmVlZGVkPShldik9Pnt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gb3BhUnEub25zdWNjZXNzPShldik9PntcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc29sZS5kZWJ1ZyhcImFuZCBvcGVuZWQgYWdhaW5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIHN1YnNjcmliZXIubmV4dChvcGFScS5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBvcGFScS5vbmVycm9yID0gKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IG9wZW4gaW5kZXhlZCBkYXRhYmFzZTogXCIgKyBTcHJEYi5kYk5hbWUgKyBcIjogXCIgKyBlcnIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChkYik7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBvci5vbmVycm9yID0gKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IG9wZW4gaW5kZXhlZCBkYXRhYmFzZTogXCIgKyBTcHJEYi5kYk5hbWUgKyBcIjogXCIgKyBlcnIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKFwiQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGluZGV4ZWQgZGF0YWJhc2VzXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBvYnM7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,48 +0,0 @@
1
- export class DSPUtils {
2
- static { this.OCTAVE_FACTOR = 1.0 / (Math.log(2) / Math.log(10)); }
3
- /**
4
- * Get normalized amplitude level in dB
5
- * @param linearLevel a normalized positive linear level (1.0 corresponds to 0dB)
6
- * @return level in dB
7
- */
8
- static toLevelInDB(linearLevel) {
9
- if (linearLevel < 0) {
10
- throw new RangeError('Linear level argument must be positive.');
11
- }
12
- return 10 * Math.log(linearLevel) / Math.log(10);
13
- }
14
- static toLinearLevel(dbLevel) {
15
- return Math.pow(10, (dbLevel / 10));
16
- }
17
- /**
18
- * Get normalized amplitude power level in dB
19
- * @param linearLevel a normalized positive linear level (1.0 corresponds to 0dB)
20
- * @return power level in dB
21
- */
22
- static toPowerLevelInDB(linearLevel) {
23
- if (linearLevel < 0) {
24
- throw new RangeError('Linear level argument must be positive.');
25
- }
26
- return 20 * Math.log(linearLevel) / Math.log(10);
27
- }
28
- static toPowerLinearLevel(dbLevel) {
29
- return Math.pow(10, (dbLevel / 20));
30
- }
31
- static toOctaves(fq) {
32
- return DSPUtils.OCTAVE_FACTOR * Math.log(fq) / Math.log(10);
33
- }
34
- static maxLevel(audioBuffer) {
35
- let ml = 0.0;
36
- for (let ch = 0; ch < audioBuffer.numberOfChannels; ch++) {
37
- const chArr = audioBuffer.getChannelData(ch);
38
- for (let s = 0; s < chArr.length; s++) {
39
- const l = Math.abs(chArr[s]);
40
- if (l > ml) {
41
- ml = l;
42
- }
43
- }
44
- }
45
- return ml;
46
- }
47
- }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvZHNwL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNJLE1BQU0sT0FBTyxRQUFRO2FBRUYsa0JBQWEsR0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUxRTs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFtQjtRQUN6QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksVUFBVSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBR00sTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFlO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFtQjtRQUM5QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksVUFBVSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLE9BQWU7UUFDNUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQVU7UUFDOUIsT0FBTyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUF3QjtRQUMzQyxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDYixLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDekQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztvQkFDWCxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNULENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4gICAgZXhwb3J0IGNsYXNzIERTUFV0aWxzIHtcclxuXHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgT0NUQVZFX0ZBQ1RPUjogbnVtYmVyID0gMS4wIC8gKE1hdGgubG9nKDIpIC8gTWF0aC5sb2coMTApKTtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogR2V0IG5vcm1hbGl6ZWQgYW1wbGl0dWRlIGxldmVsIGluIGRCXHJcbiAgICAgICAgICogQHBhcmFtIGxpbmVhckxldmVsIGEgbm9ybWFsaXplZCBwb3NpdGl2ZSBsaW5lYXIgbGV2ZWwgKDEuMCBjb3JyZXNwb25kcyB0byAwZEIpXHJcbiAgICAgICAgICogQHJldHVybiBsZXZlbCBpbiBkQlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgdG9MZXZlbEluREIobGluZWFyTGV2ZWw6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGlmIChsaW5lYXJMZXZlbCA8IDApIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdMaW5lYXIgbGV2ZWwgYXJndW1lbnQgbXVzdCBiZSBwb3NpdGl2ZS4nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIDEwICogTWF0aC5sb2cobGluZWFyTGV2ZWwpIC8gTWF0aC5sb2coMTApO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgdG9MaW5lYXJMZXZlbChkYkxldmVsOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5wb3coMTAsIChkYkxldmVsIC8gMTApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEdldCBub3JtYWxpemVkIGFtcGxpdHVkZSBwb3dlciBsZXZlbCBpbiBkQlxyXG4gICAgICAgICAqIEBwYXJhbSBsaW5lYXJMZXZlbCBhIG5vcm1hbGl6ZWQgcG9zaXRpdmUgbGluZWFyIGxldmVsICgxLjAgY29ycmVzcG9uZHMgdG8gMGRCKVxyXG4gICAgICAgICAqIEByZXR1cm4gcG93ZXIgbGV2ZWwgaW4gZEJcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgc3RhdGljIHRvUG93ZXJMZXZlbEluREIobGluZWFyTGV2ZWw6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGlmIChsaW5lYXJMZXZlbCA8IDApIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdMaW5lYXIgbGV2ZWwgYXJndW1lbnQgbXVzdCBiZSBwb3NpdGl2ZS4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gMjAgKiBNYXRoLmxvZyhsaW5lYXJMZXZlbCkgLyBNYXRoLmxvZygxMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwdWJsaWMgc3RhdGljIHRvUG93ZXJMaW5lYXJMZXZlbChkYkxldmVsOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5wb3coMTAsIChkYkxldmVsIC8gMjApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgdG9PY3RhdmVzKGZxOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgICAgICByZXR1cm4gRFNQVXRpbHMuT0NUQVZFX0ZBQ1RPUiAqIE1hdGgubG9nKGZxKSAvIE1hdGgubG9nKDEwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgbWF4TGV2ZWwoYXVkaW9CdWZmZXI6IEF1ZGlvQnVmZmVyKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgbGV0IG1sID0gMC4wO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgYXVkaW9CdWZmZXIubnVtYmVyT2ZDaGFubmVsczsgY2grKykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNoQXJyID0gYXVkaW9CdWZmZXIuZ2V0Q2hhbm5lbERhdGEoY2gpO1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgY2hBcnIubGVuZ3RoOyBzKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGwgPSBNYXRoLmFicyhjaEFycltzXSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobCA+IG1sKSB7XHJcbiAgICAgICAgICAgICAgICAgIG1sID0gbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG1sO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiJdfQ==
@@ -1,9 +0,0 @@
1
- export const SPEECHRECORDER_ENVIRONMENT_DEFAULTS = {
2
- production: false,
3
- apiType: 'files',
4
- apiEndPoint: 'test',
5
- apiVersion: 1,
6
- enableDownloadRecordings: true,
7
- enableUploadRecordings: false
8
- };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvZW52aXJvbm1lbnQvZW52aXJvbm1lbnQuZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUc7SUFDakQsVUFBVSxFQUFFLEtBQUs7SUFDakIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLE1BQU07SUFDbkIsVUFBVSxFQUFFLENBQUM7SUFDYix3QkFBd0IsRUFBQyxJQUFJO0lBQzdCLHNCQUFzQixFQUFFLEtBQUs7Q0FDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTUEVFQ0hSRUNPUkRFUl9FTlZJUk9OTUVOVF9ERUZBVUxUUyA9IHtcclxuICBwcm9kdWN0aW9uOiBmYWxzZSxcclxuICBhcGlUeXBlOiAnZmlsZXMnLFxyXG4gIGFwaUVuZFBvaW50OiAndGVzdCcsXHJcbiAgYXBpVmVyc2lvbjogMSxcclxuICBlbmFibGVEb3dubG9hZFJlY29yZGluZ3M6dHJ1ZSxcclxuICBlbmFibGVVcGxvYWRSZWNvcmRpbmdzOiBmYWxzZVxyXG59O1xyXG4iXX0=
@@ -1,93 +0,0 @@
1
- export class BinaryByteReader {
2
- constructor(buf) {
3
- this.buf = new Uint8Array(buf);
4
- this.sbuf = new Int8Array(buf);
5
- this._pos = 0;
6
- }
7
- get pos() {
8
- return this._pos;
9
- }
10
- set pos(pos) {
11
- this._pos = pos;
12
- }
13
- length() {
14
- return this.buf.byteLength;
15
- }
16
- eof() {
17
- return (this._pos >= this.buf.byteLength);
18
- }
19
- skip(byteCound) {
20
- this.pos += 4;
21
- }
22
- readAscii(size) {
23
- let i;
24
- let txt = '';
25
- for (i = 0; i < size; i++) {
26
- txt += String.fromCharCode(this.buf[this._pos++]);
27
- }
28
- return txt;
29
- }
30
- readInt8() {
31
- return (this.buf[this._pos++]);
32
- }
33
- readInt16BE() {
34
- const b0 = this.sbuf[this._pos++];
35
- const b1 = this.buf[this._pos++];
36
- const val = (b0 << 8) | b1;
37
- return val;
38
- }
39
- readInt16LE() {
40
- const b0 = this.buf[this._pos++];
41
- const b1 = this.sbuf[this._pos++];
42
- const val = (b1 << 8) | b0;
43
- return val;
44
- }
45
- readUint16LE() {
46
- const seg = new Uint8Array(2);
47
- let i;
48
- for (i = 0; i < 2; i++) {
49
- seg[i] = this.buf[this._pos++];
50
- }
51
- let val = 0;
52
- val |= seg[1] << 8;
53
- val |= seg[0];
54
- return val;
55
- }
56
- readInt32BE() {
57
- const seg = new Uint8Array(4);
58
- let i;
59
- for (i = 0; i < 4; i++) {
60
- seg[i] = this.buf[this._pos++];
61
- }
62
- const val = seg[0] << 24 | seg[1] << 16 | seg[2] << 8 | seg[3];
63
- return val;
64
- }
65
- readUint32LE() {
66
- // this dircet data view does not work with nodejs: all avlues are zero
67
- // var seg=new Uint8Array(this.buf,this._pos,4);
68
- // ... copy value by value
69
- const seg = new Uint8Array(4);
70
- let i;
71
- for (i = 0; i < 4; i++) {
72
- seg[i] = this.buf[this._pos++];
73
- }
74
- // console.log("len:", seg.length, " ", seg.byteLength, " ", seg[0], " ", seg[1], " ", seg[2], " ", seg[3]);
75
- let val = 0;
76
- val |= seg[3] << 24;
77
- val |= seg[2] << 16;
78
- val |= seg[1] << 8;
79
- val |= seg[0];
80
- // var val = < 24(seg[3] <) | (seg[2] << 16) | (seg[1] << 8) | seg[0];
81
- // this._pos=this._pos+4;
82
- return val;
83
- }
84
- readFloat32() {
85
- const seg = new Float32Array(1);
86
- let i;
87
- for (i = 0; i < 4; i++) {
88
- seg[i] = this.buf[this._pos++];
89
- }
90
- return seg[0];
91
- }
92
- }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5UmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2lvL0JpbmFyeVJlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSSxNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCLFlBQVksR0FBZ0I7UUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksR0FBRyxDQUFDLEdBQVc7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELEdBQUc7UUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBaUI7UUFDbEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ2xCLElBQUksQ0FBQyxDQUFDO1FBQ04sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN4QixHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFD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WixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2Qsc0VBQXNFO1FBQ3RFLHlCQUF5QjtRQUN6QixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxHQUFHLEdBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFTLENBQUM7UUFDZCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixDQUFDO0NBR0oiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuICAgIGV4cG9ydCBjbGFzcyBCaW5hcnlCeXRlUmVhZGVyIHtcclxuICAgICAgICBidWY6IFVpbnQ4QXJyYXk7XHJcbiAgICAgICAgc2J1ZjogSW50OEFycmF5O1xyXG4gICAgICAgIHByaXZhdGUgX3BvczogbnVtYmVyO1xyXG5cclxuICAgICAgICBjb25zdHJ1Y3RvcihidWY6IEFycmF5QnVmZmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcclxuICAgICAgICAgICAgdGhpcy5zYnVmID0gbmV3IEludDhBcnJheShidWYpO1xyXG4gICAgICAgICAgICB0aGlzLl9wb3MgPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IHBvcygpOiBudW1iZXIge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0IHBvcyhwb3M6IG51bWJlcikge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3MgPSBwb3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVmLmJ5dGVMZW5ndGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlb2YoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5fcG9zID49IHRoaXMuYnVmLmJ5dGVMZW5ndGgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2tpcChieXRlQ291bmQ6IG51bWJlcil7XHJcbiAgICAgICAgICAgIHRoaXMucG9zICs9IDQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWFkQXNjaWkoc2l6ZTogbnVtYmVyKTogU3RyaW5nIHtcclxuICAgICAgICAgICAgbGV0IGk7XHJcbiAgICAgICAgICAgIGxldCB0eHQgPSAnJztcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdHh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5idWZbdGhpcy5fcG9zKytdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHh0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVhZEludDgoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgcmV0dXJuICh0aGlzLmJ1Zlt0aGlzLl9wb3MrK10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVhZEludDE2QkUoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgY29uc3QgYjAgPSB0aGlzLnNidWZbdGhpcy5fcG9zKytdO1xyXG4gICAgICAgICAgICBjb25zdCBiMSA9IHRoaXMuYnVmW3RoaXMuX3BvcysrXTtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gKCBiMCA8PCA4ICkgfCBiMTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVhZEludDE2TEUoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgY29uc3QgYjAgPSB0aGlzLmJ1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICAgIGNvbnN0IGIxID0gdGhpcy5zYnVmW3RoaXMuX3BvcysrXTtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gKCBiMSA8PCA4ICkgfCBiMDtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVhZFVpbnQxNkxFKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlZyA9IG5ldyBVaW50OEFycmF5KDIpO1xyXG4gICAgICAgICAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBzZWdbaV0gPSB0aGlzLmJ1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHZhbCA9IDA7XHJcbiAgICAgICAgICAgIHZhbCB8PSBzZWdbMV0gPDwgODtcclxuICAgICAgICAgICAgdmFsIHw9IHNlZ1swXTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlYWRJbnQzMkJFKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlZyA9IG5ldyBVaW50OEFycmF5KDQpO1xyXG4gICAgICAgICAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBzZWdbaV0gPSB0aGlzLmJ1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgdmFsID0gc2VnWzBdIDw8IDI0IHwgc2VnWzFdIDw8IDE2IHwgc2VnWzJdIDw8IDggfCBzZWdbM107XHJcbiAgICAgICAgICAgIHJldHVybiB2YWw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWFkVWludDMyTEUoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgIC8vIHRoaXMgZGlyY2V0IGRhdGEgdmlldyBkb2VzIG5vdCB3b3JrIHdpdGggbm9kZWpzOiBhbGwgYXZsdWVzIGFyZSB6ZXJvXHJcbiAgICAgICAgICAgIC8vIHZhciBzZWc9bmV3IFVpbnQ4QXJyYXkodGhpcy5idWYsdGhpcy5fcG9zLDQpO1xyXG4gICAgICAgICAgICAvLyAuLi4gY29weSB2YWx1ZSBieSB2YWx1ZVxyXG4gICAgICAgICAgICBjb25zdCBzZWcgPSBuZXcgVWludDhBcnJheSg0KTtcclxuICAgICAgICAgICAgbGV0IGk6IG51bWJlcjtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgc2VnW2ldID0gdGhpcy5idWZbdGhpcy5fcG9zKytdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibGVuOlwiLCBzZWcubGVuZ3RoLCBcIiBcIiwgc2VnLmJ5dGVMZW5ndGgsIFwiIFwiLCBzZWdbMF0sIFwiIFwiLCBzZWdbMV0sIFwiIFwiLCBzZWdbMl0sIFwiIFwiLCBzZWdbM10pO1xyXG4gICAgICAgICAgICBsZXQgdmFsID0gMDtcclxuICAgICAgICAgICAgdmFsIHw9IHNlZ1szXSA8PCAyNDtcclxuICAgICAgICAgICAgdmFsIHw9IHNlZ1syXSA8PCAxNjtcclxuICAgICAgICAgICAgdmFsIHw9IHNlZ1sxXSA8PCA4O1xyXG4gICAgICAgICAgICB2YWwgfD0gc2VnWzBdO1xyXG4gICAgICAgICAgICAvLyB2YXIgdmFsID0gPCAyNChzZWdbM10gPCkgfCAoc2VnWzJdIDw8IDE2KSB8IChzZWdbMV0gPDwgOCkgfCBzZWdbMF07XHJcbiAgICAgICAgICAgIC8vIHRoaXMuX3Bvcz10aGlzLl9wb3MrNDtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlYWRGbG9hdDMyKCk6bnVtYmVye1xyXG4gICAgICAgICAgY29uc3Qgc2VnPW5ldyBGbG9hdDMyQXJyYXkoMSk7XHJcbiAgICAgICAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykge1xyXG4gICAgICAgICAgICBzZWdbaV0gPSB0aGlzLmJ1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gc2VnWzBdO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4iXX0=
@@ -1,80 +0,0 @@
1
- export class BinaryByteWriter {
2
- static { this.DEFAULT_SIZE_INC = 1024; }
3
- constructor() {
4
- const size = BinaryByteWriter.DEFAULT_SIZE_INC;
5
- this.buf = new ArrayBuffer(size);
6
- this._pos = 0;
7
- }
8
- get pos() {
9
- return this._pos;
10
- }
11
- ensureCapacity(numBytes) {
12
- while (this._pos + numBytes >= this.buf.byteLength) {
13
- // buffer increment
14
- let inc = BinaryByteWriter.DEFAULT_SIZE_INC;
15
- if (inc < numBytes) {
16
- inc = numBytes;
17
- }
18
- const newSize = this.buf.byteLength + inc;
19
- const arrOld = new Uint8Array(this.buf, 0, this._pos);
20
- const arrNew = new Uint8Array(newSize);
21
- arrNew.set(arrOld);
22
- this.buf = arrNew.buffer;
23
- }
24
- }
25
- writeUint8(val) {
26
- this.ensureCapacity(1);
27
- const valView = new DataView(this.buf, this._pos, 1);
28
- valView.setUint8(0, val);
29
- this._pos++;
30
- }
31
- writeUint16(val, le) {
32
- this.ensureCapacity(2);
33
- const valView = new DataView(this.buf, this._pos, 2);
34
- valView.setUint16(0, val, le);
35
- this._pos += 2;
36
- }
37
- writeInt16(val, le) {
38
- this.ensureCapacity(2);
39
- const valView = new DataView(this.buf, this._pos, 2);
40
- valView.setInt16(0, val, le);
41
- this._pos += 2;
42
- }
43
- writeUint32(val, le) {
44
- this.ensureCapacity(4);
45
- const valView = new DataView(this.buf, this._pos, 4);
46
- valView.setUint32(0, val, le);
47
- this._pos += 4;
48
- }
49
- writeInt32(val, le) {
50
- this.ensureCapacity(4);
51
- const valView = new DataView(this.buf, this._pos, 4);
52
- valView.setInt32(0, val, le);
53
- this._pos += 4;
54
- }
55
- writeFloat(val) {
56
- this.ensureCapacity(4);
57
- const valView = new DataView(this.buf, this._pos, 4);
58
- valView.setFloat32(0, val, true);
59
- this._pos += 4;
60
- }
61
- finish() {
62
- const finalArr = new Uint8Array(this._pos);
63
- const dv = new DataView(this.buf, 0, this._pos);
64
- for (let i = 0; i < this._pos; i++) {
65
- finalArr[i] = dv.getUint8(i);
66
- }
67
- return finalArr;
68
- }
69
- writeAscii(text) {
70
- let i;
71
- for (i = 0; i < text.length; i++) {
72
- const asciiCode = text.charCodeAt(i);
73
- if (asciiCode < 0 || asciiCode > 255) {
74
- throw new Error('Not an ASCII character at char ' + i + ' in ' + text);
75
- }
76
- this.writeUint8(asciiCode);
77
- }
78
- }
79
- }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5V3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2lvL0JpbmFyeVdyaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSSxNQUFNLE9BQU8sZ0JBQWdCO2FBQ2xCLHFCQUFnQixHQUFHLElBQUksQ0FBQztJQUkvQjtRQUNJLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCO1FBRTdCLE9BQVEsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUcsQ0FBQztZQUNyRCxtQkFBbUI7WUFDakIsSUFBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7WUFDNUMsSUFBSSxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLEdBQUcsR0FBRyxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUU1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQixJQUFJ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QztRQUNoRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25DLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLENBQUM7UUFDTixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksU0FBUyxHQUFHLENBQUMsSUFBSSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN6RSxDQUFDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4gICAgZXhwb3J0IGNsYXNzIEJpbmFyeUJ5dGVXcml0ZXIge1xyXG4gICAgICAgIHN0YXRpYyBERUZBVUxUX1NJWkVfSU5DID0gMTAyNDtcclxuICAgICAgICBidWY6IEFycmF5QnVmZmVyO1xyXG4gICAgICAgIHByaXZhdGUgX3BvczogbnVtYmVyO1xyXG5cclxuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IEJpbmFyeUJ5dGVXcml0ZXIuREVGQVVMVF9TSVpFX0lOQztcclxuICAgICAgICAgICAgdGhpcy5idWYgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcyA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgcG9zKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wb3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbnN1cmVDYXBhY2l0eShudW1CeXRlczogbnVtYmVyKSB7XHJcblxyXG4gICAgICAgICAgd2hpbGUgKCB0aGlzLl9wb3MgKyBudW1CeXRlcyA+PSB0aGlzLmJ1Zi5ieXRlTGVuZ3RoICkge1xyXG4gICAgICAgICAgICAvLyBidWZmZXIgaW5jcmVtZW50XHJcbiAgICAgICAgICAgICAgbGV0IGluYyA9IEJpbmFyeUJ5dGVXcml0ZXIuREVGQVVMVF9TSVpFX0lOQztcclxuICAgICAgICAgICAgICBpZiAoaW5jIDwgbnVtQnl0ZXMpIHtcclxuICAgICAgICAgICAgICAgICAgaW5jID0gbnVtQnl0ZXM7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1NpemUgPSB0aGlzLmJ1Zi5ieXRlTGVuZ3RoICsgaW5jO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgYXJyT2xkID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWYsIDAsIHRoaXMuX3Bvcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyck5ldyA9IG5ldyBVaW50OEFycmF5KG5ld1NpemUpO1xyXG4gICAgICAgICAgICBhcnJOZXcuc2V0KGFyck9sZCk7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmID0gYXJyTmV3LmJ1ZmZlcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHdyaXRlVWludDgodmFsOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkoMSk7XHJcbiAgICAgICAgICBjb25zdCB2YWxWaWV3ID0gbmV3IERhdGFWaWV3KHRoaXMuYnVmLCB0aGlzLl9wb3MsIDEpO1xyXG4gICAgICAgICAgdmFsVmlldy5zZXRVaW50OCgwLCB2YWwpO1xyXG4gICAgICAgICAgdGhpcy5fcG9zKys7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgd3JpdGVVaW50MTYodmFsOiBudW1iZXIsIGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSgyKTtcclxuICAgICAgICBjb25zdCB2YWxWaWV3ID0gbmV3IERhdGFWaWV3KHRoaXMuYnVmLCB0aGlzLl9wb3MsIDIpO1xyXG4gICAgICAgIHZhbFZpZXcuc2V0VWludDE2KDAsIHZhbCwgbGUpO1xyXG4gICAgICAgIHRoaXMuX3BvcyArPSAyO1xyXG5cclxuICAgICAgfVxyXG4gICAgICB3cml0ZUludDE2KHZhbDogbnVtYmVyLCBsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkoMik7XHJcbiAgICAgICAgY29uc3QgdmFsVmlldyA9IG5ldyBEYXRhVmlldyh0aGlzLmJ1ZiwgdGhpcy5fcG9zLCAyKTtcclxuICAgICAgICB2YWxWaWV3LnNldEludDE2KDAsIHZhbCwgbGUpO1xyXG4gICAgICAgIHRoaXMuX3BvcyArPSAyO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgd3JpdGVVaW50MzIodmFsOiBudW1iZXIsIGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSg0KTtcclxuICAgICAgICBjb25zdCB2YWxWaWV3ID0gbmV3IERhdGFWaWV3KHRoaXMuYnVmLCB0aGlzLl9wb3MsIDQpO1xyXG4gICAgICAgIHZhbFZpZXcuc2V0VWludDMyKDAsIHZhbCwgbGUpO1xyXG4gICAgICAgIHRoaXMuX3BvcyArPSA0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3cml0ZUludDMyKHZhbDogbnVtYmVyLCBsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkoNCk7XHJcbiAgICAgICAgY29uc3QgdmFsVmlldyA9IG5ldyBEYXRhVmlldyh0aGlzLmJ1ZiwgdGhpcy5fcG9zLCA0KTtcclxuICAgICAgICB2YWxWaWV3LnNldEludDMyKDAsIHZhbCwgbGUpO1xyXG4gICAgICAgIHRoaXMuX3BvcyArPSA0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3cml0ZUZsb2F0KHZhbDpudW1iZXIpe1xyXG4gICAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSg0KTtcclxuICAgICAgICAgIGNvbnN0IHZhbFZpZXcgPSBuZXcgRGF0YVZpZXcodGhpcy5idWYsIHRoaXMuX3BvcywgNCk7XHJcbiAgICAgICAgICB2YWxWaWV3LnNldEZsb2F0MzIoMCwgdmFsLHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5fcG9zICs9IDQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICAgZmluaXNoKCk6IFVpbnQ4QXJyYXkge1xyXG4gICAgICAgICAgY29uc3QgZmluYWxBcnIgPSBuZXcgVWludDhBcnJheSh0aGlzLl9wb3MpO1xyXG4gICAgICAgICAgY29uc3QgZHYgPSBuZXcgRGF0YVZpZXcodGhpcy5idWYsIDAsIHRoaXMuX3Bvcyk7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3BvczsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZpbmFsQXJyW2ldID0gZHYuZ2V0VWludDgoaSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZmluYWxBcnI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB3cml0ZUFzY2lpKHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgICAgICBsZXQgaTtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBjb25zdCBhc2NpaUNvZGUgPSB0ZXh0LmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgICAgaWYgKGFzY2lpQ29kZSA8IDAgfHwgYXNjaWlDb2RlID4gMjU1KSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhbiBBU0NJSSBjaGFyYWN0ZXIgYXQgY2hhciAnICsgaSArICcgaW4gJyArIHRleHQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLndyaXRlVWludDgoYXNjaWlDb2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4iXX0=