@neurodevs/node-lsl 17.1.0 → 18.0.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 (178) hide show
  1. package/.claude/settings.local.json +10 -0
  2. package/.regressionproof.json +7 -0
  3. package/.vscode/launch.json +3 -2
  4. package/README.md +9 -35
  5. package/build/.spruce/settings.json +5 -1
  6. package/build/__tests__/AbstractPackageTest.d.ts +4 -4
  7. package/build/__tests__/AbstractPackageTest.js +9 -11
  8. package/build/__tests__/AbstractPackageTest.js.map +1 -1
  9. package/build/__tests__/impl/LslBackpressureMonitor.test.d.ts +7 -0
  10. package/build/__tests__/impl/LslBackpressureMonitor.test.js +26 -0
  11. package/build/__tests__/impl/LslBackpressureMonitor.test.js.map +1 -0
  12. package/build/__tests__/impl/LslEventMarkerEmitter.test.d.ts +34 -0
  13. package/build/__tests__/impl/LslEventMarkerEmitter.test.js +243 -0
  14. package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +1 -0
  15. package/build/__tests__/impl/LslStreamInfo.test.d.ts +0 -3
  16. package/build/__tests__/impl/LslStreamInfo.test.js +2 -27
  17. package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
  18. package/build/__tests__/impl/LslStreamInlet.test.d.ts +22 -8
  19. package/build/__tests__/impl/LslStreamInlet.test.js +240 -66
  20. package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
  21. package/build/__tests__/impl/LslStreamOutlet.test.d.ts +3 -7
  22. package/build/__tests__/impl/LslStreamOutlet.test.js +36 -46
  23. package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
  24. package/build/__tests__/impl/LslWebSocketBridge.test.js +16 -17
  25. package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
  26. package/build/assertions.d.ts +1 -1
  27. package/build/assertions.js.map +1 -1
  28. package/build/impl/LslBackpressureMonitor.d.ts +8 -0
  29. package/build/impl/LslBackpressureMonitor.js +8 -0
  30. package/build/impl/LslBackpressureMonitor.js.map +1 -0
  31. package/build/impl/LslEventMarkerEmitter.d.ts +35 -0
  32. package/build/impl/LslEventMarkerEmitter.js +86 -0
  33. package/build/impl/LslEventMarkerEmitter.js.map +1 -0
  34. package/build/impl/LslStreamInfo.d.ts +4 -8
  35. package/build/impl/LslStreamInfo.js +8 -21
  36. package/build/impl/LslStreamInfo.js.map +1 -1
  37. package/build/impl/LslStreamInlet.d.ts +31 -47
  38. package/build/impl/LslStreamInlet.js +82 -143
  39. package/build/impl/LslStreamInlet.js.map +1 -1
  40. package/build/impl/LslStreamOutlet.d.ts +15 -18
  41. package/build/impl/LslStreamOutlet.js +39 -47
  42. package/build/impl/LslStreamOutlet.js.map +1 -1
  43. package/build/impl/LslWebSocketBridge.d.ts +4 -5
  44. package/build/impl/LslWebSocketBridge.js +8 -8
  45. package/build/impl/LslWebSocketBridge.js.map +1 -1
  46. package/build/impl/workers/inlet/LslStreamInlet.worker.d.ts +22 -0
  47. package/build/impl/workers/inlet/LslStreamInlet.worker.js +42 -0
  48. package/build/impl/workers/inlet/LslStreamInlet.worker.js.map +1 -0
  49. package/build/impl/workers/inlet/StreamInletWorker.d.ts +73 -0
  50. package/build/impl/workers/inlet/StreamInletWorker.js +253 -0
  51. package/build/impl/workers/inlet/StreamInletWorker.js.map +1 -0
  52. package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +32 -0
  53. package/build/impl/workers/outlet/LslStreamOutlet.worker.js +82 -0
  54. package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +1 -0
  55. package/build/index.d.ts +12 -14
  56. package/build/index.js +14 -16
  57. package/build/index.js.map +1 -1
  58. package/build/scripts/finalizeHandles.d.ts +2 -0
  59. package/build/scripts/finalizeHandles.js +48 -0
  60. package/build/scripts/finalizeHandles.js.map +1 -0
  61. package/build/scripts/runLslEventMarkerEmitter.js +11 -0
  62. package/build/scripts/runLslEventMarkerEmitter.js.map +1 -0
  63. package/build/scripts/runOutletToInlet.js +7 -6
  64. package/build/scripts/runOutletToInlet.js.map +1 -1
  65. package/build/scripts/testDestroyOutlet.d.ts +1 -0
  66. package/build/scripts/testDestroyOutlet.js +4 -0
  67. package/build/scripts/testDestroyOutlet.js.map +1 -0
  68. package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.d.ts +6 -0
  69. package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.js +10 -0
  70. package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.js.map +1 -0
  71. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.d.ts +17 -0
  72. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js +30 -0
  73. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js.map +1 -0
  74. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.d.ts +10 -0
  75. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js +23 -0
  76. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js.map +1 -0
  77. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.d.ts +9 -0
  78. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js +19 -0
  79. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js.map +1 -0
  80. package/build/testDoubles/StreamInfo/FakeStreamInfo.d.ts +3 -3
  81. package/build/testDoubles/StreamInfo/FakeStreamInfo.js +3 -3
  82. package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +1 -1
  83. package/build/testDoubles/StreamInlet/FakeStreamInlet.d.ts +8 -10
  84. package/build/testDoubles/StreamInlet/FakeStreamInlet.js +6 -7
  85. package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +1 -1
  86. package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +2 -5
  87. package/build/testDoubles/StreamInlet/SpyStreamInlet.js +2 -8
  88. package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -1
  89. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.d.ts +7 -9
  90. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +5 -8
  91. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -1
  92. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +1 -1
  93. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js +1 -1
  94. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +1 -1
  95. package/build/testDoubles/WorkerThreads/FakeWorker.d.ts +27 -0
  96. package/build/testDoubles/WorkerThreads/FakeWorker.js +67 -0
  97. package/build/testDoubles/WorkerThreads/FakeWorker.js.map +1 -0
  98. package/build/validations.js +0 -2
  99. package/build/validations.js.map +1 -1
  100. package/package.json +24 -8
  101. package/src/.spruce/settings.json +5 -1
  102. package/src/__tests__/AbstractPackageTest.ts +13 -15
  103. package/src/__tests__/impl/LslBackpressureMonitor.test.ts +25 -0
  104. package/src/__tests__/impl/LslEventMarkerEmitter.test.ts +322 -0
  105. package/src/__tests__/impl/LslStreamInfo.test.ts +3 -40
  106. package/src/__tests__/impl/LslStreamInlet.test.ts +366 -95
  107. package/src/__tests__/impl/LslStreamOutlet.test.ts +61 -69
  108. package/src/__tests__/impl/LslWebSocketBridge.test.ts +18 -18
  109. package/src/assertions.ts +2 -1
  110. package/src/impl/LslBackpressureMonitor.ts +13 -0
  111. package/src/impl/LslEventMarkerEmitter.ts +133 -0
  112. package/src/impl/LslStreamInfo.ts +17 -29
  113. package/src/impl/LslStreamInlet.ts +105 -208
  114. package/src/impl/LslStreamOutlet.ts +54 -78
  115. package/src/impl/LslWebSocketBridge.ts +12 -12
  116. package/src/impl/workers/inlet/LslStreamInlet.worker.ts +74 -0
  117. package/src/impl/workers/inlet/StreamInletWorker.ts +348 -0
  118. package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +144 -0
  119. package/src/index.ts +14 -17
  120. package/src/scripts/finalizeHandles.ts +63 -0
  121. package/src/scripts/runLslEventMarkerEmitter.ts +15 -0
  122. package/src/scripts/runOutletToInlet.ts +10 -8
  123. package/src/scripts/testDestroyOutlet.ts +5 -0
  124. package/src/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.ts +13 -0
  125. package/src/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.ts +46 -0
  126. package/src/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.ts +31 -0
  127. package/src/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.ts +29 -0
  128. package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +4 -4
  129. package/src/testDoubles/StreamInlet/FakeStreamInlet.ts +11 -17
  130. package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +3 -16
  131. package/src/testDoubles/StreamOutlet/FakeStreamOutlet.ts +12 -15
  132. package/src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts +1 -1
  133. package/src/testDoubles/WorkerThreads/FakeWorker.ts +99 -0
  134. package/src/validations.ts +0 -2
  135. package/build/__tests__/impl/LiblslAdapter.test.d.ts +0 -79
  136. package/build/__tests__/impl/LiblslAdapter.test.js +0 -688
  137. package/build/__tests__/impl/LiblslAdapter.test.js.map +0 -1
  138. package/build/__tests__/impl/LslEventMarkerOutlet.test.d.ts +0 -21
  139. package/build/__tests__/impl/LslEventMarkerOutlet.test.js +0 -160
  140. package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +0 -1
  141. package/build/handleError.d.ts +0 -8
  142. package/build/handleError.js +0 -25
  143. package/build/handleError.js.map +0 -1
  144. package/build/impl/LiblslAdapter.d.ts +0 -159
  145. package/build/impl/LiblslAdapter.js +0 -317
  146. package/build/impl/LiblslAdapter.js.map +0 -1
  147. package/build/impl/LslEventMarkerOutlet.d.ts +0 -28
  148. package/build/impl/LslEventMarkerOutlet.js +0 -63
  149. package/build/impl/LslEventMarkerOutlet.js.map +0 -1
  150. package/build/scripts/runLslEventMarkerOutlet.js +0 -18
  151. package/build/scripts/runLslEventMarkerOutlet.js.map +0 -1
  152. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.d.ts +0 -13
  153. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js +0 -26
  154. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +0 -1
  155. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.d.ts +0 -17
  156. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js +0 -46
  157. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js.map +0 -1
  158. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +0 -9
  159. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js +0 -19
  160. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +0 -1
  161. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts +0 -9
  162. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js +0 -19
  163. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +0 -1
  164. package/build/testDoubles/Liblsl/FakeLiblsl.d.ts +0 -50
  165. package/build/testDoubles/Liblsl/FakeLiblsl.js +0 -126
  166. package/build/testDoubles/Liblsl/FakeLiblsl.js.map +0 -1
  167. package/src/__tests__/impl/LiblslAdapter.test.ts +0 -817
  168. package/src/__tests__/impl/LslEventMarkerOutlet.test.ts +0 -195
  169. package/src/handleError.ts +0 -24
  170. package/src/impl/LiblslAdapter.ts +0 -548
  171. package/src/impl/LslEventMarkerOutlet.ts +0 -97
  172. package/src/scripts/runLslEventMarkerOutlet.ts +0 -23
  173. package/src/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.ts +0 -36
  174. package/src/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.ts +0 -75
  175. package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +0 -24
  176. package/src/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.ts +0 -28
  177. package/src/testDoubles/Liblsl/FakeLiblsl.ts +0 -182
  178. /package/build/scripts/{runLslEventMarkerOutlet.d.ts → runLslEventMarkerEmitter.d.ts} +0 -0
