@science-corporation/synapse 2.2.2 → 2.2.5

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 (91) hide show
  1. package/README.md +13 -0
  2. package/dist/api/api.d.ts +9421 -0
  3. package/dist/api/api.js +23712 -0
  4. package/dist/api/proto.json +1662 -0
  5. package/dist/browser.d.ts +4 -0
  6. package/dist/browser.d.ts.map +1 -0
  7. package/dist/browser.js +22 -0
  8. package/dist/browser.js.map +1 -0
  9. package/dist/config.d.ts +17 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +111 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/device.d.ts +41 -0
  14. package/dist/device.d.ts.map +1 -0
  15. package/dist/device.js +199 -0
  16. package/dist/device.js.map +1 -0
  17. package/dist/index.d.ts +7 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +30 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/node.d.ts +10 -0
  22. package/dist/node.d.ts.map +1 -0
  23. package/dist/node.js +14 -0
  24. package/dist/node.js.map +1 -0
  25. package/dist/nodes/broadband_source.d.ts +11 -0
  26. package/dist/nodes/broadband_source.d.ts.map +1 -0
  27. package/dist/nodes/broadband_source.js +28 -0
  28. package/dist/nodes/broadband_source.js.map +1 -0
  29. package/dist/nodes/disk_writer.d.ts +11 -0
  30. package/dist/nodes/disk_writer.d.ts.map +1 -0
  31. package/dist/nodes/disk_writer.js +28 -0
  32. package/dist/nodes/disk_writer.js.map +1 -0
  33. package/dist/nodes/electrical_stimulation.d.ts +11 -0
  34. package/dist/nodes/electrical_stimulation.d.ts.map +1 -0
  35. package/dist/nodes/electrical_stimulation.js +28 -0
  36. package/dist/nodes/electrical_stimulation.js.map +1 -0
  37. package/dist/nodes/index.d.ts +10 -0
  38. package/dist/nodes/index.d.ts.map +1 -0
  39. package/dist/nodes/index.js +23 -0
  40. package/dist/nodes/index.js.map +1 -0
  41. package/dist/nodes/optical_stimulation.d.ts +11 -0
  42. package/dist/nodes/optical_stimulation.d.ts.map +1 -0
  43. package/dist/nodes/optical_stimulation.js +28 -0
  44. package/dist/nodes/optical_stimulation.js.map +1 -0
  45. package/dist/nodes/spectral_filter.d.ts +11 -0
  46. package/dist/nodes/spectral_filter.d.ts.map +1 -0
  47. package/dist/nodes/spectral_filter.js +28 -0
  48. package/dist/nodes/spectral_filter.js.map +1 -0
  49. package/dist/nodes/spike_binner.d.ts +11 -0
  50. package/dist/nodes/spike_binner.d.ts.map +1 -0
  51. package/dist/nodes/spike_binner.js +28 -0
  52. package/dist/nodes/spike_binner.js.map +1 -0
  53. package/dist/nodes/spike_detector.d.ts +11 -0
  54. package/dist/nodes/spike_detector.d.ts.map +1 -0
  55. package/dist/nodes/spike_detector.js +28 -0
  56. package/dist/nodes/spike_detector.js.map +1 -0
  57. package/dist/nodes/spike_source.d.ts +11 -0
  58. package/dist/nodes/spike_source.d.ts.map +1 -0
  59. package/dist/nodes/spike_source.js +28 -0
  60. package/dist/nodes/spike_source.js.map +1 -0
  61. package/dist/utils/client.d.ts +10 -0
  62. package/dist/utils/client.d.ts.map +1 -0
  63. package/dist/utils/client.js +39 -0
  64. package/dist/utils/client.js.map +1 -0
  65. package/dist/utils/discover.d.ts +10 -0
  66. package/dist/utils/discover.d.ts.map +1 -0
  67. package/dist/utils/discover.js +49 -0
  68. package/dist/utils/discover.js.map +1 -0
  69. package/dist/utils/enum.d.ts +2 -0
  70. package/dist/utils/enum.d.ts.map +1 -0
  71. package/dist/utils/enum.js +13 -0
  72. package/dist/utils/enum.js.map +1 -0
  73. package/dist/utils/index.d.ts +2 -0
  74. package/dist/utils/index.d.ts.map +1 -0
  75. package/dist/utils/index.js +6 -0
  76. package/dist/utils/index.js.map +1 -0
  77. package/dist/utils/ip.d.ts +2 -0
  78. package/dist/utils/ip.d.ts.map +1 -0
  79. package/dist/utils/ip.js +52 -0
  80. package/dist/utils/ip.js.map +1 -0
  81. package/dist/utils/status.d.ts +28 -0
  82. package/dist/utils/status.d.ts.map +1 -0
  83. package/dist/utils/status.js +54 -0
  84. package/dist/utils/status.js.map +1 -0
  85. package/package.json +1 -1
  86. package/scripts/build.sh +5 -3
  87. package/scripts/postinstall.sh +17 -1
  88. package/src/api/api.d.ts +9421 -0
  89. package/src/api/api.js +23712 -0
  90. package/src/api/proto.json +1662 -0
  91. package/src/device.ts +19 -0
@@ -0,0 +1,1662 @@
1
+ {
2
+ "nested": {
3
+ "synapse": {
4
+ "nested": {
5
+ "ElectrodeConfig": {
6
+ "fields": {
7
+ "channels": {
8
+ "rule": "repeated",
9
+ "type": "Channel",
10
+ "id": 1
11
+ },
12
+ "lowCutoffHz": {
13
+ "type": "float",
14
+ "id": 2
15
+ },
16
+ "highCutoffHz": {
17
+ "type": "float",
18
+ "id": 3
19
+ }
20
+ }
21
+ },
22
+ "PixelConfig": {
23
+ "fields": {
24
+ "pixelMask": {
25
+ "rule": "repeated",
26
+ "type": "uint32",
27
+ "id": 1
28
+ }
29
+ }
30
+ },
31
+ "SignalConfig": {
32
+ "oneofs": {
33
+ "signalType": {
34
+ "oneof": [
35
+ "electrode",
36
+ "pixel"
37
+ ]
38
+ }
39
+ },
40
+ "fields": {
41
+ "electrode": {
42
+ "type": "ElectrodeConfig",
43
+ "id": 1
44
+ },
45
+ "pixel": {
46
+ "type": "PixelConfig",
47
+ "id": 2
48
+ }
49
+ }
50
+ },
51
+ "ChannelType": {
52
+ "values": {
53
+ "ELECTRODE": 0,
54
+ "GPIO": 1
55
+ }
56
+ },
57
+ "Channel": {
58
+ "fields": {
59
+ "id": {
60
+ "type": "uint32",
61
+ "id": 1
62
+ },
63
+ "electrodeId": {
64
+ "type": "uint32",
65
+ "id": 2
66
+ },
67
+ "referenceId": {
68
+ "type": "uint32",
69
+ "id": 3
70
+ },
71
+ "type": {
72
+ "type": "ChannelType",
73
+ "id": 4
74
+ }
75
+ }
76
+ },
77
+ "ChannelRange": {
78
+ "fields": {
79
+ "type": {
80
+ "type": "ChannelType",
81
+ "id": 1
82
+ },
83
+ "count": {
84
+ "type": "uint32",
85
+ "id": 2
86
+ },
87
+ "channelIds": {
88
+ "rule": "repeated",
89
+ "type": "uint32",
90
+ "id": 3
91
+ }
92
+ }
93
+ },
94
+ "SpectralFilterMethod": {
95
+ "values": {
96
+ "kSpectralFilterUnknown": 0,
97
+ "kLowPass": 1,
98
+ "kHighPass": 2,
99
+ "kBandPass": 3,
100
+ "kBandStop": 4
101
+ }
102
+ },
103
+ "SpectralFilterConfig": {
104
+ "fields": {
105
+ "method": {
106
+ "type": "SpectralFilterMethod",
107
+ "id": 1
108
+ },
109
+ "lowCutoffHz": {
110
+ "type": "float",
111
+ "id": 2
112
+ },
113
+ "highCutoffHz": {
114
+ "type": "float",
115
+ "id": 3
116
+ }
117
+ }
118
+ },
119
+ "SpikeSourceConfig": {
120
+ "fields": {
121
+ "peripheralId": {
122
+ "type": "uint32",
123
+ "id": 1
124
+ },
125
+ "sampleRateHz": {
126
+ "type": "uint32",
127
+ "id": 2
128
+ },
129
+ "spikeWindowMs": {
130
+ "type": "float",
131
+ "id": 3
132
+ },
133
+ "gain": {
134
+ "type": "float",
135
+ "id": 4
136
+ },
137
+ "thresholdUV": {
138
+ "type": "float",
139
+ "id": 5
140
+ },
141
+ "electrodes": {
142
+ "type": "ElectrodeConfig",
143
+ "id": 6
144
+ }
145
+ }
146
+ },
147
+ "ElectricalStimulationConfig": {
148
+ "fields": {
149
+ "peripheralId": {
150
+ "type": "uint32",
151
+ "id": 1
152
+ },
153
+ "channels": {
154
+ "rule": "repeated",
155
+ "type": "Channel",
156
+ "id": 2
157
+ },
158
+ "bitWidth": {
159
+ "type": "uint32",
160
+ "id": 3
161
+ },
162
+ "sampleRate": {
163
+ "type": "uint32",
164
+ "id": 4
165
+ },
166
+ "lsb": {
167
+ "type": "uint32",
168
+ "id": 5
169
+ }
170
+ }
171
+ },
172
+ "ElectricalStimulationStatus": {
173
+ "fields": {
174
+ "lsbUV": {
175
+ "type": "float",
176
+ "id": 1
177
+ }
178
+ }
179
+ },
180
+ "SpikeBinnerConfig": {
181
+ "fields": {
182
+ "binSizeMs": {
183
+ "type": "uint32",
184
+ "id": 1
185
+ }
186
+ }
187
+ },
188
+ "ApplicationNodeConfig": {
189
+ "fields": {
190
+ "name": {
191
+ "type": "string",
192
+ "id": 1
193
+ },
194
+ "parameters": {
195
+ "keyType": "string",
196
+ "type": "google.protobuf.Value",
197
+ "id": 2
198
+ }
199
+ }
200
+ },
201
+ "ApplicationNodeStatus": {
202
+ "fields": {
203
+ "name": {
204
+ "type": "string",
205
+ "id": 1
206
+ },
207
+ "running": {
208
+ "type": "bool",
209
+ "id": 2
210
+ },
211
+ "errorLogs": {
212
+ "type": "string",
213
+ "id": 3
214
+ }
215
+ }
216
+ },
217
+ "TemplateMatcher": {
218
+ "fields": {
219
+ "templateUV": {
220
+ "rule": "repeated",
221
+ "type": "uint32",
222
+ "id": 1
223
+ }
224
+ }
225
+ },
226
+ "Thresholder": {
227
+ "fields": {
228
+ "thresholdUV": {
229
+ "type": "uint32",
230
+ "id": 1
231
+ }
232
+ }
233
+ },
234
+ "SpikeDetectorConfig": {
235
+ "oneofs": {
236
+ "config": {
237
+ "oneof": [
238
+ "thresholder",
239
+ "templateMatcher"
240
+ ]
241
+ }
242
+ },
243
+ "fields": {
244
+ "thresholder": {
245
+ "type": "Thresholder",
246
+ "id": 1
247
+ },
248
+ "templateMatcher": {
249
+ "type": "TemplateMatcher",
250
+ "id": 2
251
+ },
252
+ "samplesPerSpike": {
253
+ "type": "uint32",
254
+ "id": 3
255
+ }
256
+ }
257
+ },
258
+ "DiskWriterConfig": {
259
+ "fields": {
260
+ "filename": {
261
+ "type": "string",
262
+ "id": 1
263
+ }
264
+ }
265
+ },
266
+ "DiskWriterStatus": {
267
+ "fields": {
268
+ "outputPath": {
269
+ "type": "string",
270
+ "id": 1
271
+ },
272
+ "bytesWritten": {
273
+ "type": "uint64",
274
+ "id": 2
275
+ },
276
+ "isWriting": {
277
+ "type": "bool",
278
+ "id": 3
279
+ },
280
+ "availableDiskSpaceBytes": {
281
+ "type": "uint64",
282
+ "id": 4
283
+ },
284
+ "currentBitrateMbps": {
285
+ "type": "float",
286
+ "id": 5
287
+ }
288
+ }
289
+ },
290
+ "ElectrodeStatus": {
291
+ "fields": {
292
+ "lsbUV": {
293
+ "type": "float",
294
+ "id": 1
295
+ }
296
+ }
297
+ },
298
+ "PixelStatus": {
299
+ "fields": {}
300
+ },
301
+ "SignalStatus": {
302
+ "oneofs": {
303
+ "signalType": {
304
+ "oneof": [
305
+ "electrode",
306
+ "pixel"
307
+ ]
308
+ }
309
+ },
310
+ "fields": {
311
+ "electrode": {
312
+ "type": "ElectrodeStatus",
313
+ "id": 1
314
+ },
315
+ "pixel": {
316
+ "type": "PixelStatus",
317
+ "id": 2
318
+ }
319
+ }
320
+ },
321
+ "BroadbandSourceConfig": {
322
+ "fields": {
323
+ "peripheralId": {
324
+ "type": "uint32",
325
+ "id": 1
326
+ },
327
+ "bitWidth": {
328
+ "type": "uint32",
329
+ "id": 2
330
+ },
331
+ "sampleRateHz": {
332
+ "type": "uint32",
333
+ "id": 3
334
+ },
335
+ "gain": {
336
+ "type": "float",
337
+ "id": 4
338
+ },
339
+ "signal": {
340
+ "type": "SignalConfig",
341
+ "id": 5
342
+ }
343
+ }
344
+ },
345
+ "BroadbandSourceStatus": {
346
+ "fields": {
347
+ "status": {
348
+ "type": "SignalStatus",
349
+ "id": 1
350
+ }
351
+ }
352
+ },
353
+ "OpticalStimulationConfig": {
354
+ "fields": {
355
+ "peripheralId": {
356
+ "type": "uint32",
357
+ "id": 1
358
+ },
359
+ "pixelMask": {
360
+ "rule": "repeated",
361
+ "type": "uint32",
362
+ "id": 2
363
+ },
364
+ "bitWidth": {
365
+ "type": "uint32",
366
+ "id": 3
367
+ },
368
+ "frameRate": {
369
+ "type": "uint32",
370
+ "id": 4
371
+ },
372
+ "gain": {
373
+ "type": "float",
374
+ "id": 5
375
+ },
376
+ "sendReceipts": {
377
+ "type": "bool",
378
+ "id": 6
379
+ }
380
+ }
381
+ },
382
+ "OpticalStimFrame": {
383
+ "fields": {
384
+ "frameId": {
385
+ "type": "uint64",
386
+ "id": 1
387
+ },
388
+ "sequenceNumber": {
389
+ "type": "uint64",
390
+ "id": 2
391
+ },
392
+ "timestampNs": {
393
+ "type": "uint64",
394
+ "id": 3
395
+ },
396
+ "rows": {
397
+ "type": "uint32",
398
+ "id": 4
399
+ },
400
+ "columns": {
401
+ "type": "uint32",
402
+ "id": 5
403
+ },
404
+ "intensity": {
405
+ "rule": "repeated",
406
+ "type": "float",
407
+ "id": 6
408
+ },
409
+ "durationUs": {
410
+ "type": "uint64",
411
+ "id": 7
412
+ }
413
+ }
414
+ },
415
+ "OpticalStimulationStatus": {
416
+ "fields": {
417
+ "framesWritten": {
418
+ "type": "uint64",
419
+ "id": 1
420
+ }
421
+ }
422
+ },
423
+ "SynapseDevice": {
424
+ "methods": {
425
+ "Info": {
426
+ "requestType": "google.protobuf.Empty",
427
+ "responseType": "DeviceInfo"
428
+ },
429
+ "Configure": {
430
+ "requestType": "DeviceConfiguration",
431
+ "responseType": "Status"
432
+ },
433
+ "Start": {
434
+ "requestType": "google.protobuf.Empty",
435
+ "responseType": "Status"
436
+ },
437
+ "Stop": {
438
+ "requestType": "google.protobuf.Empty",
439
+ "responseType": "Status"
440
+ },
441
+ "Query": {
442
+ "requestType": "QueryRequest",
443
+ "responseType": "QueryResponse"
444
+ },
445
+ "StreamQuery": {
446
+ "requestType": "StreamQueryRequest",
447
+ "responseType": "StreamQueryResponse",
448
+ "responseStream": true
449
+ },
450
+ "DeployApp": {
451
+ "requestType": "AppPackageChunk",
452
+ "requestStream": true,
453
+ "responseType": "AppDeployResponse",
454
+ "responseStream": true
455
+ },
456
+ "ListFiles": {
457
+ "requestType": "google.protobuf.Empty",
458
+ "responseType": "ListFilesResponse"
459
+ },
460
+ "WriteFile": {
461
+ "requestType": "WriteFileRequest",
462
+ "responseType": "WriteFileResponse"
463
+ },
464
+ "ReadFile": {
465
+ "requestType": "ReadFileRequest",
466
+ "responseType": "ReadFileResponse",
467
+ "responseStream": true
468
+ },
469
+ "DeleteFile": {
470
+ "requestType": "DeleteFileRequest",
471
+ "responseType": "DeleteFileResponse"
472
+ },
473
+ "GetLogs": {
474
+ "requestType": "LogQueryRequest",
475
+ "responseType": "LogQueryResponse"
476
+ },
477
+ "TailLogs": {
478
+ "requestType": "TailLogsRequest",
479
+ "responseType": "LogEntry",
480
+ "responseStream": true
481
+ },
482
+ "UpdateDeviceSettings": {
483
+ "requestType": "UpdateDeviceSettingsRequest",
484
+ "responseType": "UpdateDeviceSettingsResponse"
485
+ }
486
+ }
487
+ },
488
+ "SampleQuery": {
489
+ "fields": {
490
+ "channels": {
491
+ "rule": "repeated",
492
+ "type": "Channel",
493
+ "id": 1
494
+ },
495
+ "sampleCount": {
496
+ "type": "uint32",
497
+ "id": 2
498
+ }
499
+ }
500
+ },
501
+ "ImpedanceQuery": {
502
+ "fields": {
503
+ "electrodeIds": {
504
+ "rule": "repeated",
505
+ "type": "uint32",
506
+ "id": 1
507
+ }
508
+ }
509
+ },
510
+ "SelfTestQuery": {
511
+ "fields": {
512
+ "peripheralId": {
513
+ "type": "uint32",
514
+ "id": 1
515
+ }
516
+ }
517
+ },
518
+ "ImpedanceMeasurement": {
519
+ "fields": {
520
+ "electrodeId": {
521
+ "type": "uint32",
522
+ "id": 1
523
+ },
524
+ "magnitude": {
525
+ "type": "float",
526
+ "id": 2
527
+ },
528
+ "phase": {
529
+ "type": "float",
530
+ "id": 3
531
+ }
532
+ }
533
+ },
534
+ "ImpedanceResponse": {
535
+ "fields": {
536
+ "measurements": {
537
+ "rule": "repeated",
538
+ "type": "ImpedanceMeasurement",
539
+ "id": 1
540
+ }
541
+ }
542
+ },
543
+ "SelfTestItem": {
544
+ "fields": {
545
+ "testName": {
546
+ "type": "string",
547
+ "id": 1
548
+ },
549
+ "passed": {
550
+ "type": "bool",
551
+ "id": 2
552
+ },
553
+ "testData": {
554
+ "rule": "repeated",
555
+ "type": "uint32",
556
+ "id": 3
557
+ },
558
+ "testReport": {
559
+ "type": "string",
560
+ "id": 4
561
+ }
562
+ }
563
+ },
564
+ "SelfTestResponse": {
565
+ "fields": {
566
+ "allPassed": {
567
+ "type": "bool",
568
+ "id": 1
569
+ },
570
+ "tests": {
571
+ "rule": "repeated",
572
+ "type": "SelfTestItem",
573
+ "id": 2
574
+ }
575
+ }
576
+ },
577
+ "QueryRequest": {
578
+ "oneofs": {
579
+ "query": {
580
+ "oneof": [
581
+ "impedanceQuery",
582
+ "sampleQuery",
583
+ "selfTestQuery",
584
+ "listTapsQuery",
585
+ "getSettingsQuery"
586
+ ]
587
+ }
588
+ },
589
+ "fields": {
590
+ "queryType": {
591
+ "type": "QueryType",
592
+ "id": 1
593
+ },
594
+ "impedanceQuery": {
595
+ "type": "ImpedanceQuery",
596
+ "id": 2
597
+ },
598
+ "sampleQuery": {
599
+ "type": "SampleQuery",
600
+ "id": 3
601
+ },
602
+ "selfTestQuery": {
603
+ "type": "SelfTestQuery",
604
+ "id": 4
605
+ },
606
+ "listTapsQuery": {
607
+ "type": "ListTapsQuery",
608
+ "id": 5
609
+ },
610
+ "getSettingsQuery": {
611
+ "type": "GetSettingsQuery",
612
+ "id": 6
613
+ }
614
+ },
615
+ "nested": {
616
+ "QueryType": {
617
+ "values": {
618
+ "kNone": 0,
619
+ "kImpedance": 1,
620
+ "kSample": 2,
621
+ "kSelfTest": 3,
622
+ "kListTaps": 4,
623
+ "kGetSettings": 5
624
+ }
625
+ }
626
+ }
627
+ },
628
+ "StreamQueryRequest": {
629
+ "fields": {
630
+ "request": {
631
+ "type": "QueryRequest",
632
+ "id": 1
633
+ }
634
+ }
635
+ },
636
+ "QueryResponse": {
637
+ "oneofs": {
638
+ "response": {
639
+ "oneof": [
640
+ "impedanceResponse",
641
+ "selfTestResponse",
642
+ "listTapsResponse",
643
+ "getSettingsResponse"
644
+ ]
645
+ }
646
+ },
647
+ "fields": {
648
+ "status": {
649
+ "type": "Status",
650
+ "id": 1
651
+ },
652
+ "data": {
653
+ "rule": "repeated",
654
+ "type": "uint32",
655
+ "id": 2
656
+ },
657
+ "impedanceResponse": {
658
+ "type": "ImpedanceResponse",
659
+ "id": 3
660
+ },
661
+ "selfTestResponse": {
662
+ "type": "SelfTestResponse",
663
+ "id": 4
664
+ },
665
+ "listTapsResponse": {
666
+ "type": "ListTapsResponse",
667
+ "id": 5
668
+ },
669
+ "getSettingsResponse": {
670
+ "type": "GetSettingsResponse",
671
+ "id": 6
672
+ }
673
+ }
674
+ },
675
+ "StreamQueryResponse": {
676
+ "oneofs": {
677
+ "response": {
678
+ "oneof": [
679
+ "impedance",
680
+ "selfTest"
681
+ ]
682
+ }
683
+ },
684
+ "fields": {
685
+ "code": {
686
+ "type": "StatusCode",
687
+ "id": 1
688
+ },
689
+ "message": {
690
+ "type": "string",
691
+ "id": 2
692
+ },
693
+ "timestampNs": {
694
+ "type": "uint64",
695
+ "id": 3
696
+ },
697
+ "impedance": {
698
+ "type": "ImpedanceResponse",
699
+ "id": 4
700
+ },
701
+ "selfTest": {
702
+ "type": "SelfTestResponse",
703
+ "id": 5
704
+ }
705
+ }
706
+ },
707
+ "StatusCode": {
708
+ "values": {
709
+ "kOk": 0,
710
+ "kUndefinedError": 1,
711
+ "kInvalidConfiguration": 2,
712
+ "kFailedPrecondition": 3,
713
+ "kUnimplemented": 4,
714
+ "kInternalError": 5,
715
+ "kPermissionDenied": 6,
716
+ "kQueryFailed": 7
717
+ }
718
+ },
719
+ "DeviceState": {
720
+ "values": {
721
+ "kUnknown": 0,
722
+ "kInitializing": 1,
723
+ "kStopped": 2,
724
+ "kRunning": 3,
725
+ "kError": 4
726
+ }
727
+ },
728
+ "DeviceStorage": {
729
+ "fields": {
730
+ "totalGb": {
731
+ "type": "float",
732
+ "id": 1
733
+ },
734
+ "usedGb": {
735
+ "type": "float",
736
+ "id": 2
737
+ }
738
+ }
739
+ },
740
+ "DevicePower": {
741
+ "fields": {
742
+ "batteryLevelPercent": {
743
+ "type": "float",
744
+ "id": 1
745
+ },
746
+ "isCharging": {
747
+ "type": "bool",
748
+ "id": 2
749
+ }
750
+ }
751
+ },
752
+ "SignalChainStatus": {
753
+ "fields": {
754
+ "nodes": {
755
+ "rule": "repeated",
756
+ "type": "NodeStatus",
757
+ "id": 1
758
+ }
759
+ }
760
+ },
761
+ "Status": {
762
+ "fields": {
763
+ "message": {
764
+ "type": "string",
765
+ "id": 1
766
+ },
767
+ "code": {
768
+ "type": "StatusCode",
769
+ "id": 2
770
+ },
771
+ "state": {
772
+ "type": "DeviceState",
773
+ "id": 3
774
+ },
775
+ "power": {
776
+ "type": "DevicePower",
777
+ "id": 5
778
+ },
779
+ "storage": {
780
+ "type": "DeviceStorage",
781
+ "id": 6
782
+ },
783
+ "signalChain": {
784
+ "type": "SignalChainStatus",
785
+ "id": 7
786
+ },
787
+ "timeSyncPort": {
788
+ "type": "uint32",
789
+ "id": 8
790
+ }
791
+ },
792
+ "reserved": [
793
+ [
794
+ 4,
795
+ 4
796
+ ]
797
+ ]
798
+ },
799
+ "NodeType": {
800
+ "values": {
801
+ "kNodeTypeUnknown": 0,
802
+ "kBroadbandSource": 3,
803
+ "kElectricalStimulation": 4,
804
+ "kOpticalStimulation": 5,
805
+ "kSpikeDetector": 6,
806
+ "kSpikeSource": 7,
807
+ "kSpectralFilter": 8,
808
+ "kDiskWriter": 9,
809
+ "kSpikeBinner": 10,
810
+ "kApplication": 11
811
+ },
812
+ "reserved": [
813
+ [
814
+ 1,
815
+ 1
816
+ ],
817
+ [
818
+ 2,
819
+ 2
820
+ ]
821
+ ]
822
+ },
823
+ "NodeConfig": {
824
+ "oneofs": {
825
+ "config": {
826
+ "oneof": [
827
+ "broadbandSource",
828
+ "electricalStimulation",
829
+ "opticalStimulation",
830
+ "spikeDetector",
831
+ "spectralFilter",
832
+ "diskWriter",
833
+ "spikeSource",
834
+ "spikeBinner",
835
+ "application"
836
+ ]
837
+ }
838
+ },
839
+ "fields": {
840
+ "type": {
841
+ "type": "NodeType",
842
+ "id": 1
843
+ },
844
+ "id": {
845
+ "type": "uint32",
846
+ "id": 2
847
+ },
848
+ "broadbandSource": {
849
+ "type": "BroadbandSourceConfig",
850
+ "id": 5
851
+ },
852
+ "electricalStimulation": {
853
+ "type": "ElectricalStimulationConfig",
854
+ "id": 6
855
+ },
856
+ "opticalStimulation": {
857
+ "type": "OpticalStimulationConfig",
858
+ "id": 8
859
+ },
860
+ "spikeDetector": {
861
+ "type": "SpikeDetectorConfig",
862
+ "id": 9
863
+ },
864
+ "spectralFilter": {
865
+ "type": "SpectralFilterConfig",
866
+ "id": 10
867
+ },
868
+ "diskWriter": {
869
+ "type": "DiskWriterConfig",
870
+ "id": 11
871
+ },
872
+ "spikeSource": {
873
+ "type": "SpikeSourceConfig",
874
+ "id": 12
875
+ },
876
+ "spikeBinner": {
877
+ "type": "SpikeBinnerConfig",
878
+ "id": 13
879
+ },
880
+ "application": {
881
+ "type": "ApplicationNodeConfig",
882
+ "id": 14
883
+ }
884
+ },
885
+ "reserved": [
886
+ [
887
+ 3,
888
+ 3
889
+ ],
890
+ [
891
+ 4,
892
+ 4
893
+ ]
894
+ ]
895
+ },
896
+ "NodeStatus": {
897
+ "oneofs": {
898
+ "status": {
899
+ "oneof": [
900
+ "broadbandSource",
901
+ "electricalStimulation",
902
+ "application",
903
+ "opticalStimulation",
904
+ "diskWriter"
905
+ ]
906
+ }
907
+ },
908
+ "fields": {
909
+ "type": {
910
+ "type": "NodeType",
911
+ "id": 1
912
+ },
913
+ "id": {
914
+ "type": "uint32",
915
+ "id": 2
916
+ },
917
+ "broadbandSource": {
918
+ "type": "BroadbandSourceStatus",
919
+ "id": 4
920
+ },
921
+ "electricalStimulation": {
922
+ "type": "ElectricalStimulationStatus",
923
+ "id": 6
924
+ },
925
+ "application": {
926
+ "type": "ApplicationNodeStatus",
927
+ "id": 7
928
+ },
929
+ "opticalStimulation": {
930
+ "type": "OpticalStimulationStatus",
931
+ "id": 8
932
+ },
933
+ "diskWriter": {
934
+ "type": "DiskWriterStatus",
935
+ "id": 10
936
+ }
937
+ },
938
+ "reserved": [
939
+ [
940
+ 3,
941
+ 3
942
+ ],
943
+ [
944
+ 5,
945
+ 5
946
+ ]
947
+ ]
948
+ },
949
+ "NodeConnection": {
950
+ "fields": {
951
+ "srcNodeId": {
952
+ "type": "uint32",
953
+ "id": 1
954
+ },
955
+ "dstNodeId": {
956
+ "type": "uint32",
957
+ "id": 2
958
+ }
959
+ }
960
+ },
961
+ "TapType": {
962
+ "values": {
963
+ "TAP_TYPE_UNSPECIFIED": 0,
964
+ "TAP_TYPE_PRODUCER": 1,
965
+ "TAP_TYPE_CONSUMER": 2
966
+ }
967
+ },
968
+ "TapConnection": {
969
+ "fields": {
970
+ "name": {
971
+ "type": "string",
972
+ "id": 1
973
+ },
974
+ "endpoint": {
975
+ "type": "string",
976
+ "id": 2
977
+ },
978
+ "messageType": {
979
+ "type": "string",
980
+ "id": 3
981
+ },
982
+ "tapType": {
983
+ "type": "TapType",
984
+ "id": 4
985
+ }
986
+ }
987
+ },
988
+ "ListTapsQuery": {
989
+ "fields": {}
990
+ },
991
+ "ListTapsResponse": {
992
+ "fields": {
993
+ "taps": {
994
+ "rule": "repeated",
995
+ "type": "TapConnection",
996
+ "id": 1
997
+ }
998
+ }
999
+ },
1000
+ "Peripheral": {
1001
+ "fields": {
1002
+ "name": {
1003
+ "type": "string",
1004
+ "id": 1
1005
+ },
1006
+ "vendor": {
1007
+ "type": "string",
1008
+ "id": 2
1009
+ },
1010
+ "peripheralId": {
1011
+ "type": "uint32",
1012
+ "id": 3
1013
+ },
1014
+ "type": {
1015
+ "type": "Type",
1016
+ "id": 4
1017
+ },
1018
+ "address": {
1019
+ "type": "string",
1020
+ "id": 5
1021
+ }
1022
+ },
1023
+ "nested": {
1024
+ "Type": {
1025
+ "values": {
1026
+ "kUnknown": 0,
1027
+ "kBroadbandSource": 1,
1028
+ "kElectricalStimulation": 2,
1029
+ "kOpticalStimulation": 3,
1030
+ "kSpikeSource": 4
1031
+ }
1032
+ }
1033
+ }
1034
+ },
1035
+ "DeviceInfo": {
1036
+ "fields": {
1037
+ "name": {
1038
+ "type": "string",
1039
+ "id": 1
1040
+ },
1041
+ "serial": {
1042
+ "type": "string",
1043
+ "id": 2
1044
+ },
1045
+ "synapseVersion": {
1046
+ "type": "uint32",
1047
+ "id": 3
1048
+ },
1049
+ "firmwareVersion": {
1050
+ "type": "uint32",
1051
+ "id": 4
1052
+ },
1053
+ "status": {
1054
+ "type": "Status",
1055
+ "id": 5
1056
+ },
1057
+ "peripherals": {
1058
+ "rule": "repeated",
1059
+ "type": "Peripheral",
1060
+ "id": 6
1061
+ },
1062
+ "configuration": {
1063
+ "type": "DeviceConfiguration",
1064
+ "id": 7
1065
+ }
1066
+ }
1067
+ },
1068
+ "DeviceConfiguration": {
1069
+ "fields": {
1070
+ "nodes": {
1071
+ "rule": "repeated",
1072
+ "type": "NodeConfig",
1073
+ "id": 1
1074
+ },
1075
+ "connections": {
1076
+ "rule": "repeated",
1077
+ "type": "NodeConnection",
1078
+ "id": 2
1079
+ }
1080
+ }
1081
+ },
1082
+ "DeviceSettings": {
1083
+ "fields": {
1084
+ "name": {
1085
+ "type": "string",
1086
+ "id": 1
1087
+ },
1088
+ "timeSource": {
1089
+ "type": "TimeSource",
1090
+ "id": 2
1091
+ },
1092
+ "fpgaClockFreqHz": {
1093
+ "type": "uint32",
1094
+ "id": 3
1095
+ }
1096
+ }
1097
+ },
1098
+ "GetSettingsQuery": {
1099
+ "fields": {}
1100
+ },
1101
+ "GetSettingsResponse": {
1102
+ "fields": {
1103
+ "settings": {
1104
+ "type": "DeviceSettings",
1105
+ "id": 1
1106
+ }
1107
+ }
1108
+ },
1109
+ "UpdateDeviceSettingsRequest": {
1110
+ "fields": {
1111
+ "settings": {
1112
+ "type": "DeviceSettings",
1113
+ "id": 1
1114
+ }
1115
+ }
1116
+ },
1117
+ "UpdateDeviceSettingsResponse": {
1118
+ "fields": {
1119
+ "status": {
1120
+ "type": "Status",
1121
+ "id": 1
1122
+ },
1123
+ "updatedSettings": {
1124
+ "type": "DeviceSettings",
1125
+ "id": 2
1126
+ }
1127
+ }
1128
+ },
1129
+ "TimeSyncPacket": {
1130
+ "fields": {
1131
+ "clientId": {
1132
+ "type": "fixed32",
1133
+ "id": 1
1134
+ },
1135
+ "sequence": {
1136
+ "type": "fixed32",
1137
+ "id": 2
1138
+ },
1139
+ "clientSendTimeNs": {
1140
+ "type": "fixed64",
1141
+ "id": 3
1142
+ },
1143
+ "serverReceiveTimeNs": {
1144
+ "type": "fixed64",
1145
+ "id": 4
1146
+ },
1147
+ "serverSendTimeNs": {
1148
+ "type": "fixed64",
1149
+ "id": 5
1150
+ },
1151
+ "clientReceiveTimeNs": {
1152
+ "type": "fixed64",
1153
+ "id": 6
1154
+ }
1155
+ }
1156
+ },
1157
+ "TimeSource": {
1158
+ "values": {
1159
+ "TIME_SOURCE_UNKNOWN": 0,
1160
+ "TIME_SOURCE_STEADY_CLOCK": 1,
1161
+ "TIME_SOURCE_SAMPLE_COUNTER": 2
1162
+ }
1163
+ },
1164
+ "ListFilesResponse": {
1165
+ "fields": {
1166
+ "files": {
1167
+ "rule": "repeated",
1168
+ "type": "File",
1169
+ "id": 1
1170
+ }
1171
+ },
1172
+ "nested": {
1173
+ "File": {
1174
+ "fields": {
1175
+ "name": {
1176
+ "type": "string",
1177
+ "id": 1
1178
+ },
1179
+ "size": {
1180
+ "type": "uint32",
1181
+ "id": 2
1182
+ },
1183
+ "created": {
1184
+ "type": "uint32",
1185
+ "id": 3
1186
+ },
1187
+ "modified": {
1188
+ "type": "uint32",
1189
+ "id": 4
1190
+ },
1191
+ "type": {
1192
+ "type": "string",
1193
+ "id": 5
1194
+ }
1195
+ }
1196
+ }
1197
+ }
1198
+ },
1199
+ "WriteFileRequest": {
1200
+ "fields": {
1201
+ "name": {
1202
+ "type": "string",
1203
+ "id": 1
1204
+ },
1205
+ "data": {
1206
+ "type": "bytes",
1207
+ "id": 2
1208
+ }
1209
+ }
1210
+ },
1211
+ "WriteFileResponse": {
1212
+ "fields": {
1213
+ "name": {
1214
+ "type": "string",
1215
+ "id": 1
1216
+ },
1217
+ "bytesWritten": {
1218
+ "type": "uint64",
1219
+ "id": 2
1220
+ }
1221
+ }
1222
+ },
1223
+ "ReadFileRequest": {
1224
+ "fields": {
1225
+ "name": {
1226
+ "type": "string",
1227
+ "id": 1
1228
+ }
1229
+ }
1230
+ },
1231
+ "ReadFileResponse": {
1232
+ "fields": {
1233
+ "name": {
1234
+ "type": "string",
1235
+ "id": 1
1236
+ },
1237
+ "data": {
1238
+ "type": "bytes",
1239
+ "id": 2
1240
+ },
1241
+ "startOffset": {
1242
+ "type": "uint32",
1243
+ "id": 3
1244
+ },
1245
+ "fileTotalLength": {
1246
+ "type": "uint32",
1247
+ "id": 4
1248
+ }
1249
+ }
1250
+ },
1251
+ "DeleteFileRequest": {
1252
+ "fields": {
1253
+ "name": {
1254
+ "type": "string",
1255
+ "id": 1
1256
+ }
1257
+ }
1258
+ },
1259
+ "DeleteFileResponse": {
1260
+ "fields": {
1261
+ "name": {
1262
+ "type": "string",
1263
+ "id": 1
1264
+ },
1265
+ "statusCode": {
1266
+ "type": "StatusCode",
1267
+ "id": 2
1268
+ }
1269
+ }
1270
+ },
1271
+ "LogLevel": {
1272
+ "values": {
1273
+ "LOG_LEVEL_UNKNOWN": 0,
1274
+ "LOG_LEVEL_DEBUG": 1,
1275
+ "LOG_LEVEL_INFO": 2,
1276
+ "LOG_LEVEL_WARNING": 3,
1277
+ "LOG_LEVEL_ERROR": 4,
1278
+ "LOG_LEVEL_CRITICAL": 5
1279
+ }
1280
+ },
1281
+ "LogEntry": {
1282
+ "fields": {
1283
+ "timestampNs": {
1284
+ "type": "uint64",
1285
+ "id": 1
1286
+ },
1287
+ "level": {
1288
+ "type": "LogLevel",
1289
+ "id": 2
1290
+ },
1291
+ "source": {
1292
+ "type": "string",
1293
+ "id": 3
1294
+ },
1295
+ "message": {
1296
+ "type": "string",
1297
+ "id": 4
1298
+ }
1299
+ }
1300
+ },
1301
+ "LogQueryRequest": {
1302
+ "fields": {
1303
+ "startTimeNs": {
1304
+ "type": "uint64",
1305
+ "id": 1
1306
+ },
1307
+ "endTimeNs": {
1308
+ "type": "uint64",
1309
+ "id": 2
1310
+ },
1311
+ "sinceMs": {
1312
+ "type": "uint64",
1313
+ "id": 3
1314
+ },
1315
+ "minLevel": {
1316
+ "type": "LogLevel",
1317
+ "id": 4
1318
+ }
1319
+ }
1320
+ },
1321
+ "LogQueryResponse": {
1322
+ "fields": {
1323
+ "entries": {
1324
+ "rule": "repeated",
1325
+ "type": "LogEntry",
1326
+ "id": 1
1327
+ }
1328
+ }
1329
+ },
1330
+ "TailLogsRequest": {
1331
+ "fields": {
1332
+ "minLevel": {
1333
+ "type": "LogLevel",
1334
+ "id": 1
1335
+ }
1336
+ }
1337
+ },
1338
+ "AppManifest": {
1339
+ "fields": {
1340
+ "name": {
1341
+ "type": "string",
1342
+ "id": 1
1343
+ },
1344
+ "configSchema": {
1345
+ "type": "google.protobuf.Struct",
1346
+ "id": 2
1347
+ },
1348
+ "deviceConfig": {
1349
+ "type": "DeviceConfiguration",
1350
+ "id": 3
1351
+ }
1352
+ }
1353
+ },
1354
+ "PackageMetadata": {
1355
+ "fields": {
1356
+ "name": {
1357
+ "type": "string",
1358
+ "id": 1
1359
+ },
1360
+ "version": {
1361
+ "type": "string",
1362
+ "id": 2
1363
+ },
1364
+ "size": {
1365
+ "type": "uint64",
1366
+ "id": 3
1367
+ },
1368
+ "sha256Sum": {
1369
+ "type": "string",
1370
+ "id": 4
1371
+ }
1372
+ }
1373
+ },
1374
+ "AppPackageChunk": {
1375
+ "oneofs": {
1376
+ "data": {
1377
+ "oneof": [
1378
+ "metadata",
1379
+ "fileChunk"
1380
+ ]
1381
+ }
1382
+ },
1383
+ "fields": {
1384
+ "metadata": {
1385
+ "type": "PackageMetadata",
1386
+ "id": 1
1387
+ },
1388
+ "fileChunk": {
1389
+ "type": "bytes",
1390
+ "id": 2
1391
+ }
1392
+ }
1393
+ },
1394
+ "AppDeployResponse": {
1395
+ "fields": {
1396
+ "status": {
1397
+ "type": "StatusCode",
1398
+ "id": 1
1399
+ },
1400
+ "message": {
1401
+ "type": "string",
1402
+ "id": 2
1403
+ }
1404
+ }
1405
+ },
1406
+ "AppPerformanceSummary": {
1407
+ "fields": {
1408
+ "timestampNs": {
1409
+ "type": "uint64",
1410
+ "id": 1
1411
+ },
1412
+ "functionProfiles": {
1413
+ "rule": "repeated",
1414
+ "type": "FunctionProfile",
1415
+ "id": 2
1416
+ }
1417
+ }
1418
+ },
1419
+ "FunctionProfile": {
1420
+ "fields": {
1421
+ "name": {
1422
+ "type": "string",
1423
+ "id": 1
1424
+ },
1425
+ "callCount": {
1426
+ "type": "uint64",
1427
+ "id": 2
1428
+ },
1429
+ "minDurationNs": {
1430
+ "type": "uint64",
1431
+ "id": 3
1432
+ },
1433
+ "maxDurationNs": {
1434
+ "type": "uint64",
1435
+ "id": 4
1436
+ },
1437
+ "averageDurationNs": {
1438
+ "type": "uint64",
1439
+ "id": 5
1440
+ },
1441
+ "medianDurationNs": {
1442
+ "type": "uint64",
1443
+ "id": 6
1444
+ },
1445
+ "p99DurationNs": {
1446
+ "type": "uint64",
1447
+ "id": 7
1448
+ },
1449
+ "latestDurationNs": {
1450
+ "type": "uint64",
1451
+ "id": 8
1452
+ }
1453
+ }
1454
+ },
1455
+ "DataType": {
1456
+ "values": {
1457
+ "kDataTypeUnknown": 0,
1458
+ "kAny": 1,
1459
+ "kBroadband": 2,
1460
+ "kSpiketrain": 3,
1461
+ "kTimestamps": 4,
1462
+ "kImage": 5,
1463
+ "kWaveforms": 6
1464
+ }
1465
+ },
1466
+ "Tensor": {
1467
+ "fields": {
1468
+ "timestampNs": {
1469
+ "type": "uint64",
1470
+ "id": 1
1471
+ },
1472
+ "shape": {
1473
+ "rule": "repeated",
1474
+ "type": "int32",
1475
+ "id": 2
1476
+ },
1477
+ "dtype": {
1478
+ "type": "DType",
1479
+ "id": 3
1480
+ },
1481
+ "endianness": {
1482
+ "type": "Endianness",
1483
+ "id": 4
1484
+ },
1485
+ "data": {
1486
+ "type": "bytes",
1487
+ "id": 5
1488
+ }
1489
+ },
1490
+ "nested": {
1491
+ "DType": {
1492
+ "values": {
1493
+ "DT_INVALID": 0,
1494
+ "DT_FLOAT": 1,
1495
+ "DT_DOUBLE": 2,
1496
+ "DT_UINT8": 3,
1497
+ "DT_UINT16": 4,
1498
+ "DT_UINT32": 5,
1499
+ "DT_UINT64": 6,
1500
+ "DT_INT8": 7,
1501
+ "DT_INT16": 8,
1502
+ "DT_INT32": 9,
1503
+ "DT_INT64": 10,
1504
+ "DT_BOOL": 11
1505
+ }
1506
+ },
1507
+ "Endianness": {
1508
+ "values": {
1509
+ "TENSOR_LITTLE_ENDIAN": 0,
1510
+ "TENSOR_BIG_ENDIAN": 1
1511
+ }
1512
+ }
1513
+ }
1514
+ },
1515
+ "BroadbandFrame": {
1516
+ "fields": {
1517
+ "timestampNs": {
1518
+ "type": "uint64",
1519
+ "id": 1
1520
+ },
1521
+ "sequenceNumber": {
1522
+ "type": "uint64",
1523
+ "id": 2
1524
+ },
1525
+ "frameData": {
1526
+ "rule": "repeated",
1527
+ "type": "sint32",
1528
+ "id": 3
1529
+ },
1530
+ "sampleRateHz": {
1531
+ "type": "uint32",
1532
+ "id": 4
1533
+ },
1534
+ "channelRanges": {
1535
+ "rule": "repeated",
1536
+ "type": "ChannelRange",
1537
+ "id": 5
1538
+ },
1539
+ "unixTimestampNs": {
1540
+ "type": "uint64",
1541
+ "id": 6
1542
+ }
1543
+ }
1544
+ },
1545
+ "Timeseries": {
1546
+ "fields": {
1547
+ "id": {
1548
+ "type": "uint32",
1549
+ "id": 1
1550
+ },
1551
+ "datapoints": {
1552
+ "rule": "repeated",
1553
+ "type": "Datapoint",
1554
+ "id": 2
1555
+ }
1556
+ },
1557
+ "nested": {
1558
+ "Datapoint": {
1559
+ "fields": {
1560
+ "timestampNs": {
1561
+ "type": "uint64",
1562
+ "id": 1
1563
+ },
1564
+ "sample": {
1565
+ "type": "sint32",
1566
+ "id": 2
1567
+ }
1568
+ }
1569
+ }
1570
+ }
1571
+ },
1572
+ "AnnotatedTensor": {
1573
+ "fields": {
1574
+ "tensor": {
1575
+ "type": "Tensor",
1576
+ "id": 1
1577
+ },
1578
+ "metadata": {
1579
+ "keyType": "string",
1580
+ "type": "google.protobuf.Value",
1581
+ "id": 2
1582
+ }
1583
+ }
1584
+ }
1585
+ }
1586
+ },
1587
+ "google": {
1588
+ "nested": {
1589
+ "protobuf": {
1590
+ "nested": {
1591
+ "Struct": {
1592
+ "fields": {
1593
+ "fields": {
1594
+ "keyType": "string",
1595
+ "type": "Value",
1596
+ "id": 1
1597
+ }
1598
+ }
1599
+ },
1600
+ "Value": {
1601
+ "oneofs": {
1602
+ "kind": {
1603
+ "oneof": [
1604
+ "nullValue",
1605
+ "numberValue",
1606
+ "stringValue",
1607
+ "boolValue",
1608
+ "structValue",
1609
+ "listValue"
1610
+ ]
1611
+ }
1612
+ },
1613
+ "fields": {
1614
+ "nullValue": {
1615
+ "type": "NullValue",
1616
+ "id": 1
1617
+ },
1618
+ "numberValue": {
1619
+ "type": "double",
1620
+ "id": 2
1621
+ },
1622
+ "stringValue": {
1623
+ "type": "string",
1624
+ "id": 3
1625
+ },
1626
+ "boolValue": {
1627
+ "type": "bool",
1628
+ "id": 4
1629
+ },
1630
+ "structValue": {
1631
+ "type": "Struct",
1632
+ "id": 5
1633
+ },
1634
+ "listValue": {
1635
+ "type": "ListValue",
1636
+ "id": 6
1637
+ }
1638
+ }
1639
+ },
1640
+ "NullValue": {
1641
+ "values": {
1642
+ "NULL_VALUE": 0
1643
+ }
1644
+ },
1645
+ "ListValue": {
1646
+ "fields": {
1647
+ "values": {
1648
+ "rule": "repeated",
1649
+ "type": "Value",
1650
+ "id": 1
1651
+ }
1652
+ }
1653
+ },
1654
+ "Empty": {
1655
+ "fields": {}
1656
+ }
1657
+ }
1658
+ }
1659
+ }
1660
+ }
1661
+ }
1662
+ }