@@ -1,317 +0,0 @@
1
- import { createPointer, DataType, define, load, open, unwrapPointer, } from 'ffi-rs';
2
- export default class LiblslAdapter {
3
- static open = open;
4
- static define = define;
5
- static load = load;
6
- static alloc = Buffer.alloc;
7
- static instance;
8
- liblslPath;
9
- bindings;
10
- defaultMacOsPath = `/opt/homebrew/Cellar/lsl/1.16.2/lib/liblsl.1.16.2.dylib`;
11
- constructor() {
12
- this.liblslPath = process.env.LIBLSL_PATH ?? this.defaultMacOsPath;
13
- this.tryToLoadBindings();
14
- }
15
- tryToLoadBindings() {
16
- try {
17
- this.loadBindings();
18
- }
19
- catch (error) {
20
- this.throwFailedToLoadLiblsl(error);
21
- }
22
- }
23
- throwFailedToLoadLiblsl(error) {
24
- throw new Error(`Loading the liblsl dylib failed! I tried to load it from ${this.liblslPath}.\n\n${error.message}\n\n`);
25
- }
26
- static getInstance() {
27
- if (!this.instance) {
28
- this.setInstance(new this());
29
- }
30
- return this.instance;
31
- }
32
- static setInstance(instance) {
33
- this.instance = instance;
34
- }
35
- static resetInstance() {
36
- delete this.instance;
37
- }
38
- loadBindings() {
39
- this.openLiblsl();
40
- this.bindings = this.defineLiblslBindings();
41
- }
42
- openLiblsl() {
43
- this.open({
44
- library: 'lsl',
45
- path: this.liblslPath,
46
- });
47
- }
48
- defineLiblslBindings() {
49
- return this.define(this.liblslFuncs);
50
- }
51
- createStreamInfo(options) {
52
- const { name, type, sourceId, channelCount, channelFormat, sampleRateHz, } = options;
53
- return this.bindings.lsl_create_streaminfo([
54
- name,
55
- type,
56
- channelCount,
57
- sampleRateHz,
58
- channelFormat,
59
- sourceId,
60
- ]);
61
- }
62
- appendChannelsToStreamInfo(options) {
63
- const { info, channels } = options;
64
- const description = this.bindings.lsl_get_desc([info]);
65
- const parent = this.bindings.lsl_append_child([description, 'channels']);
66
- for (const channel of channels) {
67
- const child = this.bindings.lsl_append_child([parent, 'channel']);
68
- this.bindings.lsl_append_child_value([
69
- child,
70
- 'label',
71
- channel.label,
72
- ]);
73
- this.bindings.lsl_append_child_value([child, 'unit', channel.units]);
74
- this.bindings.lsl_append_child_value([child, 'type', channel.type]);
75
- }
76
- }
77
- destroyStreamInfo(options) {
78
- const { info } = options;
79
- this.bindings.lsl_destroy_streaminfo([info]);
80
- }
81
- async resolveByProp(options) {
82
- const { prop, value, minResults = 1, timeoutMs = 1000 } = options;
83
- const maxResults = 1024;
84
- const bytesPerPointer = 8;
85
- const resultsBuffer = this.alloc(maxResults * bytesPerPointer);
86
- const resultsBufferPtr = unwrapPointer(createPointer({
87
- paramsType: [DataType.U8Array],
88
- paramsValue: [resultsBuffer],
89
- }))[0];
90
- const numResults = await this.load({
91
- library: 'lsl',
92
- funcName: 'lsl_resolve_byprop',
93
- retType: DataType.I32,
94
- paramsType: [
95
- DataType.External,
96
- DataType.I32,
97
- DataType.String,
98
- DataType.String,
99
- DataType.I32,
100
- DataType.Double,
101
- ],
102
- paramsValue: [
103
- resultsBufferPtr,
104
- maxResults,
105
- prop,
106
- value,
107
- minResults,
108
- timeoutMs / 1000,
109
- ],
110
- runInNewThread: true,
111
- });
112
- const handles = [];
113
- for (let i = 0; i < numResults; i++) {
114
- const handle = resultsBuffer.readBigUInt64LE(i * bytesPerPointer);
115
- if (handle !== 0n) {
116
- handles.push(handle);
117
- }
118
- }
119
- return handles;
120
- }
121
- createOutlet(options) {
122
- const { info, chunkSize, maxBufferedMs } = options;
123
- return this.bindings.lsl_create_outlet([
124
- info,
125
- chunkSize,
126
- maxBufferedMs / 1000,
127
- ]);
128
- }
129
- pushSampleFloatTimestamp(options) {
130
- const { outlet, sample, timestamp } = options;
131
- return this.bindings.lsl_push_sample_ft([outlet, sample, timestamp]);
132
- }
133
- pushSampleStringTimestamp(options) {
134
- const { outlet, sample, timestamp } = options;
135
- return this.bindings.lsl_push_sample_strt([outlet, sample, timestamp]);
136
- }
137
- destroyOutlet(options) {
138
- const { outlet } = options;
139
- this.bindings.lsl_destroy_outlet([outlet]);
140
- }
141
- createInlet(options) {
142
- const { info, maxBufferedMs } = options;
143
- return this.bindings.lsl_create_inlet([
144
- info,
145
- maxBufferedMs / 1000,
146
- this.maxChunkSize,
147
- this.shouldRecover,
148
- ]);
149
- }
150
- maxChunkSize = 0;
151
- shouldRecover = 1;
152
- pullSample(options) {
153
- const { inlet, dataBufferPtr, dataBufferElements, timeout, errcodePtr, } = options;
154
- return this.load({
155
- library: 'lsl',
156
- funcName: 'lsl_pull_sample_f',
157
- retType: DataType.Double,
158
- paramsType: [
159
- DataType.External,
160
- DataType.External,
161
- DataType.I32,
162
- DataType.Double,
163
- DataType.External,
164
- ],
165
- paramsValue: [
166
- inlet,
167
- dataBufferPtr,
168
- dataBufferElements,
169
- timeout,
170
- errcodePtr,
171
- ],
172
- });
173
- }
174
- pullChunk(options) {
175
- const { inlet, dataBufferPtr, timestampBufferPtr, dataBufferElements, timestampBufferElements, timeout, errcodePtr, } = options;
176
- return this.load({
177
- library: 'lsl',
178
- funcName: 'lsl_pull_chunk_f',
179
- retType: DataType.Double,
180
- paramsType: [
181
- DataType.External,
182
- DataType.External,
183
- DataType.External,
184
- DataType.I32,
185
- DataType.I32,
186
- DataType.Double,
187
- DataType.External,
188
- ],
189
- paramsValue: [
190
- inlet,
191
- unwrapPointer([dataBufferPtr])[0],
192
- unwrapPointer([timestampBufferPtr])[0],
193
- dataBufferElements,
194
- timestampBufferElements,
195
- timeout,
196
- unwrapPointer([errcodePtr])[0],
197
- ],
198
- });
199
- }
200
- flushInlet(options) {
201
- const { inlet } = options;
202
- this.bindings.lsl_flush_inlet([inlet]);
203
- }
204
- destroyInlet(options) {
205
- const { inlet } = options;
206
- this.bindings.lsl_destroy_inlet([inlet]);
207
- }
208
- localClock() {
209
- return this.bindings.lsl_local_clock([]);
210
- }
211
- get open() {
212
- return LiblslAdapter.open;
213
- }
214
- get define() {
215
- return LiblslAdapter.define;
216
- }
217
- get load() {
218
- return LiblslAdapter.load;
219
- }
220
- get alloc() {
221
- return LiblslAdapter.alloc;
222
- }
223
- get liblslFuncs() {
224
- return {
225
- lsl_create_streaminfo: {
226
- library: 'lsl',
227
- retType: DataType.External,
228
- paramsType: [
229
- DataType.String,
230
- DataType.String,
231
- DataType.I32,
232
- DataType.Double,
233
- DataType.I32,
234
- DataType.String,
235
- ],
236
- },
237
- lsl_destroy_streaminfo: {
238
- library: 'lsl',
239
- retType: DataType.Void,
240
- paramsType: [DataType.External],
241
- },
242
- lsl_create_outlet: {
243
- library: 'lsl',
244
- retType: DataType.External,
245
- paramsType: [DataType.External, DataType.I32, DataType.I32],
246
- },
247
- lsl_push_sample_ft: {
248
- library: 'lsl',
249
- retType: DataType.I32,
250
- paramsType: [
251
- DataType.External,
252
- DataType.FloatArray,
253
- DataType.Double,
254
- ],
255
- },
256
- lsl_push_sample_strt: {
257
- library: 'lsl',
258
- retType: DataType.I32,
259
- paramsType: [
260
- DataType.External,
261
- DataType.StringArray,
262
- DataType.Double,
263
- ],
264
- },
265
- lsl_destroy_outlet: {
266
- library: 'lsl',
267
- retType: DataType.Void,
268
- paramsType: [DataType.External],
269
- },
270
- lsl_create_inlet: {
271
- library: 'lsl',
272
- retType: DataType.External,
273
- paramsType: [
274
- DataType.External,
275
- DataType.I32,
276
- DataType.I32,
277
- DataType.I32,
278
- ],
279
- },
280
- lsl_flush_inlet: {
281
- library: 'lsl',
282
- retType: DataType.I32,
283
- paramsType: [DataType.External],
284
- },
285
- lsl_destroy_inlet: {
286
- library: 'lsl',
287
- retType: DataType.Void,
288
- paramsType: [DataType.External],
289
- },
290
- lsl_get_desc: {
291
- library: 'lsl',
292
- retType: DataType.External,
293
- paramsType: [DataType.External],
294
- },
295
- lsl_append_child: {
296
- library: 'lsl',
297
- retType: DataType.External,
298
- paramsType: [DataType.External, DataType.String],
299
- },
300
- lsl_append_child_value: {
301
- library: 'lsl',
302
- retType: DataType.External,
303
- paramsType: [
304
- DataType.External,
305
- DataType.String,
306
- DataType.String,
307
- ],
308
- },
309
- lsl_local_clock: {
310
- library: 'lsl',
311
- retType: DataType.Double,
312
- paramsType: [],
313
- },
314
- };
315
- }
316
- }
317
- //# sourceMappingURL=LiblslAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LiblslAdapter.js","sourceRoot":"","sources":["../../src/impl/LiblslAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { StreamOutletOptions, StreamOutlet } from './LslStreamOutlet.js';
2
- export default class LslEventMarkerOutlet implements EventMarkerOutlet {
3
- static Class?: EventMarkerOutletConstructor;
4
- protected outlet: StreamOutlet;
5
- private isPlaying;
6
- private waitResolve?;
7
- private timeout?;
8
- protected constructor(outlet: StreamOutlet);
9
- static Create(options?: Partial<StreamOutletOptions>): Promise<EventMarkerOutlet>;
10
- pushMarker(markerName: string): void;
11
- pushMarkers(markers: DurationMarker[]): Promise<void>;
12
- private pushMarkerToOutlet;
13
- protected wait(durationMs: number): Promise<unknown>;
14
- private setTimeout;
15
- stop(): void;
16
- destroy(): void;
17
- }
18
- export interface EventMarkerOutlet {
19
- pushMarker(markerName: string): void;
20
- pushMarkers(markers: DurationMarker[]): Promise<void>;
21
- stop(): void;
22
- destroy(): void;
23
- }
24
- export type EventMarkerOutletConstructor = new (outlet: StreamOutlet) => EventMarkerOutlet;
25
- export interface DurationMarker {
26
- name: string;
27
- durationMs: number;
28
- }
@@ -1,63 +0,0 @@
1
- import LslStreamOutlet from './LslStreamOutlet.js';
2
- export default class LslEventMarkerOutlet {
3
- static Class;
4
- outlet;
5
- isPlaying = false;
6
- waitResolve;
7
- timeout;
8
- constructor(outlet) {
9
- this.outlet = outlet;
10
- }
11
- static async Create(options) {
12
- const defaultOptions = {
13
- name: 'Event markers',
14
- type: 'Markers',
15
- channelNames: ['Markers'],
16
- sampleRateHz: 0,
17
- channelFormat: 'string',
18
- sourceId: 'event-markers',
19
- manufacturer: 'N/A',
20
- units: 'N/A',
21
- chunkSize: 0,
22
- maxBufferedMs: 0,
23
- };
24
- const outlet = await LslStreamOutlet.Create({
25
- ...defaultOptions,
26
- ...options,
27
- });
28
- return new (this.Class ?? this)(outlet);
29
- }
30
- pushMarker(markerName) {
31
- this.pushMarkerToOutlet(markerName);
32
- }
33
- async pushMarkers(markers) {
34
- this.isPlaying = true;
35
- for (let marker of markers) {
36
- const { name, durationMs } = marker;
37
- this.pushMarkerToOutlet(name);
38
- await this.wait(durationMs);
39
- if (!this.isPlaying) {
40
- return;
41
- }
42
- }
43
- }
44
- pushMarkerToOutlet(markerName) {
45
- this.outlet.pushSample([markerName]);
46
- }
47
- async wait(durationMs) {
48
- return new Promise((resolve) => this.setTimeout(resolve, durationMs));
49
- }
50
- setTimeout(resolve, durationMs) {
51
- this.waitResolve = resolve;
52
- this.timeout = setTimeout(resolve, durationMs);
53
- }
54
- stop() {
55
- this.waitResolve?.();
56
- clearTimeout(this.timeout);
57
- this.isPlaying = false;
58
- }
59
- destroy() {
60
- this.outlet.destroy();
61
- }
62
- }
63
- //# sourceMappingURL=LslEventMarkerOutlet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LslEventMarkerOutlet.js","sourceRoot":"","sources":["../../src/impl/LslEventMarkerOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,eAGN,MAAM,sBAAsB,CAAA;AAE7B,MAAM,CAAC,OAAO,OAAO,oBAAoB;IAC9B,MAAM,CAAC,KAAK,CAA+B;IAExC,MAAM,CAAc;IACtB,SAAS,GAAG,KAAK,CAAA;IACjB,WAAW,CAAa;IACxB,OAAO,CAAM;IAErB,YAAsB,MAAoB;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAsC;QAC7D,MAAM,cAAc,GAAG;YACnB,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,CAAC,SAAS,CAAC;YACzB,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,QAAQ;YACvB,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,CAAC;YACZ,aAAa,EAAE,CAAC;SACI,CAAA;QAExB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;YACxC,GAAG,cAAc;YACjB,GAAG,OAAO;SACb,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IAEM,UAAU,CAAC,UAAkB;QAChC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAErB,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;YACnC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAE7B,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAE3B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClB,OAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,UAAkB;QACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;IACxC,CAAC;IAES,KAAK,CAAC,IAAI,CAAC,UAAkB;QACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;IACzE,CAAC;IAEO,UAAU,CAAC,OAAiC,EAAE,UAAkB;QACpE,IAAI,CAAC,WAAW,GAAG,OAAc,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,WAAW,EAAE,EAAE,CAAA;QACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;IACzB,CAAC;CACJ"}
@@ -1,18 +0,0 @@
1
- import LslEventMarkerOutlet from '../impl/LslEventMarkerOutlet.js';
2
- async function main() {
3
- const outlet = await LslEventMarkerOutlet.Create();
4
- const markers = [
5
- { name: 'phase-1-begin', durationMs: 100 },
6
- { name: 'phase-1-end', durationMs: 10 },
7
- ];
8
- // Hangs until complete
9
- await outlet.pushMarkers(markers);
10
- // Void promise, does not hang
11
- void outlet.pushMarkers(markers);
12
- // Interrupts the above pushMarkers process
13
- outlet.stop();
14
- }
15
- main().catch((error) => {
16
- console.error('Error in main:', error);
17
- });
18
- //# sourceMappingURL=runLslEventMarkerOutlet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runLslEventMarkerOutlet.js","sourceRoot":"","sources":["../../src/scripts/runLslEventMarkerOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,iCAAiC,CAAA;AAElE,KAAK,UAAU,IAAI;IACf,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,CAAA;IAElD,MAAM,OAAO,GAAG;QACZ,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE;QAC1C,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE;KAC1C,CAAA;IAED,uBAAuB;IACvB,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IAEjC,8BAA8B;IAC9B,KAAK,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IAEhC,2CAA2C;IAC3C,MAAM,CAAC,IAAI,EAAE,CAAA;AACjB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;AAC1C,CAAC,CAAC,CAAA"}
@@ -1,13 +0,0 @@
1
- import { DurationMarker, EventMarkerOutlet } from '../../impl/LslEventMarkerOutlet.js';
2
- export default class FakeEventMarkerOutlet implements EventMarkerOutlet {
3
- static callsToPushMarker: string[];
4
- static callsToPushMarkers: DurationMarker[][];
5
- static numCallsToStop: number;
6
- static numCallsToDestroy: number;
7
- constructor();
8
- pushMarker(markerName: string): void;
9
- pushMarkers(markers: DurationMarker[]): Promise<void>;
10
- stop(): void;
11
- destroy(): void;
12
- static resetTestDouble(): void;
13
- }
@@ -1,26 +0,0 @@
1
- export default class FakeEventMarkerOutlet {
2
- static callsToPushMarker = [];
3
- static callsToPushMarkers = [];
4
- static numCallsToStop = 0;
5
- static numCallsToDestroy = 0;
6
- constructor() { }
7
- pushMarker(markerName) {
8
- FakeEventMarkerOutlet.callsToPushMarker.push(markerName);
9
- }
10
- async pushMarkers(markers) {
11
- FakeEventMarkerOutlet.callsToPushMarkers.push(markers);
12
- }
13
- stop() {
14
- FakeEventMarkerOutlet.numCallsToStop++;
15
- }
16
- destroy() {
17
- FakeEventMarkerOutlet.numCallsToDestroy++;
18
- }
19
- static resetTestDouble() {
20
- this.callsToPushMarker = [];
21
- this.callsToPushMarkers = [];
22
- this.numCallsToStop = 0;
23
- this.numCallsToDestroy = 0;
24
- }
25
- }
26
- //# sourceMappingURL=FakeEventMarkerOutlet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FakeEventMarkerOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAC/B,MAAM,CAAC,iBAAiB,GAAa,EAAE,CAAA;IACvC,MAAM,CAAC,kBAAkB,GAAuB,EAAE,CAAA;IAClD,MAAM,CAAC,cAAc,GAAG,CAAC,CAAA;IACzB,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAEnC,gBAAsB,CAAC;IAEhB,UAAU,CAAC,UAAkB;QAChC,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC5D,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC9C,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1D,CAAC;IAEM,IAAI;QACP,qBAAqB,CAAC,cAAc,EAAE,CAAA;IAC1C,CAAC;IAEM,OAAO;QACV,qBAAqB,CAAC,iBAAiB,EAAE,CAAA;IAC7C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAA;QAC3B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAA;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAC9B,CAAC"}
@@ -1,17 +0,0 @@
1
- import { LslSample } from 'impl/LiblslAdapter.js';
2
- import { DurationMarker, EventMarkerOutlet } from '../../impl/LslEventMarkerOutlet.js';
3
- export default class MockEventMarkerOutlet implements EventMarkerOutlet {
4
- private didPushMarkers;
5
- private pushedMarkers?;
6
- private didPushSamples;
7
- private pushedSamples?;
8
- stop(): void;
9
- destroy(): void;
10
- pushMarker(_markerName: string): void;
11
- pushSample(sample: LslSample): void;
12
- pushMarkers(markers: DurationMarker[]): Promise<void>;
13
- assertDidPushSamples(samples?: LslSample[]): void;
14
- assertDidNotPushSamples(): void;
15
- assertDidPushMarkers(markers?: DurationMarker[]): void;
16
- assertDidNotPushMarkers(): void;
17
- }
@@ -1,46 +0,0 @@
1
- import { assert } from '@neurodevs/node-tdd';
2
- export default class MockEventMarkerOutlet {
3
- didPushMarkers = false;
4
- pushedMarkers;
5
- didPushSamples = false;
6
- pushedSamples;
7
- stop() {
8
- throw new Error('Method not implemented.');
9
- }
10
- destroy() {
11
- throw new Error('Method not implemented.');
12
- }
13
- pushMarker(_markerName) {
14
- throw new Error('Method not implemented.');
15
- }
16
- pushSample(sample) {
17
- if (!this.didPushSamples) {
18
- this.didPushSamples = true;
19
- this.pushedSamples = [];
20
- }
21
- this.pushedSamples?.push(sample);
22
- }
23
- async pushMarkers(markers) {
24
- this.didPushMarkers = true;
25
- this.pushedMarkers = markers;
26
- }
27
- assertDidPushSamples(samples) {
28
- assert.isTrue(this.didPushSamples, `Expected to have pushed samples but didn't. Try 'outlet.pushSample(...)'`);
29
- if (samples) {
30
- assert.isEqualDeep(this.pushedSamples, samples);
31
- }
32
- }
33
- assertDidNotPushSamples() {
34
- assert.isFalse(this.didPushSamples, `Expected to NOT have pushed samples but did. Try 'outlet.pushSample(...)'`);
35
- }
36
- assertDidPushMarkers(markers) {
37
- assert.isTrue(this.didPushMarkers, `Expected to have pushed markers but didn't. Try 'outlet.pushMarkers(...)'`);
38
- if (markers) {
39
- assert.isEqualDeep(this.pushedMarkers, markers);
40
- }
41
- }
42
- assertDidNotPushMarkers() {
43
- assert.isFalse(this.didPushMarkers, `Expected to NOT have pushed markers but did. Try 'outlet.pushMarkers(...)'`);
44
- }
45
- }
46
- //# sourceMappingURL=MockEventMarkerOutlet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MockEventMarkerOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAQ5C,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAC9B,cAAc,GAAG,KAAK,CAAA;IACtB,aAAa,CAAmB;IAChC,cAAc,GAAG,KAAK,CAAA;IACtB,aAAa,CAAc;IAE5B,IAAI;QACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC9C,CAAC;IAEM,OAAO;QACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC9C,CAAC;IAEM,UAAU,CAAC,WAAmB;QACjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC9C,CAAC;IAEM,UAAU,CAAC,MAAiB;QAC/B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QAC3B,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA;IAChC,CAAC;IAEM,oBAAoB,CAAC,OAAqB;QAC7C,MAAM,CAAC,MAAM,CACT,IAAI,CAAC,cAAc,EACnB,0EAA0E,CAC7E,CAAA;QAED,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACnD,CAAC;IACL,CAAC;IAEM,uBAAuB;QAC1B,MAAM,CAAC,OAAO,CACV,IAAI,CAAC,cAAc,EACnB,2EAA2E,CAC9E,CAAA;IACL,CAAC;IAEM,oBAAoB,CAAC,OAA0B;QAClD,MAAM,CAAC,MAAM,CACT,IAAI,CAAC,cAAc,EACnB,2EAA2E,CAC9E,CAAA;QAED,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACnD,CAAC;IACL,CAAC;IAEM,uBAAuB;QAC1B,MAAM,CAAC,OAAO,CACV,IAAI,CAAC,cAAc,EACnB,4EAA4E,CAC/E,CAAA;IACL,CAAC;CACJ"}
@@ -1,9 +0,0 @@
1
- import LslEventMarkerOutlet from '../../impl/LslEventMarkerOutlet.js';
2
- import { StreamOutlet } from '../../impl/LslStreamOutlet.js';
3
- export default class SpyEventMarkerOutlet extends LslEventMarkerOutlet {
4
- totalWaitTimeMs: number;
5
- constructor(outlet: StreamOutlet);
6
- wait(durationMs: number): Promise<void>;
7
- getStreamOutlet(): StreamOutlet;
8
- resetTestDouble(): void;
9
- }
@@ -1,19 +0,0 @@
1
- import LslEventMarkerOutlet from '../../impl/LslEventMarkerOutlet.js';
2
- export default class SpyEventMarkerOutlet extends LslEventMarkerOutlet {
3
- totalWaitTimeMs;
4
- constructor(outlet) {
5
- super(outlet);
6
- this.totalWaitTimeMs = 0;
7
- }
8
- async wait(durationMs) {
9
- this.totalWaitTimeMs += durationMs;
10
- return Promise.resolve();
11
- }
12
- getStreamOutlet() {
13
- return this.outlet;
14
- }
15
- resetTestDouble() {
16
- this.totalWaitTimeMs = 0;
17
- }
18
- }
19
- //# sourceMappingURL=SpyEventMarkerOutlet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SpyEventMarkerOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,oCAAoC,CAAA;AAGrE,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,oBAAoB;IAC3D,eAAe,CAAQ;IAE9B,YAAmB,MAAoB;QACnC,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,UAAkB;QAChC,IAAI,CAAC,eAAe,IAAI,UAAU,CAAA;QAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;IAEM,eAAe;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAEM,eAAe;QAClB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IAC5B,CAAC;CACJ"}
@@ -1,9 +0,0 @@
1
- import { DurationMarker, EventMarkerOutlet } from '../../impl/LslEventMarkerOutlet.js';
2
- export default class ThrowingEventMarkerOutlet implements EventMarkerOutlet {
3
- private errorMsg;
4
- constructor();
5
- pushMarker(_markerName: string): Promise<void>;
6
- pushMarkers(_markers: DurationMarker[]): Promise<void>;
7
- stop(): void;
8
- destroy(): void;
9
- }
@@ -1,19 +0,0 @@
1
- export default class ThrowingEventMarkerOutlet {
2
- errorMsg = 'Intentional throwing: ';
3
- constructor() {
4
- throw new Error(this.errorMsg + 'constructor');
5
- }
6
- async pushMarker(_markerName) {
7
- throw new Error(this.errorMsg + 'pushMarker');
8
- }
9
- async pushMarkers(_markers) {
10
- throw new Error(this.errorMsg + 'pushMarkers');
11
- }
12
- stop() {
13
- throw new Error(this.errorMsg + 'stop');
14
- }
15
- destroy() {
16
- throw new Error(this.errorMsg + 'destroy');
17
- }
18
- }
19
- //# sourceMappingURL=ThrowingEventMarkerOutlet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThrowingEventMarkerOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,OAAO,yBAAyB;IAClC,QAAQ,GAAG,wBAAwB,CAAA;IAE3C;QACI,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAA;IAClD,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,WAAmB;QACvC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAA;IACjD,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,QAA0B;QAC/C,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAA;IAClD,CAAC;IAEM,IAAI;QACP,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAA;IAC3C,CAAC;IAEM,OAAO;QACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;IAC9C,CAAC;CACJ"}