@voltras/node-sdk 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +122 -31
  2. package/dist/cjs/bluetooth/adapters/native.js +36 -34
  3. package/dist/cjs/bluetooth/adapters/native.js.map +1 -1
  4. package/dist/cjs/bluetooth/adapters/node.js +9 -7
  5. package/dist/cjs/bluetooth/adapters/node.js.map +1 -1
  6. package/dist/cjs/bluetooth/adapters/web-bluetooth-base.js +6 -4
  7. package/dist/cjs/bluetooth/adapters/web-bluetooth-base.js.map +1 -1
  8. package/dist/cjs/bluetooth/adapters/web.js +7 -5
  9. package/dist/cjs/bluetooth/adapters/web.js.map +1 -1
  10. package/dist/cjs/bluetooth/controllers/scanner-controller.js +0 -2
  11. package/dist/cjs/bluetooth/controllers/scanner-controller.js.map +1 -1
  12. package/dist/cjs/index.js +19 -10
  13. package/dist/cjs/index.js.map +1 -1
  14. package/dist/cjs/react/hooks.js +2 -6
  15. package/dist/cjs/react/hooks.js.map +1 -1
  16. package/dist/cjs/sdk/notification-dispatcher.js +47 -0
  17. package/dist/cjs/sdk/notification-dispatcher.js.map +1 -0
  18. package/dist/cjs/sdk/reconnect-handler.js +61 -0
  19. package/dist/cjs/sdk/reconnect-handler.js.map +1 -0
  20. package/dist/cjs/sdk/voltra-client.js +206 -72
  21. package/dist/cjs/sdk/voltra-client.js.map +1 -1
  22. package/dist/cjs/shared/index.js +5 -1
  23. package/dist/cjs/shared/index.js.map +1 -1
  24. package/dist/cjs/shared/logger.js +54 -0
  25. package/dist/cjs/shared/logger.js.map +1 -0
  26. package/dist/cjs/voltra/index.js +15 -12
  27. package/dist/cjs/voltra/index.js.map +1 -1
  28. package/dist/cjs/voltra/models/device.js +13 -0
  29. package/dist/cjs/voltra/models/device.js.map +1 -1
  30. package/dist/cjs/voltra/protocol/commands.js +127 -210
  31. package/dist/cjs/voltra/protocol/commands.js.map +1 -1
  32. package/dist/cjs/voltra/protocol/constants/ble-config.js +24 -0
  33. package/dist/cjs/voltra/protocol/constants/ble-config.js.map +1 -0
  34. package/dist/cjs/voltra/protocol/constants/connection-commands.js +55 -0
  35. package/dist/cjs/voltra/protocol/constants/connection-commands.js.map +1 -0
  36. package/dist/cjs/voltra/protocol/constants/enums.js +117 -0
  37. package/dist/cjs/voltra/protocol/constants/enums.js.map +1 -0
  38. package/dist/cjs/voltra/protocol/constants/index.js +33 -0
  39. package/dist/cjs/voltra/protocol/constants/index.js.map +1 -0
  40. package/dist/cjs/voltra/protocol/constants/message-types.js +75 -0
  41. package/dist/cjs/voltra/protocol/constants/message-types.js.map +1 -0
  42. package/dist/cjs/voltra/protocol/constants/timing.js +21 -0
  43. package/dist/cjs/voltra/protocol/constants/timing.js.map +1 -0
  44. package/dist/cjs/voltra/protocol/data/protocol-data.generated.js +7 -0
  45. package/dist/cjs/voltra/protocol/data/protocol-data.generated.js.map +1 -0
  46. package/dist/cjs/voltra/protocol/telemetry-decoder.js +130 -6
  47. package/dist/cjs/voltra/protocol/telemetry-decoder.js.map +1 -1
  48. package/dist/cjs/voltra/protocol/types.js +9 -0
  49. package/dist/cjs/voltra/protocol/types.js.map +1 -0
  50. package/dist/esm/bluetooth/adapters/native.js +36 -34
  51. package/dist/esm/bluetooth/adapters/native.js.map +1 -1
  52. package/dist/esm/bluetooth/adapters/node.js +9 -7
  53. package/dist/esm/bluetooth/adapters/node.js.map +1 -1
  54. package/dist/esm/bluetooth/adapters/web-bluetooth-base.js +6 -4
  55. package/dist/esm/bluetooth/adapters/web-bluetooth-base.js.map +1 -1
  56. package/dist/esm/bluetooth/adapters/web.js +7 -5
  57. package/dist/esm/bluetooth/adapters/web.js.map +1 -1
  58. package/dist/esm/bluetooth/controllers/scanner-controller.js +0 -2
  59. package/dist/esm/bluetooth/controllers/scanner-controller.js.map +1 -1
  60. package/dist/esm/index.js +3 -6
  61. package/dist/esm/index.js.map +1 -1
  62. package/dist/esm/react/hooks.js +1 -5
  63. package/dist/esm/react/hooks.js.map +1 -1
  64. package/dist/esm/sdk/notification-dispatcher.js +44 -0
  65. package/dist/esm/sdk/notification-dispatcher.js.map +1 -0
  66. package/dist/esm/sdk/reconnect-handler.js +57 -0
  67. package/dist/esm/sdk/reconnect-handler.js.map +1 -0
  68. package/dist/esm/sdk/voltra-client.js +204 -70
  69. package/dist/esm/sdk/voltra-client.js.map +1 -1
  70. package/dist/esm/shared/index.js +1 -0
  71. package/dist/esm/shared/index.js.map +1 -1
  72. package/dist/esm/shared/logger.js +49 -0
  73. package/dist/esm/shared/logger.js.map +1 -0
  74. package/dist/esm/voltra/index.js +3 -8
  75. package/dist/esm/voltra/index.js.map +1 -1
  76. package/dist/esm/voltra/models/device.js +13 -0
  77. package/dist/esm/voltra/models/device.js.map +1 -1
  78. package/dist/esm/voltra/protocol/commands.js +117 -209
  79. package/dist/esm/voltra/protocol/commands.js.map +1 -1
  80. package/dist/esm/voltra/protocol/constants/ble-config.js +18 -0
  81. package/dist/esm/voltra/protocol/constants/ble-config.js.map +1 -0
  82. package/dist/esm/voltra/protocol/constants/connection-commands.js +49 -0
  83. package/dist/esm/voltra/protocol/constants/connection-commands.js.map +1 -0
  84. package/dist/esm/voltra/protocol/constants/enums.js +114 -0
  85. package/dist/esm/voltra/protocol/constants/enums.js.map +1 -0
  86. package/dist/esm/voltra/protocol/constants/index.js +12 -0
  87. package/dist/esm/voltra/protocol/constants/index.js.map +1 -0
  88. package/dist/esm/voltra/protocol/constants/message-types.js +69 -0
  89. package/dist/esm/voltra/protocol/constants/message-types.js.map +1 -0
  90. package/dist/esm/voltra/protocol/constants/timing.js +18 -0
  91. package/dist/esm/voltra/protocol/constants/timing.js.map +1 -0
  92. package/dist/esm/voltra/protocol/data/protocol-data.generated.js +5 -0
  93. package/dist/esm/voltra/protocol/data/protocol-data.generated.js.map +1 -0
  94. package/dist/esm/voltra/protocol/telemetry-decoder.js +132 -8
  95. package/dist/esm/voltra/protocol/telemetry-decoder.js.map +1 -1
  96. package/dist/esm/voltra/protocol/types.js +8 -0
  97. package/dist/esm/voltra/protocol/types.js.map +1 -0
  98. package/dist/types/bluetooth/adapters/native.d.ts.map +1 -1
  99. package/dist/types/bluetooth/adapters/node.d.ts.map +1 -1
  100. package/dist/types/bluetooth/adapters/web-bluetooth-base.d.ts.map +1 -1
  101. package/dist/types/bluetooth/adapters/web.d.ts.map +1 -1
  102. package/dist/types/bluetooth/controllers/scanner-controller.d.ts.map +1 -1
  103. package/dist/types/index.d.ts +4 -3
  104. package/dist/types/index.d.ts.map +1 -1
  105. package/dist/types/react/hooks.d.ts.map +1 -1
  106. package/dist/types/sdk/index.d.ts +2 -1
  107. package/dist/types/sdk/index.d.ts.map +1 -1
  108. package/dist/types/sdk/notification-dispatcher.d.ts +29 -0
  109. package/dist/types/sdk/notification-dispatcher.d.ts.map +1 -0
  110. package/dist/types/sdk/reconnect-handler.d.ts +55 -0
  111. package/dist/types/sdk/reconnect-handler.d.ts.map +1 -0
  112. package/dist/types/sdk/types.d.ts +35 -0
  113. package/dist/types/sdk/types.d.ts.map +1 -1
  114. package/dist/types/sdk/voltra-client.d.ts +77 -2
  115. package/dist/types/sdk/voltra-client.d.ts.map +1 -1
  116. package/dist/types/shared/index.d.ts +1 -0
  117. package/dist/types/shared/index.d.ts.map +1 -1
  118. package/dist/types/shared/logger.d.ts +39 -0
  119. package/dist/types/shared/logger.d.ts.map +1 -0
  120. package/dist/types/voltra/index.d.ts +3 -3
  121. package/dist/types/voltra/index.d.ts.map +1 -1
  122. package/dist/types/voltra/models/device.d.ts +11 -1
  123. package/dist/types/voltra/models/device.d.ts.map +1 -1
  124. package/dist/types/voltra/protocol/commands.d.ts +47 -87
  125. package/dist/types/voltra/protocol/commands.d.ts.map +1 -1
  126. package/dist/types/voltra/protocol/constants/ble-config.d.ts +16 -0
  127. package/dist/types/voltra/protocol/constants/ble-config.d.ts.map +1 -0
  128. package/dist/types/voltra/protocol/constants/connection-commands.d.ts +37 -0
  129. package/dist/types/voltra/protocol/constants/connection-commands.d.ts.map +1 -0
  130. package/dist/types/voltra/protocol/constants/enums.d.ts +72 -0
  131. package/dist/types/voltra/protocol/constants/enums.d.ts.map +1 -0
  132. package/dist/types/voltra/protocol/constants/index.d.ts +12 -0
  133. package/dist/types/voltra/protocol/constants/index.d.ts.map +1 -0
  134. package/dist/types/voltra/protocol/constants/message-types.d.ts +57 -0
  135. package/dist/types/voltra/protocol/constants/message-types.d.ts.map +1 -0
  136. package/dist/types/voltra/protocol/constants/timing.d.ts +18 -0
  137. package/dist/types/voltra/protocol/constants/timing.d.ts.map +1 -0
  138. package/dist/types/voltra/protocol/data/protocol-data.generated.d.ts +3 -0
  139. package/dist/types/voltra/protocol/data/protocol-data.generated.d.ts.map +1 -0
  140. package/dist/types/voltra/protocol/telemetry-decoder.d.ts +15 -2
  141. package/dist/types/voltra/protocol/telemetry-decoder.d.ts.map +1 -1
  142. package/dist/types/voltra/protocol/types.d.ts +249 -0
  143. package/dist/types/voltra/protocol/types.d.ts.map +1 -0
  144. package/package.json +9 -8
  145. package/dist/cjs/voltra/protocol/constants.js +0 -136
  146. package/dist/cjs/voltra/protocol/constants.js.map +0 -1
  147. package/dist/cjs/voltra/protocol/data/chains.json +0 -830
  148. package/dist/cjs/voltra/protocol/data/eccentric.json +0 -1598
  149. package/dist/cjs/voltra/protocol/data/protocol.json +0 -54
  150. package/dist/cjs/voltra/protocol/data/weights.json +0 -62
  151. package/dist/esm/voltra/protocol/constants.js +0 -130
  152. package/dist/esm/voltra/protocol/constants.js.map +0 -1
  153. package/dist/esm/voltra/protocol/data/chains.json +0 -830
  154. package/dist/esm/voltra/protocol/data/eccentric.json +0 -1598
  155. package/dist/esm/voltra/protocol/data/protocol.json +0 -54
  156. package/dist/esm/voltra/protocol/data/weights.json +0 -62
  157. package/dist/types/voltra/protocol/constants.d.ts +0 -103
  158. package/dist/types/voltra/protocol/constants.d.ts.map +0 -1
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Protocol Enums
3
+ *
4
+ * Movement phases, training modes, and parameter IDs with
5
+ * their human-readable name maps.
6
+ */
7
+ // =============================================================================
8
+ // Movement Phases
9
+ // =============================================================================
10
+ /**
11
+ * Movement phase during workout.
12
+ * Values match protocol.json telemetry.phases.
13
+ */
14
+ export var MovementPhase;
15
+ (function (MovementPhase) {
16
+ MovementPhase[MovementPhase["IDLE"] = 0] = "IDLE";
17
+ MovementPhase[MovementPhase["CONCENTRIC"] = 1] = "CONCENTRIC";
18
+ MovementPhase[MovementPhase["HOLD"] = 2] = "HOLD";
19
+ MovementPhase[MovementPhase["ECCENTRIC"] = 3] = "ECCENTRIC";
20
+ MovementPhase[MovementPhase["UNKNOWN"] = -1] = "UNKNOWN";
21
+ })(MovementPhase || (MovementPhase = {}));
22
+ /**
23
+ * Human-readable phase names.
24
+ */
25
+ export const PhaseNames = {
26
+ [MovementPhase.IDLE]: 'Idle',
27
+ [MovementPhase.CONCENTRIC]: 'Pulling',
28
+ [MovementPhase.HOLD]: 'Hold',
29
+ [MovementPhase.ECCENTRIC]: 'Lowering',
30
+ [MovementPhase.UNKNOWN]: 'Unknown',
31
+ };
32
+ // =============================================================================
33
+ // Parameter IDs
34
+ // =============================================================================
35
+ /**
36
+ * Parameter IDs for device commands.
37
+ * These identify which parameter is being set in 19-byte commands.
38
+ */
39
+ export var ParameterId;
40
+ (function (ParameterId) {
41
+ /** Base weight setting */
42
+ ParameterId[ParameterId["BASE_WEIGHT"] = 34366] = "BASE_WEIGHT";
43
+ /** Chains resistance */
44
+ ParameterId[ParameterId["CHAINS"] = 34622] = "CHAINS";
45
+ /** Eccentric adjustment */
46
+ ParameterId[ParameterId["ECCENTRIC"] = 34878] = "ECCENTRIC";
47
+ /** Training mode */
48
+ ParameterId[ParameterId["TRAINING_MODE"] = 45135] = "TRAINING_MODE";
49
+ /** Inverse chains resistance */
50
+ ParameterId[ParameterId["INVERSE_CHAINS"] = 45139] = "INVERSE_CHAINS";
51
+ })(ParameterId || (ParameterId = {}));
52
+ /**
53
+ * Human-readable parameter names.
54
+ */
55
+ export const ParameterNames = {
56
+ [ParameterId.BASE_WEIGHT]: 'Base Weight',
57
+ [ParameterId.CHAINS]: 'Chains',
58
+ [ParameterId.ECCENTRIC]: 'Eccentric',
59
+ [ParameterId.TRAINING_MODE]: 'Training Mode',
60
+ [ParameterId.INVERSE_CHAINS]: 'Inverse Chains',
61
+ };
62
+ // =============================================================================
63
+ // Training Modes
64
+ // =============================================================================
65
+ /**
66
+ * Training mode values for ParameterId.TRAINING_MODE.
67
+ * Values are 2-byte little-endian uint16.
68
+ */
69
+ export var TrainingMode;
70
+ (function (TrainingMode) {
71
+ /** Idle (0x0000) */
72
+ TrainingMode[TrainingMode["Idle"] = 0] = "Idle";
73
+ /** Weight Training (0x0001) */
74
+ TrainingMode[TrainingMode["WeightTraining"] = 1] = "WeightTraining";
75
+ /** Resistance Band (0x0002) */
76
+ TrainingMode[TrainingMode["ResistanceBand"] = 2] = "ResistanceBand";
77
+ /** Rowing (0x0003) */
78
+ TrainingMode[TrainingMode["Rowing"] = 3] = "Rowing";
79
+ /** Damper (0x0004) */
80
+ TrainingMode[TrainingMode["Damper"] = 4] = "Damper";
81
+ /** Custom Curves (0x0006) */
82
+ TrainingMode[TrainingMode["CustomCurves"] = 6] = "CustomCurves";
83
+ /** Isokinetic (0x0007) */
84
+ TrainingMode[TrainingMode["Isokinetic"] = 7] = "Isokinetic";
85
+ /** Isometric (0x0008) */
86
+ TrainingMode[TrainingMode["Isometric"] = 8] = "Isometric";
87
+ })(TrainingMode || (TrainingMode = {}));
88
+ /**
89
+ * Human-readable training mode names.
90
+ */
91
+ export const TrainingModeNames = {
92
+ [TrainingMode.Idle]: 'Idle',
93
+ [TrainingMode.WeightTraining]: 'Weight Training',
94
+ [TrainingMode.ResistanceBand]: 'Resistance Band',
95
+ [TrainingMode.Rowing]: 'Rowing',
96
+ [TrainingMode.Damper]: 'Damper',
97
+ [TrainingMode.CustomCurves]: 'Custom Curves',
98
+ [TrainingMode.Isokinetic]: 'Isokinetic',
99
+ [TrainingMode.Isometric]: 'Isometric',
100
+ };
101
+ /**
102
+ * Valid training mode values (for validation).
103
+ */
104
+ export const VALID_TRAINING_MODES = [
105
+ TrainingMode.Idle,
106
+ TrainingMode.WeightTraining,
107
+ TrainingMode.ResistanceBand,
108
+ TrainingMode.Rowing,
109
+ TrainingMode.Damper,
110
+ TrainingMode.CustomCurves,
111
+ TrainingMode.Isokinetic,
112
+ TrainingMode.Isometric,
113
+ ];
114
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../../src/voltra/protocol/constants/enums.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Protocol Constants
3
+ *
4
+ * Re-exports all protocol constants from focused modules.
5
+ * Import from this barrel to keep existing import paths working.
6
+ */
7
+ export { BLE } from './ble-config';
8
+ export { Timing } from './timing';
9
+ export { Auth, Init, Workout } from './connection-commands';
10
+ export { MessageTypes, TelemetryOffsets, NotificationConfigs, Uint16ParamIds, ParamIdHex, TrainingModeValues, } from './message-types';
11
+ export { MovementPhase, PhaseNames, ParameterId, ParameterNames, TrainingMode, TrainingModeNames, VALID_TRAINING_MODES, } from './enums';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/voltra/protocol/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Message Types & Telemetry Configuration
3
+ *
4
+ * Notification message identifiers, telemetry byte offsets,
5
+ * notification parsing configs, and parameter ID mappings.
6
+ * All values loaded from protocol.json for single source of truth.
7
+ */
8
+ import { hexToBytes } from '../../../shared/utils';
9
+ import protocolData from '../data/protocol-data.generated';
10
+ const protocol = protocolData;
11
+ // =============================================================================
12
+ // Message Type Headers
13
+ // =============================================================================
14
+ /**
15
+ * Message type identifiers (first 4 bytes of notifications).
16
+ */
17
+ export const MessageTypes = {
18
+ /** Real-time telemetry stream (~11 Hz) */
19
+ TELEMETRY_STREAM: hexToBytes(protocol.telemetry.messageTypes.stream),
20
+ /** Rep completion summary */
21
+ REP_SUMMARY: hexToBytes(protocol.telemetry.messageTypes.repSummary),
22
+ /** Set completion summary */
23
+ SET_SUMMARY: hexToBytes(protocol.telemetry.messageTypes.setSummary),
24
+ /** Status update */
25
+ STATUS_UPDATE: hexToBytes(protocol.telemetry.messageTypes.statusUpdate),
26
+ };
27
+ // =============================================================================
28
+ // Telemetry Offsets
29
+ // =============================================================================
30
+ /**
31
+ * Byte offsets for parsing telemetry stream messages.
32
+ */
33
+ export const TelemetryOffsets = {
34
+ SEQUENCE: protocol.telemetry.offsets.sequence, // 2 bytes, little-endian
35
+ PHASE: protocol.telemetry.offsets.phase, // 1 byte
36
+ POSITION: protocol.telemetry.offsets.position, // 2 bytes, little-endian unsigned
37
+ FORCE: protocol.telemetry.offsets.force, // 2 bytes, little-endian signed
38
+ VELOCITY: protocol.telemetry.offsets.velocity, // 2 bytes, little-endian unsigned
39
+ };
40
+ // =============================================================================
41
+ // Notification Parsing Configs
42
+ // =============================================================================
43
+ /**
44
+ * Notification parsing configurations loaded from protocol.json.
45
+ * Used to parse various notification types from the device.
46
+ */
47
+ export const NotificationConfigs = protocol.telemetry.notifications;
48
+ /**
49
+ * Parameter IDs as hex strings (for matching in notifications).
50
+ */
51
+ export const ParamIdHex = {
52
+ BASE_WEIGHT: protocol.telemetry.paramIds.baseWeight,
53
+ CHAINS: protocol.telemetry.paramIds.chains,
54
+ ECCENTRIC: protocol.telemetry.paramIds.eccentric,
55
+ TRAINING_MODE: protocol.telemetry.paramIds.trainingMode,
56
+ INVERSE_CHAINS: protocol.telemetry.paramIds.inverseChains,
57
+ UNKNOWN_893E: protocol.telemetry.paramIds.unknown893e,
58
+ };
59
+ /**
60
+ * Param IDs that use 2-byte (uint16) values in notifications.
61
+ * All other param IDs use 1-byte (uint8) values.
62
+ */
63
+ export const Uint16ParamIds = new Set(protocol.telemetry.uint16ParamIds ?? []);
64
+ /**
65
+ * Training mode values from protocol.json.
66
+ * These map to the TrainingMode enum values.
67
+ */
68
+ export const TrainingModeValues = protocol.telemetry.trainingModes;
69
+ //# sourceMappingURL=message-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-types.js","sourceRoot":"","sources":["../../../../../src/voltra/protocol/constants/message-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,YAAY,MAAM,iCAAiC,CAAC;AAG3D,MAAM,QAAQ,GAAG,YAA4B,CAAC;AAE9C,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,0CAA0C;IAC1C,gBAAgB,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;IACpE,6BAA6B;IAC7B,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC;IACnE,6BAA6B;IAC7B,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC;IACnE,oBAAoB;IACpB,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;CAC/D,CAAC;AAEX,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,yBAAyB;IACxE,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS;IAClD,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,kCAAkC;IACjF,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,gCAAgC;IACzE,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,kCAAkC;CACzE,CAAC;AAEX,gFAAgF;AAChF,+BAA+B;AAC/B,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU;IACnD,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM;IAC1C,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS;IAChD,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY;IACvD,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa;IACzD,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW;CAC7C,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;AAEpG;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Timing Configuration
3
+ *
4
+ * Delays and timeouts for device communication.
5
+ */
6
+ export const Timing = {
7
+ /** Delay between init commands (ms) */
8
+ INIT_COMMAND_DELAY_MS: 20,
9
+ /** Delay between dual commands like chains/eccentric (ms) */
10
+ DUAL_COMMAND_DELAY_MS: 500,
11
+ /** Timeout for authentication response (ms) */
12
+ AUTH_TIMEOUT_MS: 3000,
13
+ /** Minimum responses expected during auth */
14
+ MIN_AUTH_RESPONSES: 2,
15
+ /** Minimum responses expected after commands */
16
+ MIN_COMMAND_RESPONSES: 4,
17
+ };
18
+ //# sourceMappingURL=timing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timing.js","sourceRoot":"","sources":["../../../../../src/voltra/protocol/constants/timing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,uCAAuC;IACvC,qBAAqB,EAAE,EAAE;IACzB,6DAA6D;IAC7D,qBAAqB,EAAE,GAAG;IAC1B,+CAA+C;IAC/C,eAAe,EAAE,IAAI;IACrB,6CAA6C;IAC7C,kBAAkB,EAAE,CAAC;IACrB,gDAAgD;IAChD,qBAAqB,EAAE,CAAC;CAChB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // @generated — do not edit. Regenerate: npm run build (from voltra-private)
2
+ /* eslint-disable */
3
+ const _e = 'eyJ2ZXJzaW9uIjoiMi4wLjAiLCJibGUiOnsic2VydmljZVV1aWQiOiJFNERBREEzNC0wODY3LTg3ODMtOUY3MC0yQ0EyOTIxNkM3RTQiLCJub3RpZnlDaGFyVXVpZCI6IjU1Q0ExRTUyLTczNTQtMjVERS02QUZDLUI3REYxRTg4MTZBQyIsIndyaXRlQ2hhclV1aWQiOiJBMDEwODkxRC1GNTBGLTQ0RjAtOTAxRi05QTI0MjFBOUUwNTAiLCJkZXZpY2VOYW1lUHJlZml4IjoiVlRSLSJ9LCJjb21tYW5kcyI6eyJhdXRoIjp7ImlwaG9uZSI6IjU1MjkwNGM5MDExMDAwMDAyMDAwNGY2OTUwNjg2ZjZlNjUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4NGFiMWE1ZjI5MjAwMTcyZDgiLCJpcGFkIjoiNTUyOTA0YzkwMTEwMDAwMDIwMDA0ZjY5NTA2MTY0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg0YWIxYTVmMjkyMDAxZWE0ZiJ9LCJpbml0IjpbIjU1MGYwODAxYWFkMjAwMDAyMDAwZmYwMGFhMDQxOSIsIjU1MWYwNDRlYWExMDAwMDAyMDAwMjc4MTEwNjVmOGM2YjkxNzkwNDdiNzk3ZDMzNTFjMDRiZmZiOTI1Y2Q2Il0sIndvcmtvdXQiOnsicHJlcGFyZSI6IjU1MTIwNGM3YWExMDE0MDAyMDAwMTEwMTAwYjA0ZjAxZGIxMCIsInNldHVwIjoiNTUxMzA0MDNhYTEwMTUwMDIwMDAwZjAyMDA2YTUwODIzZThmMmYiLCJnbyI6IjU1MTMwNDAzYWExMDE2MDAyMDAwMTEwMTAwODkzZTA1MDA4MTczIiwic3RvcCI6IjU1MTMwNDAzYWExMDFiMDAyMDAwMTEwMTAwODkzZTA0MDAzN2RkIn0sIm1vZGVzIjp7ImlkbGUiOiI1NTEzMDQwM2FhMTAwMDIwMjAwMDExMDEwMGIwNGYwMDAwMmI0YSIsIndlaWdodFRyYWluaW5nIjoiNTUxMzA0MDNhYTEwMDAyMDIwMDAxMTAxMDBiMDRmMDEwMGYzNTMiLCJyZXNpc3RhbmNlQmFuZCI6IjU1MTMwNDAzYWExMDAwMjAyMDAwMTEwMTAwYjA0ZjAyMDA5Yjc5Iiwicm93aW5nIjoiNTUxMzA0MDNhYTEwMDAyMDIwMDAxMTAxMDBiMDRmMDMwMDQzNjAiLCJkYW1wZXIiOiI1NTEzMDQwM2FhMTAwMDIwMjAwMDExMDEwMGIwNGYwNDAwNGIyZCIsImN1c3RvbUN1cnZlcyI6IjU1MTMwNDAzYWExMDAwMjAyMDAwMTEwMTAwYjA0ZjA2MDBmYjFlIiwiaXNva2luZXRpYyI6IjU1MTMwNDAzYWExMDAwMjAyMDAwMTEwMTAwYjA0ZjA3MDAyMzA3IiwiaXNvbWV0cmljIjoiNTUxMzA0MDNhYTEwMDAyMDIwMDAxMTAxMDBiMDRmMDgwMGViODQifSwid2VpZ2h0cyI6eyI1IjoiNTUxMzA0MDNhYTEwMDAyMDIwMDAxMTAxMDA4NjNlMDUwMGZmZTkiLCI2IjoiNTUxMzA0MDNhYTEwMDEyMDIwMDAxMTAxMDA4NjNlMDYwMDA2OTYiLCI3IjoiNTUxMzA0MDNhYTEwMDIyMDIwMDAxMTAxMDA4NjNlMDcwMDZkNzEiLCI4IjoiNTUxMzA0MDNhYTEwMDMyMDIwMDAxMTAxMDA4NjNlMDgwMDM0YTciLCI5IjoiNTUxMzA0MDNhYTEwMDQyMDIwMDAxMTAxMDA4NjNlMDkwMDBhMWUiLCIxMCI6IjU1MTMwNDAzYWExMDA1MjAyMDAwMTEwMTAwODYzZTBhMDBmMzYxIiwiMTEiOiI1NTEzMDQwM2FhMTAwNjIwMjAwMDExMDEwMDg2M2UwYjAwOTg4NiIsIjEyIjoiNTUxMzA0MDNhYTEwMDcyMDIwMDAxMTAxMDA4NjNlMGMwMDAxOWUiLCIxMyI6IjU1MTMwNDAzYWExMDA4MjAyMDAwMTEwMTAwODYzZTBkMDA5NTliIiwiMTQiOiI1NTEzMDQwM2FhMTAwOTIwMjAwMDExMDEwMDg2M2UwZTAwNmNlNCIsIjE1IjoiNTUxMzA0MDNhYTEwMGEyMDIwMDAxMTAxMDA4NjNlMGYwMDA3MDMiLCIxNiI6IjU1MTMwNDAzYWExMDBiMjAyMDAwMTEwMTAwODYzZTEwMDBjZjQwIiwiMTciOiI1NTEzMDQwM2FhMTAwYzIwMjAwMDExMDEwMDg2M2UxMTAwZjFmOSIsIjE4IjoiNTUxMzA0MDNhYTEwMGQyMDIwMDAxMTAxMDA4NjNlMTIwMDA4ODYiLCIxOSI6IjU1MTMwNDAzYWExMDBlMjAyMDAwMTEwMTAwODYzZTEzMDA2MzYxIiwiMjAiOiI1NTEzMDQwM2FhMTAwZjIwMjAwMDExMDEwMDg2M2UxNDAwZmE3OSIsIjIxIjoiNTUxMzA0MDNhYTEwMTAyMDIwMDAxMTAxMDA4NjNlMTUwMDJiMGQiLCIyMiI6IjU1MTMwNDAzYWExMDExMjAyMDAwMTEwMTAwODYzZTE2MDBkMjcyIiwiMjMiOiI1NTEzMDQwM2FhMTAxMjIwMjAwMDExMDEwMDg2M2UxNzAwYjk5NSIsIjI0IjoiNTUxMzA0MDNhYTEwMTMyMDIwMDAxMTAxMDA4NjNlMTgwMGUwNDMiLCIyNSI6IjU1MTMwNDAzYWExMDE0MjAyMDAwMTEwMTAwODYzZTE5MDBkZWZhIiwiMjYiOiI1NTEzMDQwM2FhMTAxNTIwMjAwMDExMDEwMDg2M2UxYTAwMjc4NSIsIjI3IjoiNTUxMzA0MDNhYTEwMTYyMDIwMDAxMTAxMDA4NjNlMWIwMDRjNjIiLCIyOCI6IjU1MTMwNDAzYWExMDE3MjAyMDAwMTEwMTAwODYzZTFjMDBkNTdhIiwiMjkiOiI1NTEzMDQwM2FhMTAxODIwMjAwMDExMDEwMDg2M2UxZDAwNDE3ZiIsIjMwIjoiNTUxMzA0MDNhYTEwMTkyMDIwMDAxMTAxMDA4NjNlMWUwMGI4MDAiLCIzMSI6IjU1MTMwNDAzYWExMDFhMjAyMDAwMTEwMTAwODYzZTFmMDBkM2U3IiwiMzIiOiI1NTEzMDQwM2FhMTAxYjIwMjAwMDExMDEwMDg2M2UyMDAwMjg4NyIsIjMzIjoiNTUxMzA0MDNhYTEwMWMyMDIwMDAxMTAxMDA4NjNlMjEwMDE2M2UiLCIzNCI6IjU1MTMwNDAzYWExMDFkMjAyMDAwMTEwMTAwODYzZTIyMDBlZjQxIiwiMzUiOiI1NTEzMDQwM2FhMTAxZTIwMjAwMDExMDEwMDg2M2UyMzAwODRhNiIsIjM2IjoiNTUxMzA0MDNhYTEwMWYyMDIwMDAxMTAxMDA4NjNlMjQwMDFkYmUiLCIzNyI6IjU1MTMwNDAzYWExMDIwMjAyMDAwMTEwMTAwODYzZTI1MDA0NjI4IiwiMzgiOiI1NTEzMDQwM2FhMTAyMTIwMjAwMDExMDEwMDg2M2UyNjAwYmY1NyIsIjM5IjoiNTUxMzA0MDNhYTEwMjIyMDIwMDAxMTAxMDA4NjNlMjcwMGQ0YjAiLCI0MCI6IjU1MTMwNDAzYWExMDIzMjAyMDAwMTEwMTAwODYzZTI4MDA4ZDY2IiwiNDEiOiI1NTEzMDQwM2FhMTAyNDIwMjAwMDExMDEwMDg2M2UyOTAwYjNkZiIsIjQyIjoiNTUxMzA0MDNhYTEwMjUyMDIwMDAxMTAxMDA4NjNlMmEwMDRhYTAiLCI0MyI6IjU1MTMwNDAzYWExMDI2MjAyMDAwMTEwMTAwODYzZTJiMDAyMTQ3IiwiNDQiOiI1NTEzMDQwM2FhMTAyNzIwMjAwMDExMDEwMDg2M2UyYzAwYjg1ZiIsIjQ1IjoiNTUxMzA0MDNhYTEwMjgyMDIwMDAxMTAxMDA4NjNlMmQwMDJjNWEiLCI0NiI6IjU1MTMwNDAzYWExMDI5MjAyMDAwMTEwMTAwODYzZTJlMDBkNTI1IiwiNDciOiI1NTEzMDQwM2FhMTAyYTIwMjAwMDExMDEwMDg2M2UyZjAwYmVjMiIsIjQ4IjoiNTUxMzA0MDNhYTEwMmIyMDIwMDAxMTAxMDA4NjNlMzAwMDc2ODEiLCI0OSI6IjU1MTMwNDAzYWExMDJjMjAyMDAwMTEwMTAwODYzZTMxMDA0ODM4IiwiNTAiOiI1NTEzMDQwM2FhMTAyZDIwMjAwMDExMDEwMDg2M2UzMjAwYjE0NyIsIjUxIjoiNTUxMzA0MDNhYTEwMmUyMDIwMDAxMTAxMDA4NjNlMzMwMGRhYTAiLCI1MiI6IjU1MTMwNDAzYWExMDJmMjAyMDAwMTEwMTAwODYzZTM0MDA0M2I4IiwiNTMiOiI1NTEzMDQwM2FhMTAzMDIwMjAwMDExMDEwMDg2M2UzNTAwOTJjYyIsIjU0IjoiNTUxMzA0MDNhYTEwMzEyMDIwMDAxMTAxMDA4NjNlMzYwMDZiYjMiLCI1NSI6IjU1MTMwNDAzYWExMDMyMjAyMDAwMTEwMTAwODYzZTM3MDAwMDU0IiwiNTYiOiI1NTEzMDQwM2FhMTAzMzIwMjAwMDExMDEwMDg2M2UzODAwNTk4MiIsIjU3IjoiNTUxMzA0MDNhYTEwMzQyMDIwMDAxMTAxMDA4NjNlMzkwMDY3M2IiLCI1OCI6IjU1MTMwNDAzYWExMDM1MjAyMDAwMTEwMTAwODYzZTNhMDA5ZTQ0IiwiNTkiOiI1NTEzMDQwM2FhMTAzNjIwMjAwMDExMDEwMDg2M2UzYjAwZjVhMyIsIjYwIjoiNTUxMzA0MDNhYTEwMzcyMDIwMDAxMTAxMDA4NjNlM2MwMDZjYmIiLCI2MSI6IjU1MTMwNDAzYWExMDM4MjAyMDAwMTEwMTAwODYzZTNkMDBmOGJlIiwiNjIiOiI1NTEzMDQwM2FhMTAzOTIwMjAwMDExMDEwMDg2M2UzZTAwMDFjMSIsIjYzIjoiNTUxMzA0MDNhYTEwM2EyMDIwMDAxMTAxMDA4NjNlM2YwMDZhMjYiLCI2NCI6IjU1MTMwNDAzYWExMDNiMjAyMDAwMTEwMTAwODYzZTQwMDBmNzAwIiwiNjUiOiI1NTEzMDQwM2FhMTAzYzIwMjAwMDExMDEwMDg2M2U0MTAwYzliOSIsIjY2IjoiNTUxMzA0MDNhYTEwM2QyMDIwMDAxMTAxMDA4NjNlNDIwMDMwYzYiLCI2NyI6IjU1MTMwNDAzYWExMDNlMjAyMDAwMTEwMTAwODYzZTQzMDA1YjIxIiwiNjgiOiI1NTEzMDQwM2FhMTAzZjIwMjAwMDExMDEwMDg2M2U0NDAwYzIzOSIsIjY5IjoiNTUxMzA0MDNhYTEwNDAyMDIwMDAxMTAxMDA4NjNlNDUwMDljNjIiLCI3MCI6IjU1MTMwNDAzYWExMDQxMjAyMDAwMTEwMTAwODYzZTQ2MDA2NTFkIiwiNzEiOiI1NTEzMDQwM2FhMTA0MjIwMjAwMDExMDEwMDg2M2U0NzAwMGVmYSIsIjcyIjoiNTUxMzA0MDNhYTEwNDMyMDIwMDAxMTAxMDA4NjNlNDgwMDU3MmMiLCI3MyI6IjU1MTMwNDAzYWExMDQ0MjAyMDAwMTEwMTAwODYzZTQ5MDA2OTk1IiwiNzQiOiI1NTEzMDQwM2FhMTA0NTIwMjAwMDExMDEwMDg2M2U0YTAwOTBlYSIsIjc1IjoiNTUxMzA0MDNhYTEwNDYyMDIwMDAxMTAxMDA4NjNlNGIwMGZiMGQiLCI3NiI6IjU1MTMwNDAzYWExMDQ3MjAyMDAwMTEwMTAwODYzZTRjMDA2MjE1IiwiNzciOiI1NTEzMDQwM2FhMTA0ODIwMjAwMDExMDEwMDg2M2U0ZDAwZjYxMCIsIjc4IjoiNTUxMzA0MDNhYTEwNDkyMDIwMDAxMTAxMDA4NjNlNGUwMDBmNmYiLCI3OSI6IjU1MTMwNDAzYWExMDRhMjAyMDAwMTEwMTAwODYzZTRmMDA2NDg4IiwiODAiOiI1NTEzMDQwM2FhMTA0YjIwMjAwMDExMDEwMDg2M2U1MDAwYWNjYiIsIjgxIjoiNTUxMzA0MDNhYTEwNGMyMDIwMDAxMTAxMDA4NjNlNTEwMDkyNzIiLCI4MiI6IjU1MTMwNDAzYWExMDRkMjAyMDAwMTEwMTAwODYzZTUyMDA2YjBkIiwiODMiOiI1NTEzMDQwM2FhMTA0ZTIwMjAwMDExMDEwMDg2M2U1MzAwMDBlYSIsIjg0IjoiNTUxMzA0MDNhYTEwNGYyMDIwMDAxMTAxMDA4NjNlNTQwMDk5ZjIiLCI4NSI6IjU1MTMwNDAzYWExMDUwMjAyMDAwMTEwMTAwODYzZTU1MDA0ODg2IiwiODYiOiI1NTEzMDQwM2FhMTA1MTIwMjAwMDExMDEwMDg2M2U1NjAwYjFmOSIsIjg3IjoiNTUxMzA0MDNhYTEwNTIyMDIwMDAxMTAxMDA4NjNlNTcwMGRhMWUiLCI4OCI6IjU1MTMwNDAzYWExMDUzMjAyMDAwMTEwMTAwODYzZTU4MDA4M2M4IiwiODkiOiI1NTEzMDQwM2FhMTA1NDIwMjAwMDExMDEwMDg2M2U1OTAwYmQ3MSIsIjkwIjoiNTUxMzA0MDNhYTEwNTUyMDIwMDAxMTAxMDA4NjNlNWEwMDQ0MGUiLCI5MSI6IjU1MTMwNDAzYWExMDU2MjAyMDAwMTEwMTAwODYzZTViMDAyZmU5IiwiOTIiOiI1NTEzMDQwM2FhMTA1NzIwMjAwMDExMDEwMDg2M2U1YzAwYjZmMSIsIjkzIjoiNTUxMzA0MDNhYTEwNTgyMDIwMDAxMTAxMDA4NjNlNWQwMDIyZjQiLCI5NCI6IjU1MTMwNDAzYWExMDU5MjAyMDAwMTEwMTAwODYzZTVlMDBkYjhiIiwiOTUiOiI1NTEzMDQwM2FhMTA1YTIwMjAwMDExMDEwMDg2M2U1ZjAwYjA2YyIsIjk2IjoiNTUxMzA0MDNhYTEwNWIyMDIwMDAxMTAxMDA4NjNlNjAwMDRiMGMiLCI5NyI6IjU1MTMwNDAzYWExMDVjMjAyMDAwMTEwMTAwODYzZTYxMDA3NWI1IiwiOTgiOiI1NTEzMDQwM2FhMTA1ZDIwMjAwMDExMDEwMDg2M2U2MjAwOGNjYSIsIjk5IjoiNTUxMzA0MDNhYTEwNWUyMDIwMDAxMTAxMDA4NjNlNjMwMGU3MmQiLCIxMDAiOiI1NTEzMDQwM2FhMTA1ZjIwMjAwMDExMDEwMDg2M2U2NDAwN2UzNSIsIjEwMSI6IjU1MTMwNDAzYWExMDYwMjAyMDAwMTEwMTAwODYzZTY1MDAyNWEzIiwiMTAyIjoiNTUxMzA0MDNhYTEwNjEyMDIwMDAxMTAxMDA4NjNlNjYwMGRjZGMiLCIxMDMiOiI1NTEzMDQwM2FhMTA2MjIwMjAwMDExMDEwMDg2M2U2NzAwYjczYiIsIjEwNCI6IjU1MTMwNDAzYWExMDYzMjAyMDAwMTEwMTAwODYzZTY4MDBlZWVkIiwiMTA1IjoiNTUxMzA0MDNhYTEwNjQyMDIwMDAxMTAxMDA4NjNlNjkwMGQwNTQiLCIxMDYiOiI1NTEzMDQwM2FhMTA2NTIwMjAwMDExMDEwMDg2M2U2YTAwMjkyYiIsIjEwNyI6IjU1MTMwNDAzYWExMDY2MjAyMDAwMTEwMTAwODYzZTZiMDA0MmNjIiwiMTA4IjoiNTUxMzA0MDNhYTEwNjcyMDIwMDAxMTAxMDA4NjNlNmMwMGRiZDQiLCIxMDkiOiI1NTEzMDQwM2FhMTA2ODIwMjAwMDExMDEwMDg2M2U2ZDAwNGZkMSIsIjExMCI6IjU1MTMwNDAzYWExMDY5MjAyMDAwMTEwMTAwODYzZTZlMDBiNmFlIiwiMTExIjoiNTUxMzA0MDNhYTEwNmEyMDIwMDAxMTAxMDA4NjNlNmYwMGRkNDkiLCIxMTIiOiI1NTEzMDQwM2FhMTA2YjIwMjAwMDExMDEwMDg2M2U3MDAwMTUwYSIsIjExMyI6IjU1MTMwNDAzYWExMDZjMjAyMDAwMTEwMTAwODYzZTcxMDAyYmIzIiwiMTE0IjoiNTUxMzA0MDNhYTEwNmQyMDIwMDAxMTAxMDA4NjNlNzIwMGQyY2MiLCIxMTUiOiI1NTEzMDQwM2FhMTA2ZTIwMjAwMDExMDEwMDg2M2U3MzAwYjkyYiIsIjExNiI6IjU1MTMwNDAzYWExMDZmMjAyMDAwMTEwMTAwODYzZTc0MDAyMDMzIiwiMTE3IjoiNTUxMzA0MDNhYTEwNzAyMDIwMDAxMTAxMDA4NjNlNzUwMGYxNDciLCIxMTgiOiI1NTEzMDQwM2FhMTA3MTIwMjAwMDExMDEwMDg2M2U3NjAwMDgzOCIsIjExOSI6IjU1MTMwNDAzYWExMDcyMjAyMDAwMTEwMTAwODYzZTc3MDA2M2RmIiwiMTIwIjoiNTUxMzA0MDNhYTEwNzMyMDIwMDAxMTAxMDA4NjNlNzgwMDNhMDkiLCIxMjEiOiI1NTEzMDQwM2FhMTA3NDIwMjAwMDExMDEwMDg2M2U3OTAwMDRiMCIsIjEyMiI6IjU1MTMwNDAzYWExMDc1MjAyMDAwMTEwMTAwODYzZTdhMDBmZGNmIiwiMTIzIjoiNTUxMzA0MDNhYTEwNzYyMDIwMDAxMTAxMDA4NjNlN2IwMDk2MjgiLCIxMjQiOiI1NTEzMDQwM2FhMTA3NzIwMjAwMDExMDEwMDg2M2U3YzAwMGYzMCIsIjEyNSI6IjU1MTMwNDAzYWExMDc4MjAyMDAwMTEwMTAwODYzZTdkMDA5YjM1IiwiMTI2IjoiNTUxMzA0MDNhYTEwNzkyMDIwMDAxMTAxMDA4NjNlN2UwMDYyNGEiLCIxMjciOiI1NTEzMDQwM2FhMTA3YTIwMjAwMDExMDEwMDg2M2U3ZjAwMDlhZCIsIjEyOCI6IjU1MTMwNDAzYWExMDdiMjAyMDAwMTEwMTAwODYzZTgwMDA1ODA3IiwiMTI5IjoiNTUxMzA0MDNhYTEwN2MyMDIwMDAxMTAxMDA4NjNlODEwMDY2YmUiLCIxMzAiOiI1NTEzMDQwM2FhMTA3ZDIwMjAwMDExMDEwMDg2M2U4MjAwOWZjMSIsIjEzMSI6IjU1MTMwNDAzYWExMDdlMjAyMDAwMTEwMTAwODYzZTgzMDBmNDI2IiwiMTMyIjoiNTUxMzA0MDNhYTEwN2YyMDIwMDAxMTAxMDA4NjNlODQwMDZkM2UiLCIxMzMiOiI1NTEzMDQwM2FhMTA4MDIwMjAwMDExMDEwMDg2M2U4NTAwMjhmNyIsIjEzNCI6IjU1MTMwNDAzYWExMDgxMjAyMDAwMTEwMTAwODYzZTg2MDBkMTg4IiwiMTM1IjoiNTUxMzA0MDNhYTEwODIyMDIwMDAxMTAxMDA4NjNlODcwMGJhNmYiLCIxMzYiOiI1NTEzMDQwM2FhMTA4MzIwMjAwMDExMDEwMDg2M2U4ODAwZTNiOSIsIjEzNyI6IjU1MTMwNDAzYWExMDg0MjAyMDAwMTEwMTAwODYzZTg5MDBkZDAwIiwiMTM4IjoiNTUxMzA0MDNhYTEwODUyMDIwMDAxMTAxMDA4NjNlOGEwMDI0N2YiLCIxMzkiOiI1NTEzMDQwM2FhMTA4NjIwMjAwMDExMDEwMDg2M2U4YjAwNGY5OCIsIjE0MCI6IjU1MTMwNDAzYWExMDg3MjAyMDAwMTEwMTAwODYzZThjMDBkNjgwIiwiMTQxIjoiNTUxMzA0MDNhYTEwODgyMDIwMDAxMTAxMDA4NjNlOGQwMDQyODUiLCIxNDIiOiI1NTEzMDQwM2FhMTA4OTIwMjAwMDExMDEwMDg2M2U4ZTAwYmJmYSIsIjE0MyI6IjU1MTMwNDAzYWExMDhhMjAyMDAwMTEwMTAwODYzZThmMDBkMDFkIiwiMTQ0IjoiNTUxMzA0MDNhYTEwOGIyMDIwMDAxMTAxMDA4NjNlOTAwMDE4NWUiLCIxNDUiOiI1NTEzMDQwM2FhMTA4YzIwMjAwMDExMDEwMDg2M2U5MTAwMjZlNyIsIjE0NiI6IjU1MTMwNDAzYWExMDhkMjAyMDAwMTEwMTAwODYzZTkyMDBkZjk4IiwiMTQ3IjoiNTUxMzA0MDNhYTEwOGUyMDIwMDAxMTAxMDA4NjNlOTMwMGI0N2YiLCIxNDgiOiI1NTEzMDQwM2FhMTA4ZjIwMjAwMDExMDEwMDg2M2U5NDAwMmQ2NyIsIjE0OSI6IjU1MTMwNDAzYWExMDkwMjAyMDAwMTEwMTAwODYzZTk1MDBmYzEzIiwiMTUwIjoiNTUxMzA0MDNhYTEwOTEyMDIwMDAxMTAxMDA4NjNlOTYwMDA1NmMiLCIxNTEiOiI1NTEzMDQwM2FhMTA5MjIwMjAwMDExMDEwMDg2M2U5NzAwNmU4YiIsIjE1MiI6IjU1MTMwNDAzYWExMDkzMjAyMDAwMTEwMTAwODYzZTk4MDAzNzVkIiwiMTUzIjoiNTUxMzA0MDNhYTEwOTQyMDIwMDAxMTAxMDA4NjNlOTkwMDA5ZTQiLCIxNTQiOiI1NTEzMDQwM2FhMTA5NTIwMjAwMDExMDEwMDg2M2U5YTAwZjA5YiIsIjE1NSI6IjU1MTMwNDAzYWExMDk2MjAyMDAwMTEwMTAwODYzZTliMDA5YjdjIiwiMTU2IjoiNTUxMzA0MDNhYTEwOTcyMDIwMDAxMTAxMDA4NjNlOWMwMDAyNjQiLCIxNTciOiI1NTEzMDQwM2FhMTA5ODIwMjAwMDExMDEwMDg2M2U5ZDAwOTY2MSIsIjE1OCI6IjU1MTMwNDAzYWExMDk5MjAyMDAwMTEwMTAwODYzZTllMDA2ZjFlIiwiMTU5IjoiNTUxMzA0MDNhYTEwOWEyMDIwMDAxMTAxMDA4NjNlOWYwMDA0ZjkiLCIxNjAiOiI1NTEzMDQwM2FhMTA5YjIwMjAwMDExMDEwMDg2M2VhMDAwZmY5OSIsIjE2MSI6IjU1MTMwNDAzYWExMDljMjAyMDAwMTEwMTAwODYzZWExMDBjMTIwIiwiMTYyIjoiNTUxMzA0MDNhYTEwOWQyMDIwMDAxMTAxMDA4NjNlYTIwMDM4NWYiLCIxNjMiOiI1NTEzMDQwM2FhMTA5ZTIwMjAwMDExMDEwMDg2M2VhMzAwNTNiOCIsIjE2NCI6IjU1MTMwNDAzYWExMDlmMjAyMDAwMTEwMTAwODYzZWE0MDBjYWEwIiwiMTY1IjoiNTUxMzA0MDNhYTEwYTAyMDIwMDAxMTAxMDA4NjNlYTUwMDkxMzYiLCIxNjYiOiI1NTEzMDQwM2FhMTBhMTIwMjAwMDExMDEwMDg2M2VhNjAwNjg0OSIsIjE2NyI6IjU1MTMwNDAzYWExMGEyMjAyMDAwMTEwMTAwODYzZWE3MDAwM2FlIiwiMTY4IjoiNTUxMzA0MDNhYTEwYTMyMDIwMDAxMTAxMDA4NjNlYTgwMDVhNzgiLCIxNjkiOiI1NTEzMDQwM2FhMTBhNDIwMjAwMDExMDEwMDg2M2VhOTAwNjRjMSIsIjE3MCI6IjU1MTMwNDAzYWExMGE1MjAyMDAwMTEwMTAwODYzZWFhMDA5ZGJlIiwiMTcxIjoiNTUxMzA0MDNhYTEwYTYyMDIwMDAxMTAxMDA4NjNlYWIwMGY2NTkiLCIxNzIiOiI1NTEzMDQwM2FhMTBhNzIwMjAwMDExMDEwMDg2M2VhYzAwNmY0MSIsIjE3MyI6IjU1MTMwNDAzYWExMGE4MjAyMDAwMTEwMTAwODYzZWFkMDBmYjQ0IiwiMTc0IjoiNTUxMzA0MDNhYTEwYTkyMDIwMDAxMTAxMDA4NjNlYWUwMDAyM2IiLCIxNzUiOiI1NTEzMDQwM2FhMTBhYTIwMjAwMDExMDEwMDg2M2VhZjAwNjlkYyIsIjE3NiI6IjU1MTMwNDAzYWExMGFiMjAyMDAwMTEwMTAwODYzZWIwMDBhMTlmIiwiMTc3IjoiNTUxMzA0MDNhYTEwYWMyMDIwMDAxMTAxMDA4NjNlYjEwMDlmMjYiLCIxNzgiOiI1NTEzMDQwM2FhMTBhZDIwMjAwMDExMDEwMDg2M2ViMjAwNjY1OSIsIjE3OSI6IjU1MTMwNDAzYWExMGFlMjAyMDAwMTEwMTAwODYzZWIzMDAwZGJlIiwiMTgwIjoiNTUxMzA0MDNhYTEwYWYyMDIwMDAxMTAxMDA4NjNlYjQwMDk0YTYiLCIxODEiOiI1NTEzMDQwM2FhMTBiMDIwMjAwMDExMDEwMDg2M2ViNTAwNDVkMiIsIjE4MiI6IjU1MTMwNDAzYWExMGIxMjAyMDAwMTEwMTAwODYzZWI2MDBiY2FkIiwiMTgzIjoiNTUxMzA0MDNhYTEwYjIyMDIwMDAxMTAxMDA4NjNlYjcwMGQ3NGEiLCIxODQiOiI1NTEzMDQwM2FhMTBiMzIwMjAwMDExMDEwMDg2M2ViODAwOGU5YyIsIjE4NSI6IjU1MTMwNDAzYWExMGI0MjAyMDAwMTEwMTAwODYzZWI5MDBiMDI1IiwiMTg2IjoiNTUxMzA0MDNhYTEwYjUyMDIwMDAxMTAxMDA4NjNlYmEwMDQ5NWEiLCIxODciOiI1NTEzMDQwM2FhMTBiNjIwMjAwMDExMDEwMDg2M2ViYjAwMjJiZCIsIjE4OCI6IjU1MTMwNDAzYWExMGI3MjAyMDAwMTEwMTAwODYzZWJjMDBiYmE1IiwiMTg5IjoiNTUxMzA0MDNhYTEwYjgyMDIwMDAxMTAxMDA4NjNlYmQwMDJmYTAiLCIxOTAiOiI1NTEzMDQwM2FhMTBiOTIwMjAwMDExMDEwMDg2M2ViZTAwZDZkZiIsIjE5MSI6IjU1MTMwNDAzYWExMGJhMjAyMDAwMTEwMTAwODYzZWJmMDBiZDM4IiwiMTkyIjoiNTUxMzA0MDNhYTEwYmIyMDIwMDAxMTAxMDA4NjNlYzAwMDIwMWUiLCIxOTMiOiI1NTEzMDQwM2FhMTBiYzIwMjAwMDExMDEwMDg2M2VjMTAwMWVhNyIsIjE5NCI6IjU1MTMwNDAzYWExMGJkMjAyMDAwMTEwMTAwODYzZWMyMDBlN2Q4IiwiMTk1IjoiNTUxMzA0MDNhYTEwYmUyMDIwMDAxMTAxMDA4NjNlYzMwMDhjM2YiLCIxOTYiOiI1NTEzMDQwM2FhMTBiZjIwMjAwMDExMDEwMDg2M2VjNDAwMTUyNyIsIjE5NyI6IjU1MTMwNDAzYWExMGMwMjAyMDAwMTEwMTAwODYzZWM1MDA0YjdjIiwiMTk4IjoiNTUxMzA0MDNhYTEwYzEyMDIwMDAxMTAxMDA4NjNlYzYwMGIyMDMiLCIxOTkiOiI1NTEzMDQwM2FhMTBjMjIwMjAwMDExMDEwMDg2M2VjNzAwZDllNCIsIjIwMCI6IjU1MTMwNDAzYWExMGMzMjAyMDAwMTEwMTAwODYzZWM4MDA4MDMyIn0sImNoYWlucyI6eyIwIjoiNTUxMzA0MDNhYTEwMDAyMDIwMDAxMTAxMDA4NzNlMDAwMGZjOGIiLCIxIjoiNTUxMzA0MDNhYTEwMDEyMDIwMDAxMTAxMDA4NzNlMDEwMGI1YzciLCIyIjoiNTUxMzA0MDNhYTEwMDIyMDIwMDAxMTAxMDA4NzNlMDIwMDZlMTMiLCIzIjoiNTUxMzA0MDNhYTEwMDMyMDIwMDAxMTAxMDA4NzNlMDMwMDI3NWYiLCI0IjoiNTUxMzA0MDNhYTEwMDQyMDIwMDAxMTAxMDA4NzNlMDQwMGM5YjIiLCI1IjoiNTUxMzA0MDNhYTEwMDUyMDIwMDAxMTAxMDA4NzNlMDUwMDgwZmUiLCI2IjoiNTUxMzA0MDNhYTEwMDYyMDIwMDAxMTAxMDA4NzNlMDYwMDViMmEiLCI3IjoiNTUxMzA0MDNhYTEwMDcyMDIwMDAxMTAxMDA4NzNlMDcwMDEyNjYiLCI4IjoiNTUxMzA0MDNhYTEwMDgyMDIwMDAxMTAxMDA4NzNlMDgwMDk2ZjkiLCI5IjoiNTUxMzA0MDNhYTEwMDkyMDIwMDAxMTAxMDA4NzNlMDkwMGRmYjUiLCIxMCI6IjU1MTMwNDAzYWExMDBhMjAyMDAwMTEwMTAwODczZTBhMDAwNDYxIiwiMTEiOiI1NTEzMDQwM2FhMTAwYjIwMjAwMDExMDEwMDg3M2UwYjAwNGQyZCIsIjEyIjoiNTUxMzA0MDNhYTEwMGMyMDIwMDAxMTAxMDA4NzNlMGMwMGEzYzAiLCIxMyI6IjU1MTMwNDAzYWExMDBkMjAyMDAwMTEwMTAwODczZTBkMDBlYThjIiwiMTQiOiI1NTEzMDQwM2FhMTAwZTIwMjAwMDExMDEwMDg3M2UwZTAwMzE1OCIsIjE1IjoiNTUxMzA0MDNhYTEwMGYyMDIwMDAxMTAxMDA4NzNlMGYwMDc4MTQiLCIxNiI6IjU1MTMwNDAzYWExMDEwMjAyMDAwMTEwMTAwODczZTEwMDAyODZmIiwiMTciOiI1NTEzMDQwM2FhMTAxMTIwMjAwMDExMDEwMDg3M2UxMTAwNjEyMyIsIjE4IjoiNTUxMzA0MDNhYTEwMTIyMDIwMDAxMTAxMDA4NzNlMTIwMGJhZjciLCIxOSI6IjU1MTMwNDAzYWExMDEzMjAyMDAwMTEwMTAwODczZTEzMDBmM2JiIiwiMjAiOiI1NTEzMDQwM2FhMTAxNDIwMjAwMDExMDEwMDg3M2UxNDAwMWQ1NiIsIjIxIjoiNTUxMzA0MDNhYTEwMTUyMDIwMDAxMTAxMDA4NzNlMTUwMDU0MWEiLCIyMiI6IjU1MTMwNDAzYWExMDE2MjAyMDAwMTEwMTAwODczZTE2MDA4ZmNlIiwiMjMiOiI1NTEzMDQwM2FhMTAxNzIwMjAwMDExMDEwMDg3M2UxNzAwYzY4MiIsIjI0IjoiNTUxMzA0MDNhYTEwMTgyMDIwMDAxMTAxMDA4NzNlMTgwMDQyMWQiLCIyNSI6IjU1MTMwNDAzYWExMDE5MjAyMDAwMTEwMTAwODczZTE5MDAwYjUxIiwiMjYiOiI1NTEzMDQwM2FhMTAxYTIwMjAwMDExMDEwMDg3M2UxYTAwZDA4NSIsIjI3IjoiNTUxMzA0MDNhYTEwMWIyMDIwMDAxMTAxMDA4NzNlMWIwMDk5YzkiLCIyOCI6IjU1MTMwNDAzYWExMDFjMjAyMDAwMTEwMTAwODczZTFjMDA3NzI0IiwiMjkiOiI1NTEzMDQwM2FhMTAxZDIwMjAwMDExMDEwMDg3M2UxZDAwM2U2OCIsIjMwIjoiNTUxMzA0MDNhYTEwMWUyMDIwMDAxMTAxMDA4NzNlMWUwMGU1YmMiLCIzMSI6IjU1MTMwNDAzYWExMDFmMjAyMDAwMTEwMTAwODczZTFmMDBhY2YwIiwiMzIiOiI1NTEzMDQwM2FhMTAyMDIwMjAwMDExMDEwMDg3M2UyMDAwNDU0YSIsIjMzIjoiNTUxMzA0MDNhYTEwMjEyMDIwMDAxMTAxMDA4NzNlMjEwMDBjMDYiLCIzNCI6IjU1MTMwNDAzYWExMDIyMjAyMDAwMTEwMTAwODczZTIyMDBkN2QyIiwiMzUiOiI1NTEzMDQwM2FhMTAyMzIwMjAwMDExMDEwMDg3M2UyMzAwOWU5ZSIsIjM2IjoiNTUxMzA0MDNhYTEwMjQyMDIwMDAxMTAxMDA4NzNlMjQwMDcwNzMiLCIzNyI6IjU1MTMwNDAzYWExMDI1MjAyMDAwMTEwMTAwODczZTI1MDAzOTNmIiwiMzgiOiI1NTEzMDQwM2FhMTAyNjIwMjAwMDExMDEwMDg3M2UyNjAwZTJlYiIsIjM5IjoiNTUxMzA0MDNhYTEwMjcyMDIwMDAxMTAxMDA4NzNlMjcwMGFiYTciLCI0MCI6IjU1MTMwNDAzYWExMDI4MjAyMDAwMTEwMTAwODczZTI4MDAyZjM4IiwiNDEiOiI1NTEzMDQwM2FhMTAyOTIwMjAwMDExMDEwMDg3M2UyOTAwNjY3NCIsIjQyIjoiNTUxMzA0MDNhYTEwMmEyMDIwMDAxMTAxMDA4NzNlMmEwMGJkYTAiLCI0MyI6IjU1MTMwNDAzYWExMDJiMjAyMDAwMTEwMTAwODczZTJiMDBmNGVjIiwiNDQiOiI1NTEzMDQwM2FhMTAyYzIwMjAwMDExMDEwMDg3M2UyYzAwMWEwMSIsIjQ1IjoiNTUxMzA0MDNhYTEwMmQyMDIwMDAxMTAxMDA4NzNlMmQwMDUzNGQiLCI0NiI6IjU1MTMwNDAzYWExMDJlMjAyMDAwMTEwMTAwODczZTJlMDA4ODk5IiwiNDciOiI1NTEzMDQwM2FhMTAyZjIwMjAwMDExMDEwMDg3M2UyZjAwYzFkNSIsIjQ4IjoiNTUxMzA0MDNhYTEwMzAyMDIwMDAxMTAxMDA4NzNlMzAwMDkxYWUiLCI0OSI6IjU1MTMwNDAzYWExMDMxMjAyMDAwMTEwMTAwODczZTMxMDBkOGUyIiwiNTAiOiI1NTEzMDQwM2FhMTAzMjIwMjAwMDExMDEwMDg3M2UzMjAwMDMzNiIsIjUxIjoiNTUxMzA0MDNhYTEwMzMyMDIwMDAxMTAxMDA4NzNlMzMwMDRhN2EiLCI1MiI6IjU1MTMwNDAzYWExMDM0MjAyMDAwMTEwMTAwODczZTM0MDBhNDk3IiwiNTMiOiI1NTEzMDQwM2FhMTAzNTIwMjAwMDExMDEwMDg3M2UzNTAwZWRkYiIsIjU0IjoiNTUxMzA0MDNhYTEwMzYyMDIwMDAxMTAxMDA4NzNlMzYwMDM2MGYiLCI1NSI6IjU1MTMwNDAzYWExMDM3MjAyMDAwMTEwMTAwODczZTM3MDA3ZjQzIiwiNTYiOiI1NTEzMDQwM2FhMTAzODIwMjAwMDExMDEwMDg3M2UzODAwZmJkYyIsIjU3IjoiNTUxMzA0MDNhYTEwMzkyMDIwMDAxMTAxMDA4NzNlMzkwMGIyOTAiLCI1OCI6IjU1MTMwNDAzYWExMDNhMjAyMDAwMTEwMTAwODczZTNhMDA2OTQ0IiwiNTkiOiI1NTEzMDQwM2FhMTAzYjIwMjAwMDExMDEwMDg3M2UzYjAwMjAwOCIsIjYwIjoiNTUxMzA0MDNhYTEwM2MyMDIwMDAxMTAxMDA4NzNlM2MwMGNlZTUiLCI2MSI6IjU1MTMwNDAzYWExMDNkMjAyMDAwMTEwMTAwODczZTNkMDA4N2E5IiwiNjIiOiI1NTEzMDQwM2FhMTAzZTIwMjAwMDExMDEwMDg3M2UzZTAwNWM3ZCIsIjYzIjoiNTUxMzA0MDNhYTEwM2YyMDIwMDAxMTAxMDA4NzNlM2YwMDE1MzEiLCI2NCI6IjU1MTMwNDAzYWExMDQwMjAyMDAwMTEwMTAwODczZTQwMDA5ZjAwIiwiNjUiOiI1NTEzMDQwM2FhMTA0MTIwMjAwMDExMDEwMDg3M2U0MTAwZDY0YyIsIjY2IjoiNTUxMzA0MDNhYTEwNDIyMDIwMDAxMTAxMDA4NzNlNDIwMDBkOTgiLCI2NyI6IjU1MTMwNDAzYWExMDQzMjAyMDAwMTEwMTAwODczZTQzMDA0NGQ0IiwiNjgiOiI1NTEzMDQwM2FhMTA0NDIwMjAwMDExMDEwMDg3M2U0NDAwYWEzOSIsIjY5IjoiNTUxMzA0MDNhYTEwNDUyMDIwMDAxMTAxMDA4NzNlNDUwMGUzNzUiLCI3MCI6IjU1MTMwNDAzYWExMDQ2MjAyMDAwMTEwMTAwODczZTQ2MDAzOGExIiwiNzEiOiI1NTEzMDQwM2FhMTA0NzIwMjAwMDExMDEwMDg3M2U0NzAwNzFlZCIsIjcyIjoiNTUxMzA0MDNhYTEwNDgyMDIwMDAxMTAxMDA4NzNlNDgwMGY1NzIiLCI3MyI6IjU1MTMwNDAzYWExMDQ5MjAyMDAwMTEwMTAwODczZTQ5MDBiYzNlIiwiNzQiOiI1NTEzMDQwM2FhMTA0YTIwMjAwMDExMDEwMDg3M2U0YTAwNjdlYSIsIjc1IjoiNTUxMzA0MDNhYTEwNGIyMDIwMDAxMTAxMDA4NzNlNGIwMDJlYTYiLCI3NiI6IjU1MTMwNDAzYWExMDRjMjAyMDAwMTEwMTAwODczZTRjMDBjMDRiIiwiNzciOiI1NTEzMDQwM2FhMTA0ZDIwMjAwMDExMDEwMDg3M2U0ZDAwODkwNyIsIjc4IjoiNTUxMzA0MDNhYTEwNGUyMDIwMDAxMTAxMDA4NzNlNGUwMDUyZDMiLCI3OSI6IjU1MTMwNDAzYWExMDRmMjAyMDAwMTEwMTAwODczZTRmMDAxYjlmIiwiODAiOiI1NTEzMDQwM2FhMTA1MDIwMjAwMDExMDEwMDg3M2U1MDAwNGJlNCIsIjgxIjoiNTUxMzA0MDNhYTEwNTEyMDIwMDAxMTAxMDA4NzNlNTEwMDAyYTgiLCI4MiI6IjU1MTMwNDAzYWExMDUyMjAyMDAwMTEwMTAwODczZTUyMDBkOTdjIiwiODMiOiI1NTEzMDQwM2FhMTA1MzIwMjAwMDExMDEwMDg3M2U1MzAwOTAzMCIsIjg0IjoiNTUxMzA0MDNhYTEwNTQyMDIwMDAxMTAxMDA4NzNlNTQwMDdlZGQiLCI4NSI6IjU1MTMwNDAzYWExMDU1MjAyMDAwMTEwMTAwODczZTU1MDAzNzkxIiwiODYiOiI1NTEzMDQwM2FhMTA1NjIwMjAwMDExMDEwMDg3M2U1NjAwZWM0NSIsIjg3IjoiNTUxMzA0MDNhYTEwNTcyMDIwMDAxMTAxMDA4NzNlNTcwMGE1MDkiLCI4OCI6IjU1MTMwNDAzYWExMDU4MjAyMDAwMTEwMTAwODczZTU4MDAyMTk2IiwiODkiOiI1NTEzMDQwM2FhMTA1OTIwMjAwMDExMDEwMDg3M2U1OTAwNjhkYSIsIjkwIjoiNTUxMzA0MDNhYTEwNWEyMDIwMDAxMTAxMDA4NzNlNWEwMGIzMGUiLCI5MSI6IjU1MTMwNDAzYWExMDViMjAyMDAwMTEwMTAwODczZTViMDBmYTQyIiwiOTIiOiI1NTEzMDQwM2FhMTA1YzIwMjAwMDExMDEwMDg3M2U1YzAwMTRhZiIsIjkzIjoiNTUxMzA0MDNhYTEwNWQyMDIwMDAxMTAxMDA4NzNlNWQwMDVkZTMiLCI5NCI6IjU1MTMwNDAzYWExMDVlMjAyMDAwMTEwMTAwODczZTVlMDA4NjM3IiwiOTUiOiI1NTEzMDQwM2FhMTA1ZjIwMjAwMDExMDEwMDg3M2U1ZjAwY2Y3YiIsIjk2IjoiNTUxMzA0MDNhYTEwNjAyMDIwMDAxMTAxMDA4NzNlNjAwMDI2YzEiLCI5NyI6IjU1MTMwNDAzYWExMDYxMjAyMDAwMTEwMTAwODczZTYxMDA2ZjhkIiwiOTgiOiI1NTEzMDQwM2FhMTA2MjIwMjAwMDExMDEwMDg3M2U2MjAwYjQ1OSIsIjk5IjoiNTUxMzA0MDNhYTEwNjMyMDIwMDAxMTAxMDA4NzNlNjMwMGZkMTUiLCIxMDAiOiI1NTEzMDQwM2FhMTA2NDIwMjAwMDExMDEwMDg3M2U2NDAwMTNmOCJ9LCJlY2NlbnRyaWMiOnsiMCI6IjU1MTMwNDAzYWExMGMzMjAyMDAwMTEwMTAwODgzZTAwMDBhODk4IiwiMSI6IjU1MTMwNDAzYWExMGM0MjAyMDAwMTEwMTAwODgzZTAxMDA5NjIxIiwiMiI6IjU1MTMwNDAzYWExMGM1MjAyMDAwMTEwMTAwODgzZTAyMDA2ZjVlIiwiMyI6IjU1MTMwNDAzYWExMGM2MjAyMDAwMTEwMTAwODgzZTAzMDAwNGI5IiwiNCI6IjU1MTMwNDAzYWExMGM3MjAyMDAwMTEwMTAwODgzZTA0MDA5ZGExIiwiNSI6IjU1MTMwNDAzYWExMGM4MjAyMDAwMTEwMTAwODgzZTA1MDAwOWE0IiwiNiI6IjU1MTMwNDAzYWExMGM5MjAyMDAwMTEwMTAwODgzZTA2MDBmMGRiIiwiNyI6IjU1MTMwNDAzYWExMGNhMjAyMDAwMTEwMTAwODgzZTA3MDA5YjNjIiwiOCI6IjU1MTMwNDAzYWExMGNiMjAyMDAwMTEwMTAwODgzZTA4MDBjMmVhIiwiOSI6IjU1MTMwNDAzYWExMGNjMjAyMDAwMTEwMTAwODgzZTA5MDBmYzUzIiwiMTAiOiI1NTEzMDQwM2FhMTBjZDIwMjAwMDExMDEwMDg4M2UwYTAwMDUyYyIsIjExIjoiNTUxMzA0MDNhYTEwY2UyMDIwMDAxMTAxMDA4ODNlMGIwMDZlY2IiLCIxMiI6IjU1MTMwNDAzYWExMGNmMjAyMDAwMTEwMTAwODgzZTBjMDBmN2QzIiwiMTMiOiI1NTEzMDQwM2FhMTBkMDIwMjAwMDExMDEwMDg4M2UwZDAwMjZhNyIsIjE0IjoiNTUxMzA0MDNhYTEwZDEyMDIwMDAxMTAxMDA4ODNlMGUwMGRmZDgiLCIxNSI6IjU1MTMwNDAzYWExMGQyMjAyMDAwMTEwMTAwODgzZTBmMDBiNDNmIiwiMTYiOiI1NTEzMDQwM2FhMTBkMzIwMjAwMDExMDEwMDg4M2UxMDAwN2M3YyIsIjE3IjoiNTUxMzA0MDNhYTEwZDQyMDIwMDAxMTAxMDA4ODNlMTEwMDQyYzUiLCIxOCI6IjU1MTMwNDAzYWExMGQ1MjAyMDAwMTEwMTAwODgzZTEyMDBiYmJhIiwiMTkiOiI1NTEzMDQwM2FhMTBkNjIwMjAwMDExMDEwMDg4M2UxMzAwZDA1ZCIsIjIwIjoiNTUxMzA0MDNhYTEwZDcyMDIwMDAxMTAxMDA4ODNlMTQwMDQ5NDUiLCIyMSI6IjU1MTMwNDAzYWExMGQ4MjAyMDAwMTEwMTAwODgzZTE1MDBkZDQwIiwiMjIiOiI1NTEzMDQwM2FhMTBkOTIwMjAwMDExMDEwMDg4M2UxNjAwMjQzZiIsIjIzIjoiNTUxMzA0MDNhYTEwZGEyMDIwMDAxMTAxMDA4ODNlMTcwMDRmZDgiLCIyNCI6IjU1MTMwNDAzYWExMGRiMjAyMDAwMTEwMTAwODgzZTE4MDAxNjBlIiwiMjUiOiI1NTEzMDQwM2FhMTBkYzIwMjAwMDExMDEwMDg4M2UxOTAwMjhiNyIsIjI2IjoiNTUxMzA0MDNhYTEwZGQyMDIwMDAxMTAxMDA4ODNlMWEwMGQxYzgiLCIyNyI6IjU1MTMwNDAzYWExMGRlMjAyMDAwMTEwMTAwODgzZTFiMDBiYTJmIiwiMjgiOiI1NTEzMDQwM2FhMTBkZjIwMjAwMDExMDEwMDg4M2UxYzAwMjMzNyIsIjI5IjoiNTUxMzA0MDNhYTEwZTAyMDIwMDAxMTAxMDA4ODNlMWQwMDc4YTEiLCIzMCI6IjU1MTMwNDAzYWExMGUxMjAyMDAwMTEwMTAwODgzZTFlMDA4MWRlIiwiMzEiOiI1NTEzMDQwM2FhMTBlMjIwMjAwMDExMDEwMDg4M2UxZjAwZWEzOSIsIjMyIjoiNTUxMzA0MDNhYTEwZTMyMDIwMDAxMTAxMDA4ODNlMjAwMDExNTkiLCIzMyI6IjU1MTMwNDAzYWExMGU0MjAyMDAwMTEwMTAwODgzZTIxMDAyZmUwIiwiMzQiOiI1NTEzMDQwM2FhMTBlNTIwMjAwMDExMDEwMDg4M2UyMjAwZDY5ZiIsIjM1IjoiNTUxMzA0MDNhYTEwZTYyMDIwMDAxMTAxMDA4ODNlMjMwMGJkNzgiLCIzNiI6IjU1MTMwNDAzYWExMGU3MjAyMDAwMTEwMTAwODgzZTI0MDAyNDYwIiwiMzciOiI1NTEzMDQwM2FhMTBlODIwMjAwMDExMDEwMDg4M2UyNTAwYjA2NSIsIjM4IjoiNTUxMzA0MDNhYTEwZTkyMDIwMDAxMTAxMDA4ODNlMjYwMDQ5MWEiLCIzOSI6IjU1MTMwNDAzYWExMGVhMjAyMDAwMTEwMTAwODgzZTI3MDAyMmZkIiwiNDAiOiI1NTEzMDQwM2FhMTBlYjIwMjAwMDExMDEwMDg4M2UyODAwN2IyYiIsIjQxIjoiNTUxMzA0MDNhYTEwZWMyMDIwMDAxMTAxMDA4ODNlMjkwMDQ1OTIiLCI0MiI6IjU1MTMwNDAzYWExMGVkMjAyMDAwMTEwMTAwODgzZTJhMDBiY2VkIiwiNDMiOiI1NTEzMDQwM2FhMTBlZTIwMjAwMDExMDEwMDg4M2UyYjAwZDcwYSIsIjQ0IjoiNTUxMzA0MDNhYTEwZWYyMDIwMDAxMTAxMDA4ODNlMmMwMDRlMTIiLCI0NSI6IjU1MTMwNDAzYWExMGYwMjAyMDAwMTEwMTAwODgzZTJkMDA5ZjY2IiwiNDYiOiI1NTEzMDQwM2FhMTBmMTIwMjAwMDExMDEwMDg4M2UyZTAwNjYxOSIsIjQ3IjoiNTUxMzA0MDNhYTEwZjIyMDIwMDAxMTAxMDA4ODNlMmYwMDBkZmUiLCI0OCI6IjU1MTMwNDAzYWExMGYzMjAyMDAwMTEwMTAwODgzZTMwMDBjNWJkIiwiNDkiOiI1NTEzMDQwM2FhMTBmNDIwMjAwMDExMDEwMDg4M2UzMTAwZmIwNCIsIjUwIjoiNTUxMzA0MDNhYTEwZjUyMDIwMDAxMTAxMDA4ODNlMzIwMDAyN2IiLCI1MSI6IjU1MTMwNDAzYWExMGY2MjAyMDAwMTEwMTAwODgzZTMzMDA2OTljIiwiNTIiOiI1NTEzMDQwM2FhMTBmNzIwMjAwMDExMDEwMDg4M2UzNDAwZjA4NCIsIjUzIjoiNTUxMzA0MDNhYTEwZjgyMDIwMDAxMTAxMDA4ODNlMzUwMDY0ODEiLCI1NCI6IjU1MTMwNDAzYWExMGY5MjAyMDAwMTEwMTAwODgzZTM2MDA5ZGZlIiwiNTUiOiI1NTEzMDQwM2FhMTBmYTIwMjAwMDExMDEwMDg4M2UzNzAwZjYxOSIsIjU2IjoiNTUxMzA0MDNhYTEwZmIyMDIwMDAxMTAxMDA4ODNlMzgwMGFmY2YiLCI1NyI6IjU1MTMwNDAzYWExMGZjMjAyMDAwMTEwMTAwODgzZTM5MDA5MTc2IiwiNTgiOiI1NTEzMDQwM2FhMTBmZDIwMjAwMDExMDEwMDg4M2UzYTAwNjgwOSIsIjU5IjoiNTUxMzA0MDNhYTEwZmUyMDIwMDAxMTAxMDA4ODNlM2IwMDAzZWUiLCI2MCI6IjU1MTMwNDAzYWExMGZmMjAyMDAwMTEwMTAwODgzZTNjMDA5YWY2IiwiNjEiOiI1NTEzMDQwM2FhMTAwMDIxMjAwMDExMDEwMDg4M2UzZDAwZjgxMyIsIjYyIjoiNTUxMzA0MDNhYTEwMDEyMTIwMDAxMTAxMDA4ODNlM2UwMDAxNmMiLCI2MyI6IjU1MTMwNDAzYWExMDAyMjEyMDAwMTEwMTAwODgzZTNmMDA2YThiIiwiNjQiOiI1NTEzMDQwM2FhMTAwMzIxMjAwMDExMDEwMDg4M2U0MDAwZjdhZCIsIjY1IjoiNTUxMzA0MDNhYTEwMDQyMTIwMDAxMTAxMDA4ODNlNDEwMGM5MTQiLCI2NiI6IjU1MTMwNDAzYWExMDA1MjEyMDAwMTEwMTAwODgzZTQyMDAzMDZiIiwiNjciOiI1NTEzMDQwM2FhMTAwNjIxMjAwMDExMDEwMDg4M2U0MzAwNWI4YyIsIjY4IjoiNTUxMzA0MDNhYTEwMDcyMTIwMDAxMTAxMDA4ODNlNDQwMGMyOTQiLCI2OSI6IjU1MTMwNDAzYWExMDA4MjEyMDAwMTEwMTAwODgzZTQ1MDA1NjkxIiwiNzAiOiI1NTEzMDQwM2FhMTAwOTIxMjAwMDExMDEwMDg4M2U0NjAwYWZlZSIsIjcxIjoiNTUxMzA0MDNhYTEwMGEyMTIwMDAxMTAxMDA4ODNlNDcwMGM0MDkiLCI3MiI6IjU1MTMwNDAzYWExMDBiMjEyMDAwMTEwMTAwODgzZTQ4MDA5ZGRmIiwiNzMiOiI1NTEzMDQwM2FhMTAwYzIxMjAwMDExMDEwMDg4M2U0OTAwYTM2NiIsIjc0IjoiNTUxMzA0MDNhYTEwMGQyMTIwMDAxMTAxMDA4ODNlNGEwMDVhMTkiLCI3NSI6IjU1MTMwNDAzYWExMDBlMjEyMDAwMTEwMTAwODgzZTRiMDAzMWZlIiwiNzYiOiI1NTEzMDQwM2FhMTAwZjIxMjAwMDExMDEwMDg4M2U0YzAwYThlNiIsIjc3IjoiNTUxMzA0MDNhYTEwMTAyMTIwMDAxMTAxMDA4ODNlNGQwMDc5OTIiLCI3OCI6IjU1MTMwNDAzYWExMDExMjEyMDAwMTEwMTAwODgzZTRlMDA4MGVkIiwiNzkiOiI1NTEzMDQwM2FhMTAxMjIxMjAwMDExMDEwMDg4M2U0ZjAwZWIwYSIsIjgwIjoiNTUxMzA0MDNhYTEwMTMyMTIwMDAxMTAxMDA4ODNlNTAwMDIzNDkiLCI4MSI6IjU1MTMwNDAzYWExMDE0MjEyMDAwMTEwMTAwODgzZTUxMDAxZGYwIiwiODIiOiI1NTEzMDQwM2FhMTAxNTIxMjAwMDExMDEwMDg4M2U1MjAwZTQ4ZiIsIjgzIjoiNTUxMzA0MDNhYTEwMTYyMTIwMDAxMTAxMDA4ODNlNTMwMDhmNjgiLCI4NCI6IjU1MTMwNDAzYWExMDE3MjEyMDAwMTEwMTAwODgzZTU0MDAxNjcwIiwiODUiOiI1NTEzMDQwM2FhMTAxODIxMjAwMDExMDEwMDg4M2U1NTAwODI3NSIsIjg2IjoiNTUxMzA0MDNhYTEwMTkyMTIwMDAxMTAxMDA4ODNlNTYwMDdiMGEiLCI4NyI6IjU1MTMwNDAzYWExMDFhMjEyMDAwMTEwMTAwODgzZTU3MDAxMGVkIiwiODgiOiI1NTEzMDQwM2FhMTAxYjIxMjAwMDExMDEwMDg4M2U1ODAwNDkzYiIsIjg5IjoiNTUxMzA0MDNhYTEwMWMyMTIwMDAxMTAxMDA4ODNlNTkwMDc3ODIiLCI5MCI6IjU1MTMwNDAzYWExMDFkMjEyMDAwMTEwMTAwODgzZTVhMDA4ZWZkIiwiOTEiOiI1NTEzMDQwM2FhMTAxZTIxMjAwMDExMDEwMDg4M2U1YjAwZTUxYSIsIjkyIjoiNTUxMzA0MDNhYTEwMWYyMTIwMDAxMTAxMDA4ODNlNWMwMDdjMDIiLCI5MyI6IjU1MTMwNDAzYWExMDIwMjEyMDAwMTEwMTAwODgzZTVkMDAyNzk0IiwiOTQiOiI1NTEzMDQwM2FhMTAyMTIxMjAwMDExMDEwMDg4M2U1ZTAwZGVlYiIsIjk1IjoiNTUxMzA0MDNhYTEwMjIyMTIwMDAxMTAxMDA4ODNlNWYwMGI1MGMiLCI5NiI6IjU1MTMwNDAzYWExMDIzMjEyMDAwMTEwMTAwODgzZTYwMDA0ZTZjIiwiOTciOiI1NTEzMDQwM2FhMTAyNDIxMjAwMDExMDEwMDg4M2U2MTAwNzBkNSIsIjk4IjoiNTUxMzA0MDNhYTEwMjUyMTIwMDAxMTAxMDA4ODNlNjIwMDg5YWEiLCI5OSI6IjU1MTMwNDAzYWExMDI2MjEyMDAwMTEwMTAwODgzZTYzMDBlMjRkIiwiMTAwIjoiNTUxMzA0MDNhYTEwMjcyMTIwMDAxMTAxMDA4ODNlNjQwMDdiNTUiLCIxMDEiOiI1NTEzMDQwM2FhMTAyODIxMjAwMDExMDEwMDg4M2U2NTAwZWY1MCIsIjEwMiI6IjU1MTMwNDAzYWExMDI5MjEyMDAwMTEwMTAwODgzZTY2MDAxNjJmIiwiMTAzIjoiNTUxMzA0MDNhYTEwMmEyMTIwMDAxMTAxMDA4ODNlNjcwMDdkYzgiLCIxMDQiOiI1NTEzMDQwM2FhMTAyYjIxMjAwMDExMDEwMDg4M2U2ODAwMjQxZSIsIjEwNSI6IjU1MTMwNDAzYWExMDJjMjEyMDAwMTEwMTAwODgzZTY5MDAxYWE3IiwiMTA2IjoiNTUxMzA0MDNhYTEwMmQyMTIwMDAxMTAxMDA4ODNlNmEwMGUzZDgiLCIxMDciOiI1NTEzMDQwM2FhMTAyZTIxMjAwMDExMDEwMDg4M2U2YjAwODgzZiIsIjEwOCI6IjU1MTMwNDAzYWExMDJmMjEyMDAwMTEwMTAwODgzZTZjMDAxMTI3IiwiMTA5IjoiNTUxMzA0MDNhYTEwMzAyMTIwMDAxMTAxMDA4ODNlNmQwMGMwNTMiLCIxMTAiOiI1NTEzMDQwM2FhMTAzMTIxMjAwMDExMDEwMDg4M2U2ZTAwMzkyYyIsIjExMSI6IjU1MTMwNDAzYWExMDMyMjEyMDAwMTEwMTAwODgzZTZmMDA1MmNiIiwiMTEyIjoiNTUxMzA0MDNhYTEwMzMyMTIwMDAxMTAxMDA4ODNlNzAwMDlhODgiLCIxMTMiOiI1NTEzMDQwM2FhMTAzNDIxMjAwMDExMDEwMDg4M2U3MTAwYTQzMSIsIjExNCI6IjU1MTMwNDAzYWExMDM1MjEyMDAwMTEwMTAwODgzZTcyMDA1ZDRlIiwiMTE1IjoiNTUxMzA0MDNhYTEwMzYyMTIwMDAxMTAxMDA4ODNlNzMwMDM2YTkiLCIxMTYiOiI1NTEzMDQwM2FhMTAzNzIxMjAwMDExMDEwMDg4M2U3NDAwYWZiMSIsIjExNyI6IjU1MTMwNDAzYWExMDM4MjEyMDAwMTEwMTAwODgzZTc1MDAzYmI0IiwiMTE4IjoiNTUxMzA0MDNhYTEwMzkyMTIwMDAxMTAxMDA4ODNlNzYwMGMyY2IiLCIxMTkiOiI1NTEzMDQwM2FhMTAzYTIxMjAwMDExMDEwMDg4M2U3NzAwYTkyYyIsIjEyMCI6IjU1MTMwNDAzYWExMDNiMjEyMDAwMTEwMTAwODgzZTc4MDBmMGZhIiwiMTIxIjoiNTUxMzA0MDNhYTEwM2MyMTIwMDAxMTAxMDA4ODNlNzkwMGNlNDMiLCIxMjIiOiI1NTEzMDQwM2FhMTAzZDIxMjAwMDExMDEwMDg4M2U3YTAwMzczYyIsIjEyMyI6IjU1MTMwNDAzYWExMDNlMjEyMDAwMTEwMTAwODgzZTdiMDA1Y2RiIiwiMTI0IjoiNTUxMzA0MDNhYTEwM2YyMTIwMDAxMTAxMDA4ODNlN2MwMGM1YzMiLCIxMjUiOiI1NTEzMDQwM2FhMTA0MDIxMjAwMDExMDEwMDg4M2U3ZDAwOWI5OCIsIjEyNiI6IjU1MTMwNDAzYWExMDQxMjEyMDAwMTEwMTAwODgzZTdlMDA2MmU3IiwiMTI3IjoiNTUxMzA0MDNhYTEwNDIyMTIwMDAxMTAxMDA4ODNlN2YwMDA5MDAiLCIxMjgiOiI1NTEzMDQwM2FhMTA0MzIxMjAwMDExMDEwMDg4M2U4MDAwNThhYSIsIjEyOSI6IjU1MTMwNDAzYWExMDQ0MjEyMDAwMTEwMTAwODgzZTgxMDA2NjEzIiwiMTMwIjoiNTUxMzA0MDNhYTEwNDUyMTIwMDAxMTAxMDA4ODNlODIwMDlmNmMiLCIxMzEiOiI1NTEzMDQwM2FhMTA0NjIxMjAwMDExMDEwMDg4M2U4MzAwZjQ4YiIsIjEzMiI6IjU1MTMwNDAzYWExMDQ3MjEyMDAwMTEwMTAwODgzZTg0MDA2ZDkzIiwiMTMzIjoiNTUxMzA0MDNhYTEwNDgyMTIwMDAxMTAxMDA4ODNlODUwMGY5OTYiLCIxMzQiOiI1NTEzMDQwM2FhMTA0OTIxMjAwMDExMDEwMDg4M2U4NjAwMDBlOSIsIjEzNSI6IjU1MTMwNDAzYWExMDRhMjEyMDAwMTEwMTAwODgzZTg3MDA2YjBlIiwiMTM2IjoiNTUxMzA0MDNhYTEwNGIyMTIwMDAxMTAxMDA4ODNlODgwMDMyZDgiLCIxMzciOiI1NTEzMDQwM2FhMTA0YzIxMjAwMDExMDEwMDg4M2U4OTAwMGM2MSIsIjEzOCI6IjU1MTMwNDAzYWExMDRkMjEyMDAwMTEwMTAwODgzZThhMDBmNTFlIiwiMTM5IjoiNTUxMzA0MDNhYTEwNGUyMTIwMDAxMTAxMDA4ODNlOGIwMDllZjkiLCIxNDAiOiI1NTEzMDQwM2FhMTA0ZjIxMjAwMDExMDEwMDg4M2U4YzAwMDdlMSIsIjE0MSI6IjU1MTMwNDAzYWExMDUwMjEyMDAwMTEwMTAwODgzZThkMDBkNjk1IiwiMTQyIjoiNTUxMzA0MDNhYTEwNTEyMTIwMDAxMTAxMDA4ODNlOGUwMDJmZWEiLCIxNDMiOiI1NTEzMDQwM2FhMTA1MjIxMjAwMDExMDEwMDg4M2U4ZjAwNDQwZCIsIjE0NCI6IjU1MTMwNDAzYWExMDUzMjEyMDAwMTEwMTAwODgzZTkwMDA4YzRlIiwiMTQ1IjoiNTUxMzA0MDNhYTEwNTQyMTIwMDAxMTAxMDA4ODNlOTEwMGIyZjciLCIxNDYiOiI1NTEzMDQwM2FhMTA1NTIxMjAwMDExMDEwMDg4M2U5MjAwNGI4OCIsIjE0NyI6IjU1MTMwNDAzYWExMDU2MjEyMDAwMTEwMTAwODgzZTkzMDAyMDZmIiwiMTQ4IjoiNTUxMzA0MDNhYTEwNTcyMTIwMDAxMTAxMDA4ODNlOTQwMGI5NzciLCIxNDkiOiI1NTEzMDQwM2FhMTA1ODIxMjAwMDExMDEwMDg4M2U5NTAwMmQ3MiIsIjE1MCI6IjU1MTMwNDAzYWExMDU5MjEyMDAwMTEwMTAwODgzZTk2MDBkNDBkIiwiMTUxIjoiNTUxMzA0MDNhYTEwNWEyMTIwMDAxMTAxMDA4ODNlOTcwMGJmZWEiLCIxNTIiOiI1NTEzMDQwM2FhMTA1YjIxMjAwMDExMDEwMDg4M2U5ODAwZTYzYyIsIjE1MyI6IjU1MTMwNDAzYWExMDVjMjEyMDAwMTEwMTAwODgzZTk5MDBkODg1IiwiMTU0IjoiNTUxMzA0MDNhYTEwNWQyMTIwMDAxMTAxMDA4ODNlOWEwMDIxZmEiLCIxNTUiOiI1NTEzMDQwM2FhMTA1ZTIxMjAwMDExMDEwMDg4M2U5YjAwNGExZCIsIjE1NiI6IjU1MTMwNDAzYWExMDVmMjEyMDAwMTEwMTAwODgzZTljMDBkMzA1IiwiMTU3IjoiNTUxMzA0MDNhYTEwNjAyMTIwMDAxMTAxMDA4ODNlOWQwMDg4OTMiLCIxNTgiOiI1NTEzMDQwM2FhMTA2MTIxMjAwMDExMDEwMDg4M2U5ZTAwNzFlYyIsIjE1OSI6IjU1MTMwNDAzYWExMDYyMjEyMDAwMTEwMTAwODgzZTlmMDAxYTBiIiwiMTYwIjoiNTUxMzA0MDNhYTEwNjMyMTIwMDAxMTAxMDA4ODNlYTAwMGUxNmIiLCIxNjEiOiI1NTEzMDQwM2FhMTA2NDIxMjAwMDExMDEwMDg4M2VhMTAwZGZkMiIsIjE2MiI6IjU1MTMwNDAzYWExMDY1MjEyMDAwMTEwMTAwODgzZWEyMDAyNmFkIiwiMTYzIjoiNTUxMzA0MDNhYTEwNjYyMTIwMDAxMTAxMDA4ODNlYTMwMDRkNGEiLCIxNjQiOiI1NTEzMDQwM2FhMTA2NzIxMjAwMDExMDEwMDg4M2VhNDAwZDQ1MiIsIjE2NSI6IjU1MTMwNDAzYWExMDY4MjEyMDAwMTEwMTAwODgzZWE1MDA0MDU3IiwiMTY2IjoiNTUxMzA0MDNhYTEwNjkyMTIwMDAxMTAxMDA4ODNlYTYwMGI5MjgiLCIxNjciOiI1NTEzMDQwM2FhMTA2YTIxMjAwMDExMDEwMDg4M2VhNzAwZDJjZiIsIjE2OCI6IjU1MTMwNDAzYWExMDZiMjEyMDAwMTEwMTAwODgzZWE4MDA4YjE5IiwiMTY5IjoiNTUxMzA0MDNhYTEwNmMyMTIwMDAxMTAxMDA4ODNlYTkwMGI1YTAiLCIxNzAiOiI1NTEzMDQwM2FhMTA2ZDIxMjAwMDExMDEwMDg4M2VhYTAwNGNkZiIsIjE3MSI6IjU1MTMwNDAzYWExMDZlMjEyMDAwMTEwMTAwODgzZWFiMDAyNzM4IiwiMTcyIjoiNTUxMzA0MDNhYTEwNmYyMTIwMDAxMTAxMDA4ODNlYWMwMGJlMjAiLCIxNzMiOiI1NTEzMDQwM2FhMTA3MDIxMjAwMDExMDEwMDg4M2VhZDAwNmY1NCIsIjE3NCI6IjU1MTMwNDAzYWExMDcxMjEyMDAwMTEwMTAwODgzZWFlMDA5NjJiIiwiMTc1IjoiNTUxMzA0MDNhYTEwNzIyMTIwMDAxMTAxMDA4ODNlYWYwMGZkY2MiLCIxNzYiOiI1NTEzMDQwM2FhMTA3MzIxMjAwMDExMDEwMDg4M2ViMDAwMzU4ZiIsIjE3NyI6IjU1MTMwNDAzYWExMDc0MjEyMDAwMTEwMTAwODgzZWIxMDAwYjM2IiwiMTc4IjoiNTUxMzA0MDNhYTEwNzUyMTIwMDAxMTAxMDA4ODNlYjIwMGYyNDkiLCIxNzkiOiI1NTEzMDQwM2FhMTA3NjIxMjAwMDExMDEwMDg4M2ViMzAwOTlhZSIsIjE4MCI6IjU1MTMwNDAzYWExMDc3MjEyMDAwMTEwMTAwODgzZWI0MDAwMGI2IiwiMTgxIjoiNTUxMzA0MDNhYTEwNzgyMTIwMDAxMTAxMDA4ODNlYjUwMDk0YjMiLCIxODIiOiI1NTEzMDQwM2FhMTA3OTIxMjAwMDExMDEwMDg4M2ViNjAwNmRjYyIsIjE4MyI6IjU1MTMwNDAzYWExMDdhMjEyMDAwMTEwMTAwODgzZWI3MDAwNjJiIiwiMTg0IjoiNTUxMzA0MDNhYTEwN2IyMTIwMDAxMTAxMDA4ODNlYjgwMDVmZmQiLCIxODUiOiI1NTEzMDQwM2FhMTA3YzIxMjAwMDExMDEwMDg4M2ViOTAwNjE0NCIsIjE4NiI6IjU1MTMwNDAzYWExMDdkMjEyMDAwMTEwMTAwODgzZWJhMDA5ODNiIiwiMTg3IjoiNTUxMzA0MDNhYTEwN2UyMTIwMDAxMTAxMDA4ODNlYmIwMGYzZGMiLCIxODgiOiI1NTEzMDQwM2FhMTA3ZjIxMjAwMDExMDEwMDg4M2ViYzAwNmFjNCIsIjE4OSI6IjU1MTMwNDAzYWExMDgwMjEyMDAwMTEwMTAwODgzZWJkMDAyZjBkIiwiMTkwIjoiNTUxMzA0MDNhYTEwODEyMTIwMDAxMTAxMDA4ODNlYmUwMGQ2NzIiLCIxOTEiOiI1NTEzMDQwM2FhMTA4MjIxMjAwMDExMDEwMDg4M2ViZjAwYmQ5NSIsIjE5MiI6IjU1MTMwNDAzYWExMDgzMjEyMDAwMTEwMTAwODgzZWMwMDAyMGIzIiwiMTkzIjoiNTUxMzA0MDNhYTEwODQyMTIwMDAxMTAxMDA4ODNlYzEwMDFlMGEiLCIxOTQiOiI1NTEzMDQwM2FhMTA4NTIxMjAwMDExMDEwMDg4M2VjMjAwZTc3NSIsIjE5NSI6IjU1MTMwNDAzYWExMDg2MjEyMDAwMTEwMTAwODgzZWMzMDA4YzkyIiwiLTE5NSI6IjU1MTMwNDAzYWExMDAwMjAyMDAwMTEwMTAwODgzZTNkZmZhNzMwIiwiLTE5NCI6IjU1MTMwNDAzYWExMDAxMjAyMDAwMTEwMTAwODgzZTNlZmY1ZTRmIiwiLTE5MyI6IjU1MTMwNDAzYWExMDAyMjAyMDAwMTEwMTAwODgzZTNmZmYzNWE4IiwiLTE5MiI6IjU1MTMwNDAzYWExMDAzMjAyMDAwMTEwMTAwODgzZTQwZmZhODhlIiwiLTE5MSI6IjU1MTMwNDAzYWExMDA0MjAyMDAwMTEwMTAwODgzZTQxZmY5NjM3IiwiLTE5MCI6IjU1MTMwNDAzYWExMDA1MjAyMDAwMTEwMTAwODgzZTQyZmY2ZjQ4IiwiLTE4OSI6IjU1MTMwNDAzYWExMDA2MjAyMDAwMTEwMTAwODgzZTQzZmYwNGFmIiwiLTE4OCI6IjU1MTMwNDAzYWExMDA3MjAyMDAwMTEwMTAwODgzZTQ0ZmY5ZGI3IiwiLTE4NyI6IjU1MTMwNDAzYWExMDA4MjAyMDAwMTEwMTAwODgzZTQ1ZmYwOWIyIiwiLTE4NiI6IjU1MTMwNDAzYWExMDA5MjAyMDAwMTEwMTAwODgzZTQ2ZmZmMGNkIiwiLTE4NSI6IjU1MTMwNDAzYWExMDBhMjAyMDAwMTEwMTAwODgzZTQ3ZmY5YjJhIiwiLTE4NCI6IjU1MTMwNDAzYWExMDBiMjAyMDAwMTEwMTAwODgzZTQ4ZmZjMmZjIiwiLTE4MyI6IjU1MTMwNDAzYWExMDBjMjAyMDAwMTEwMTAwODgzZTQ5ZmZmYzQ1IiwiLTE4MiI6IjU1MTMwNDAzYWExMDBkMjAyMDAwMTEwMTAwODgzZTRhZmYwNTNhIiwiLTE4MSI6IjU1MTMwNDAzYWExMDBlMjAyMDAwMTEwMTAwODgzZTRiZmY2ZWRkIiwiLTE4MCI6IjU1MTMwNDAzYWExMDBmMjAyMDAwMTEwMTAwODgzZTRjZmZmN2M1IiwiLTE3OSI6IjU1MTMwNDAzYWExMDEwMjAyMDAwMTEwMTAwODgzZTRkZmYyNmIxIiwiLTE3OCI6IjU1MTMwNDAzYWExMDExMjAyMDAwMTEwMTAwODgzZTRlZmZkZmNlIiwiLTE3NyI6IjU1MTMwNDAzYWExMDEyMjAyMDAwMTEwMTAwODgzZTRmZmZiNDI5IiwiLTE3NiI6IjU1MTMwNDAzYWExMDEzMjAyMDAwMTEwMTAwODgzZTUwZmY3YzZhIiwiLTE3NSI6IjU1MTMwNDAzYWExMDE0MjAyMDAwMTEwMTAwODgzZTUxZmY0MmQzIiwiLTE3NCI6IjU1MTMwNDAzYWExMDE1MjAyMDAwMTEwMTAwODgzZTUyZmZiYmFjIiwiLTE3MyI6IjU1MTMwNDAzYWExMDE2MjAyMDAwMTEwMTAwODgzZTUzZmZkMDRiIiwiLTE3MiI6IjU1MTMwNDAzYWExMDE3MjAyMDAwMTEwMTAwODgzZTU0ZmY0OTUzIiwiLTE3MSI6IjU1MTMwNDAzYWExMDE4MjAyMDAwMTEwMTAwODgzZTU1ZmZkZDU2IiwiLTE3MCI6IjU1MTMwNDAzYWExMDE5MjAyMDAwMTEwMTAwODgzZTU2ZmYyNDI5IiwiLTE2OSI6IjU1MTMwNDAzYWExMDFhMjAyMDAwMTEwMTAwODgzZTU3ZmY0ZmNlIiwiLTE2OCI6IjU1MTMwNDAzYWExMDFiMjAyMDAwMTEwMTAwODgzZTU4ZmYxNjE4IiwiLTE2NyI6IjU1MTMwNDAzYWExMDFjMjAyMDAwMTEwMTAwODgzZTU5ZmYyOGExIiwiLTE2NiI6IjU1MTMwNDAzYWExMDFkMjAyMDAwMTEwMTAwODgzZTVhZmZkMWRlIiwiLTE2NSI6IjU1MTMwNDAzYWExMDFlMjAyMDAwMTEwMTAwODgzZTViZmZiYTM5IiwiLTE2NCI6IjU1MTMwNDAzYWExMDFmMjAyMDAwMTEwMTAwODgzZTVjZmYyMzIxIiwiLTE2MyI6IjU1MTMwNDAzYWExMDIwMjAyMDAwMTEwMTAwODgzZTVkZmY3OGI3IiwiLTE2MiI6IjU1MTMwNDAzYWExMDIxMjAyMDAwMTEwMTAwODgzZTVlZmY4MWM4IiwiLTE2MSI6IjU1MTMwNDAzYWExMDIyMjAyMDAwMTEwMTAwODgzZTVmZmZlYTJmIiwiLTE2MCI6IjU1MTMwNDAzYWExMDIzMjAyMDAwMTEwMTAwODgzZTYwZmYxMTRmIiwiLTE1OSI6IjU1MTMwNDAzYWExMDI0MjAyMDAwMTEwMTAwODgzZTYxZmYyZmY2IiwiLTE1OCI6IjU1MTMwNDAzYWExMDI1MjAyMDAwMTEwMTAwODgzZTYyZmZkNjg5IiwiLTE1NyI6IjU1MTMwNDAzYWExMDI2MjAyMDAwMTEwMTAwODgzZTYzZmZiZDZlIiwiLTE1NiI6IjU1MTMwNDAzYWExMDI3MjAyMDAwMTEwMTAwODgzZTY0ZmYyNDc2IiwiLTE1NSI6IjU1MTMwNDAzYWExMDI4MjAyMDAwMTEwMTAwODgzZTY1ZmZiMDczIiwiLTE1NCI6IjU1MTMwNDAzYWExMDI5MjAyMDAwMTEwMTAwODgzZTY2ZmY0OTBjIiwiLTE1MyI6IjU1MTMwNDAzYWExMDJhMjAyMDAwMTEwMTAwODgzZTY3ZmYyMmViIiwiLTE1MiI6IjU1MTMwNDAzYWExMDJiMjAyMDAwMTEwMTAwODgzZTY4ZmY3YjNkIiwiLTE1MSI6IjU1MTMwNDAzYWExMDJjMjAyMDAwMTEwMTAwODgzZTY5ZmY0NTg0IiwiLTE1MCI6IjU1MTMwNDAzYWExMDJkMjAyMDAwMTEwMTAwODgzZTZhZmZiY2ZiIiwiLTE0OSI6IjU1MTMwNDAzYWExMDJlMjAyMDAwMTEwMTAwODgzZTZiZmZkNzFjIiwiLTE0OCI6IjU1MTMwNDAzYWExMDJmMjAyMDAwMTEwMTAwODgzZTZjZmY0ZTA0IiwiLTE0NyI6IjU1MTMwNDAzYWExMDMwMjAyMDAwMTEwMTAwODgzZTZkZmY5ZjcwIiwiLTE0NiI6IjU1MTMwNDAzYWExMDMxMjAyMDAwMTEwMTAwODgzZTZlZmY2NjBmIiwiLTE0NSI6IjU1MTMwNDAzYWExMDMyMjAyMDAwMTEwMTAwODgzZTZmZmYwZGU4IiwiLTE0NCI6IjU1MTMwNDAzYWExMDMzMjAyMDAwMTEwMTAwODgzZTcwZmZjNWFiIiwiLTE0MyI6IjU1MTMwNDAzYWExMDM0MjAyMDAwMTEwMTAwODgzZTcxZmZmYjEyIiwiLTE0MiI6IjU1MTMwNDAzYWExMDM1MjAyMDAwMTEwMTAwODgzZTcyZmYwMjZkIiwiLTE0MSI6IjU1MTMwNDAzYWExMDM2MjAyMDAwMTEwMTAwODgzZTczZmY2OThhIiwiLTE0MCI6IjU1MTMwNDAzYWExMDM3MjAyMDAwMTEwMTAwODgzZTc0ZmZmMDkyIiwiLTEzOSI6IjU1MTMwNDAzYWExMDM4MjAyMDAwMTEwMTAwODgzZTc1ZmY2NDk3IiwiLTEzOCI6IjU1MTMwNDAzYWExMDM5MjAyMDAwMTEwMTAwODgzZTc2ZmY5ZGU4IiwiLTEzNyI6IjU1MTMwNDAzYWExMDNhMjAyMDAwMTEwMTAwODgzZTc3ZmZmNjBmIiwiLTEzNiI6IjU1MTMwNDAzYWExMDNiMjAyMDAwMTEwMTAwODgzZTc4ZmZhZmQ5IiwiLTEzNSI6IjU1MTMwNDAzYWExMDNjMjAyMDAwMTEwMTAwODgzZTc5ZmY5MTYwIiwiLTEzNCI6IjU1MTMwNDAzYWExMDNkMjAyMDAwMTEwMTAwODgzZTdhZmY2ODFmIiwiLTEzMyI6IjU1MTMwNDAzYWExMDNlMjAyMDAwMTEwMTAwODgzZTdiZmYwM2Y4IiwiLTEzMiI6IjU1MTMwNDAzYWExMDNmMjAyMDAwMTEwMTAwODgzZTdjZmY5YWUwIiwiLTEzMSI6IjU1MTMwNDAzYWExMDQwMjAyMDAwMTEwMTAwODgzZTdkZmZjNGJiIiwiLTEzMCI6IjU1MTMwNDAzYWExMDQxMjAyMDAwMTEwMTAwODgzZTdlZmYzZGM0IiwiLTEyOSI6IjU1MTMwNDAzYWExMDQyMjAyMDAwMTEwMTAwODgzZTdmZmY1NjIzIiwiLTEyOCI6IjU1MTMwNDAzYWExMDQzMjAyMDAwMTEwMTAwODgzZTgwZmYwNzg5IiwiLTEyNyI6IjU1MTMwNDAzYWExMDQ0MjAyMDAwMTEwMTAwODgzZTgxZmYzOTMwIiwiLTEyNiI6IjU1MTMwNDAzYWExMDQ1MjAyMDAwMTEwMTAwODgzZTgyZmZjMDRmIiwiLTEyNSI6IjU1MTMwNDAzYWExMDQ2MjAyMDAwMTEwMTAwODgzZTgzZmZhYmE4IiwiLTEyNCI6IjU1MTMwNDAzYWExMDQ3MjAyMDAwMTEwMTAwODgzZTg0ZmYzMmIwIiwiLTEyMyI6IjU1MTMwNDAzYWExMDQ4MjAyMDAwMTEwMTAwODgzZTg1ZmZhNmI1IiwiLTEyMiI6IjU1MTMwNDAzYWExMDQ5MjAyMDAwMTEwMTAwODgzZTg2ZmY1ZmNhIiwiLTEyMSI6IjU1MTMwNDAzYWExMDRhMjAyMDAwMTEwMTAwODgzZTg3ZmYzNDJkIiwiLTEyMCI6IjU1MTMwNDAzYWExMDRiMjAyMDAwMTEwMTAwODgzZTg4ZmY2ZGZiIiwiLTExOSI6IjU1MTMwNDAzYWExMDRjMjAyMDAwMTEwMTAwODgzZTg5ZmY1MzQyIiwiLTExOCI6IjU1MTMwNDAzYWExMDRkMjAyMDAwMTEwMTAwODgzZThhZmZhYTNkIiwiLTExNyI6IjU1MTMwNDAzYWExMDRlMjAyMDAwMTEwMTAwODgzZThiZmZjMWRhIiwiLTExNiI6IjU1MTMwNDAzYWExMDRmMjAyMDAwMTEwMTAwODgzZThjZmY1OGMyIiwiLTExNSI6IjU1MTMwNDAzYWExMDUwMjAyMDAwMTEwMTAwODgzZThkZmY4OWI2IiwiLTExNCI6IjU1MTMwNDAzYWExMDUxMjAyMDAwMTEwMTAwODgzZThlZmY3MGM5IiwiLTExMyI6IjU1MTMwNDAzYWExMDUyMjAyMDAwMTEwMTAwODgzZThmZmYxYjJlIiwiLTExMiI6IjU1MTMwNDAzYWExMDUzMjAyMDAwMTEwMTAwODgzZTkwZmZkMzZkIiwiLTExMSI6IjU1MTMwNDAzYWExMDU0MjAyMDAwMTEwMTAwODgzZTkxZmZlZGQ0IiwiLTExMCI6IjU1MTMwNDAzYWExMDU1MjAyMDAwMTEwMTAwODgzZTkyZmYxNGFiIiwiLTEwOSI6IjU1MTMwNDAzYWExMDU2MjAyMDAwMTEwMTAwODgzZTkzZmY3ZjRjIiwiLTEwOCI6IjU1MTMwNDAzYWExMDU3MjAyMDAwMTEwMTAwODgzZTk0ZmZlNjU0IiwiLTEwNyI6IjU1MTMwNDAzYWExMDU4MjAyMDAwMTEwMTAwODgzZTk1ZmY3MjUxIiwiLTEwNiI6IjU1MTMwNDAzYWExMDU5MjAyMDAwMTEwMTAwODgzZTk2ZmY4YjJlIiwiLTEwNSI6IjU1MTMwNDAzYWExMDVhMjAyMDAwMTEwMTAwODgzZTk3ZmZlMGM5IiwiLTEwNCI6IjU1MTMwNDAzYWExMDViMjAyMDAwMTEwMTAwODgzZTk4ZmZiOTFmIiwiLTEwMyI6IjU1MTMwNDAzYWExMDVjMjAyMDAwMTEwMTAwODgzZTk5ZmY4N2E2IiwiLTEwMiI6IjU1MTMwNDAzYWExMDVkMjAyMDAwMTEwMTAwODgzZTlhZmY3ZWQ5IiwiLTEwMSI6IjU1MTMwNDAzYWExMDVlMjAyMDAwMTEwMTAwODgzZTliZmYxNTNlIiwiLTEwMCI6IjU1MTMwNDAzYWExMDVmMjAyMDAwMTEwMTAwODgzZTljZmY4YzI2IiwiLTk5IjoiNTUxMzA0MDNhYTEwNjAyMDIwMDAxMTAxMDA4ODNlOWRmZmQ3YjAiLCItOTgiOiI1NTEzMDQwM2FhMTA2MTIwMjAwMDExMDEwMDg4M2U5ZWZmMmVjZiIsIi05NyI6IjU1MTMwNDAzYWExMDYyMjAyMDAwMTEwMTAwODgzZTlmZmY0NTI4IiwiLTk2IjoiNTUxMzA0MDNhYTEwNjMyMDIwMDAxMTAxMDA4ODNlYTBmZmJlNDgiLCItOTUiOiI1NTEzMDQwM2FhMTA2NDIwMjAwMDExMDEwMDg4M2VhMWZmODBmMSIsIi05NCI6IjU1MTMwNDAzYWExMDY1MjAyMDAwMTEwMTAwODgzZWEyZmY3OThlIiwiLTkzIjoiNTUxMzA0MDNhYTEwNjYyMDIwMDAxMTAxMDA4ODNlYTNmZjEyNjkiLCItOTIiOiI1NTEzMDQwM2FhMTA2NzIwMjAwMDExMDEwMDg4M2VhNGZmOGI3MSIsIi05MSI6IjU1MTMwNDAzYWExMDY4MjAyMDAwMTEwMTAwODgzZWE1ZmYxZjc0IiwiLTkwIjoiNTUxMzA0MDNhYTEwNjkyMDIwMDAxMTAxMDA4ODNlYTZmZmU2MGIiLCItODkiOiI1NTEzMDQwM2FhMTA2YTIwMjAwMDExMDEwMDg4M2VhN2ZmOGRlYyIsIi04OCI6IjU1MTMwNDAzYWExMDZiMjAyMDAwMTEwMTAwODgzZWE4ZmZkNDNhIiwiLTg3IjoiNTUxMzA0MDNhYTEwNmMyMDIwMDAxMTAxMDA4ODNlYTlmZmVhODMiLCItODYiOiI1NTEzMDQwM2FhMTA2ZDIwMjAwMDExMDEwMDg4M2VhYWZmMTNmYyIsIi04NSI6IjU1MTMwNDAzYWExMDZlMjAyMDAwMTEwMTAwODgzZWFiZmY3ODFiIiwiLTg0IjoiNTUxMzA0MDNhYTEwNmYyMDIwMDAxMTAxMDA4ODNlYWNmZmUxMDMiLCItODMiOiI1NTEzMDQwM2FhMTA3MDIwMjAwMDExMDEwMDg4M2VhZGZmMzA3NyIsIi04MiI6IjU1MTMwNDAzYWExMDcxMjAyMDAwMTEwMTAwODgzZWFlZmZjOTA4IiwiLTgxIjoiNTUxMzA0MDNhYTEwNzIyMDIwMDAxMTAxMDA4ODNlYWZmZmEyZWYiLCItODAiOiI1NTEzMDQwM2FhMTA3MzIwMjAwMDExMDEwMDg4M2ViMGZmNmFhYyIsIi03OSI6IjU1MTMwNDAzYWExMDc0MjAyMDAwMTEwMTAwODgzZWIxZmY1NDE1IiwiLTc4IjoiNTUxMzA0MDNhYTEwNzUyMDIwMDAxMTAxMDA4ODNlYjJmZmFkNmEiLCItNzciOiI1NTEzMDQwM2FhMTA3NjIwMjAwMDExMDEwMDg4M2ViM2ZmYzY4ZCIsIi03NiI6IjU1MTMwNDAzYWExMDc3MjAyMDAwMTEwMTAwODgzZWI0ZmY1Zjk1IiwiLTc1IjoiNTUxMzA0MDNhYTEwNzgyMDIwMDAxMTAxMDA4ODNlYjVmZmNiOTAiLCItNzQiOiI1NTEzMDQwM2FhMTA3OTIwMjAwMDExMDEwMDg4M2ViNmZmMzJlZiIsIi03MyI6IjU1MTMwNDAzYWExMDdhMjAyMDAwMTEwMTAwODgzZWI3ZmY1OTA4IiwiLTcyIjoiNTUxMzA0MDNhYTEwN2IyMDIwMDAxMTAxMDA4ODNlYjhmZjAwZGUiLCItNzEiOiI1NTEzMDQwM2FhMTA3YzIwMjAwMDExMDEwMDg4M2ViOWZmM2U2NyIsIi03MCI6IjU1MTMwNDAzYWExMDdkMjAyMDAwMTEwMTAwODgzZWJhZmZjNzE4IiwiLTY5IjoiNTUxMzA0MDNhYTEwN2UyMDIwMDAxMTAxMDA4ODNlYmJmZmFjZmYiLCItNjgiOiI1NTEzMDQwM2FhMTA3ZjIwMjAwMDExMDEwMDg4M2ViY2ZmMzVlNyIsIi02NyI6IjU1MTMwNDAzYWExMDgwMjAyMDAwMTEwMTAwODgzZWJkZmY3MDJlIiwiLTY2IjoiNTUxMzA0MDNhYTEwODEyMDIwMDAxMTAxMDA4ODNlYmVmZjg5NTEiLCItNjUiOiI1NTEzMDQwM2FhMTA4MjIwMjAwMDExMDEwMDg4M2ViZmZmZTJiNiIsIi02NCI6IjU1MTMwNDAzYWExMDgzMjAyMDAwMTEwMTAwODgzZWMwZmY3ZjkwIiwiLTYzIjoiNTUxMzA0MDNhYTEwODQyMDIwMDAxMTAxMDA4ODNlYzFmZjQxMjkiLCItNjIiOiI1NTEzMDQwM2FhMTA4NTIwMjAwMDExMDEwMDg4M2VjMmZmYjg1NiIsIi02MSI6IjU1MTMwNDAzYWExMDg2MjAyMDAwMTEwMTAwODgzZWMzZmZkM2IxIiwiLTYwIjoiNTUxMzA0MDNhYTEwODcyMDIwMDAxMTAxMDA4ODNlYzRmZjRhYTkiLCItNTkiOiI1NTEzMDQwM2FhMTA4ODIwMjAwMDExMDEwMDg4M2VjNWZmZGVhYyIsIi01OCI6IjU1MTMwNDAzYWExMDg5MjAyMDAwMTEwMTAwODgzZWM2ZmYyN2QzIiwiLTU3IjoiNTUxMzA0MDNhYTEwOGEyMDIwMDAxMTAxMDA4ODNlYzdmZjRjMzQiLCItNTYiOiI1NTEzMDQwM2FhMTA4YjIwMjAwMDExMDEwMDg4M2VjOGZmMTVlMiIsIi01NSI6IjU1MTMwNDAzYWExMDhjMjAyMDAwMTEwMTAwODgzZWM5ZmYyYjViIiwiLTU0IjoiNTUxMzA0MDNhYTEwOGQyMDIwMDAxMTAxMDA4ODNlY2FmZmQyMjQiLCItNTMiOiI1NTEzMDQwM2FhMTA4ZTIwMjAwMDExMDEwMDg4M2VjYmZmYjljMyIsIi01MiI6IjU1MTMwNDAzYWExMDhmMjAyMDAwMTEwMTAwODgzZWNjZmYyMGRiIiwiLTUxIjoiNTUxMzA0MDNhYTEwOTAyMDIwMDAxMTAxMDA4ODNlY2RmZmYxYWYiLCItNTAiOiI1NTEzMDQwM2FhMTA5MTIwMjAwMDExMDEwMDg4M2VjZWZmMDhkMCIsIi00OSI6IjU1MTMwNDAzYWExMDkyMjAyMDAwMTEwMTAwODgzZWNmZmY2MzM3IiwiLTQ4IjoiNTUxMzA0MDNhYTEwOTMyMDIwMDAxMTAxMDA4ODNlZDBmZmFiNzQiLCItNDciOiI1NTEzMDQwM2FhMTA5NDIwMjAwMDExMDEwMDg4M2VkMWZmOTVjZCIsIi00NiI6IjU1MTMwNDAzYWExMDk1MjAyMDAwMTEwMTAwODgzZWQyZmY2Y2IyIiwiLTQ1IjoiNTUxMzA0MDNhYTEwOTYyMDIwMDAxMTAxMDA4ODNlZDNmZjA3NTUiLCItNDQiOiI1NTEzMDQwM2FhMTA5NzIwMjAwMDExMDEwMDg4M2VkNGZmOWU0ZCIsIi00MyI6IjU1MTMwNDAzYWExMDk4MjAyMDAwMTEwMTAwODgzZWQ1ZmYwYTQ4IiwiLTQyIjoiNTUxMzA0MDNhYTEwOTkyMDIwMDAxMTAxMDA4ODNlZDZmZmYzMzciLCItNDEiOiI1NTEzMDQwM2FhMTA5YTIwMjAwMDExMDEwMDg4M2VkN2ZmOThkMCIsIi00MCI6IjU1MTMwNDAzYWExMDliMjAyMDAwMTEwMTAwODgzZWQ4ZmZjMTA2IiwiLTM5IjoiNTUxMzA0MDNhYTEwOWMyMDIwMDAxMTAxMDA4ODNlZDlmZmZmYmYiLCItMzgiOiI1NTEzMDQwM2FhMTA5ZDIwMjAwMDExMDEwMDg4M2VkYWZmMDZjMCIsIi0zNyI6IjU1MTMwNDAzYWExMDllMjAyMDAwMTEwMTAwODgzZWRiZmY2ZDI3IiwiLTM2IjoiNTUxMzA0MDNhYTEwOWYyMDIwMDAxMTAxMDA4ODNlZGNmZmY0M2YiLCItMzUiOiI1NTEzMDQwM2FhMTBhMDIwMjAwMDExMDEwMDg4M2VkZGZmYWZhOSIsIi0zNCI6IjU1MTMwNDAzYWExMGExMjAyMDAwMTEwMTAwODgzZWRlZmY1NmQ2IiwiLTMzIjoiNTUxMzA0MDNhYTEwYTIyMDIwMDAxMTAxMDA4ODNlZGZmZjNkMzEiLCItMzIiOiI1NTEzMDQwM2FhMTBhMzIwMjAwMDExMDEwMDg4M2VlMGZmYzY1MSIsIi0zMSI6IjU1MTMwNDAzYWExMGE0MjAyMDAwMTEwMTAwODgzZWUxZmZmOGU4IiwiLTMwIjoiNTUxMzA0MDNhYTEwYTUyMDIwMDAxMTAxMDA4ODNlZTJmZjAxOTciLCItMjkiOiI1NTEzMDQwM2FhMTBhNjIwMjAwMDExMDEwMDg4M2VlM2ZmNmE3MCIsIi0yOCI6IjU1MTMwNDAzYWExMGE3MjAyMDAwMTEwMTAwODgzZWU0ZmZmMzY4IiwiLTI3IjoiNTUxMzA0MDNhYTEwYTgyMDIwMDAxMTAxMDA4ODNlZTVmZjY3NmQiLCItMjYiOiI1NTEzMDQwM2FhMTBhOTIwMjAwMDExMDEwMDg4M2VlNmZmOWUxMiIsIi0yNSI6IjU1MTMwNDAzYWExMGFhMjAyMDAwMTEwMTAwODgzZWU3ZmZmNWY1IiwiLTI0IjoiNTUxMzA0MDNhYTEwYWIyMDIwMDAxMTAxMDA4ODNlZThmZmFjMjMiLCItMjMiOiI1NTEzMDQwM2FhMTBhYzIwMjAwMDExMDEwMDg4M2VlOWZmOTI5YSIsIi0yMiI6IjU1MTMwNDAzYWExMGFkMjAyMDAwMTEwMTAwODgzZWVhZmY2YmU1IiwiLTIxIjoiNTUxMzA0MDNhYTEwYWUyMDIwMDAxMTAxMDA4ODNlZWJmZjAwMDIiLCItMjAiOiI1NTEzMDQwM2FhMTBhZjIwMjAwMDExMDEwMDg4M2VlY2ZmOTkxYSIsIi0xOSI6IjU1MTMwNDAzYWExMGIwMjAyMDAwMTEwMTAwODgzZWVkZmY0ODZlIiwiLTE4IjoiNTUxMzA0MDNhYTEwYjEyMDIwMDAxMTAxMDA4ODNlZWVmZmIxMTEiLCItMTciOiI1NTEzMDQwM2FhMTBiMjIwMjAwMDExMDEwMDg4M2VlZmZmZGFmNiIsIi0xNiI6IjU1MTMwNDAzYWExMGIzMjAyMDAwMTEwMTAwODgzZWYwZmYxMmI1IiwiLTE1IjoiNTUxMzA0MDNhYTEwYjQyMDIwMDAxMTAxMDA4ODNlZjFmZjJjMGMiLCItMTQiOiI1NTEzMDQwM2FhMTBiNTIwMjAwMDExMDEwMDg4M2VmMmZmZDU3MyIsIi0xMyI6IjU1MTMwNDAzYWExMGI2MjAyMDAwMTEwMTAwODgzZWYzZmZiZTk0IiwiLTEyIjoiNTUxMzA0MDNhYTEwYjcyMDIwMDAxMTAxMDA4ODNlZjRmZjI3OGMiLCItMTEiOiI1NTEzMDQwM2FhMTBiODIwMjAwMDExMDEwMDg4M2VmNWZmYjM4OSIsIi0xMCI6IjU1MTMwNDAzYWExMGI5MjAyMDAwMTEwMTAwODgzZWY2ZmY0YWY2IiwiLTkiOiI1NTEzMDQwM2FhMTBiYTIwMjAwMDExMDEwMDg4M2VmN2ZmMjExMSIsIi04IjoiNTUxMzA0MDNhYTEwYmIyMDIwMDAxMTAxMDA4ODNlZjhmZjc4YzciLCItNyI6IjU1MTMwNDAzYWExMGJjMjAyMDAwMTEwMTAwODgzZWY5ZmY0NjdlIiwiLTYiOiI1NTEzMDQwM2FhMTBiZDIwMjAwMDExMDEwMDg4M2VmYWZmYmYwMSIsIi01IjoiNTUxMzA0MDNhYTEwYmUyMDIwMDAxMTAxMDA4ODNlZmJmZmQ0ZTYiLCItNCI6IjU1MTMwNDAzYWExMGJmMjAyMDAwMTEwMTAwODgzZWZjZmY0ZGZlIiwiLTMiOiI1NTEzMDQwM2FhMTBjMDIwMjAwMDExMDEwMDg4M2VmZGZmMTNhNSIsIi0yIjoiNTUxMzA0MDNhYTEwYzEyMDIwMDAxMTAxMDA4ODNlZmVmZmVhZGEiLCItMSI6IjU1MTMwNDAzYWExMGMyMjAyMDAwMTEwMTAwODgzZWZmZmY4MTNkIn0sImludmVyc2VDaGFpbnMiOnsiMCI6IjU1MTMwNDAzYWExMDAwMjAyMDAwMTEwMTAwYjA1MzAwMDAxZDZhIiwiMSI6IjU1MTMwNDAzYWExMDAxMjAyMDAwMTEwMTAwYjA1MzAxMDA1NDI2IiwiMiI6IjU1MTMwNDAzYWExMDAyMjAyMDAwMTEwMTAwYjA1MzAyMDA4ZmYyIiwiMyI6IjU1MTMwNDAzYWExMDAzMjAyMDAwMTEwMTAwYjA1MzAzMDBjNmJlIiwiNCI6IjU1MTMwNDAzYWExMDA0MjAyMDAwMTEwMTAwYjA1MzA0MDAyODUzIiwiNSI6IjU1MTMwNDAzYWExMDA1MjAyMDAwMTEwMTAwYjA1MzA1MDA2MTFmIiwiNiI6IjU1MTMwNDAzYWExMDA2MjAyMDAwMTEwMTAwYjA1MzA2MDBiYWNiIiwiNyI6IjU1MTMwNDAzYWExMDA3MjAyMDAwMTEwMTAwYjA1MzA3MDBmMzg3IiwiOCI6IjU1MTMwNDAzYWExMDA4MjAyMDAwMTEwMTAwYjA1MzA4MDA3NzE4IiwiOSI6IjU1MTMwNDAzYWExMDA5MjAyMDAwMTEwMTAwYjA1MzA5MDAzZTU0IiwiMTAiOiI1NTEzMDQwM2FhMTAwYTIwMjAwMDExMDEwMGIwNTMwYTAwZTU4MCIsIjExIjoiNTUxMzA0MDNhYTEwMGIyMDIwMDAxMTAxMDBiMDUzMGIwMGFjY2MiLCIxMiI6IjU1MTMwNDAzYWExMDBjMjAyMDAwMTEwMTAwYjA1MzBjMDA0MjIxIiwiMTMiOiI1NTEzMDQwM2FhMTAwZDIwMjAwMDExMDEwMGIwNTMwZDAwMGI2ZCIsIjE0IjoiNTUxMzA0MDNhYTEwMGUyMDIwMDAxMTAxMDBiMDUzMGUwMGQwYjkiLCIxNSI6IjU1MTMwNDAzYWExMDBmMjAyMDAwMTEwMTAwYjA1MzBmMDA5OWY1IiwiMTYiOiI1NTEzMDQwM2FhMTAxMDIwMjAwMDExMDEwMGIwNTMxMDAwYzk4ZSIsIjE3IjoiNTUxMzA0MDNhYTEwMTEyMDIwMDAxMTAxMDBiMDUzMTEwMDgwYzIiLCIxOCI6IjU1MTMwNDAzYWExMDEyMjAyMDAwMTEwMTAwYjA1MzEyMDA1YjE2IiwiMTkiOiI1NTEzMDQwM2FhMTAxMzIwMjAwMDExMDEwMGIwNTMxMzAwMTI1YSIsIjIwIjoiNTUxMzA0MDNhYTEwMTQyMDIwMDAxMTAxMDBiMDUzMTQwMGZjYjciLCIyMSI6IjU1MTMwNDAzYWExMDE1MjAyMDAwMTEwMTAwYjA1MzE1MDBiNWZiIiwiMjIiOiI1NTEzMDQwM2FhMTAxNjIwMjAwMDExMDEwMGIwNTMxNjAwNmUyZiIsIjIzIjoiNTUxMzA0MDNhYTEwMTcyMDIwMDAxMTAxMDBiMDUzMTcwMDI3NjMiLCIyNCI6IjU1MTMwNDAzYWExMDE4MjAyMDAwMTEwMTAwYjA1MzE4MDBhM2ZjIiwiMjUiOiI1NTEzMDQwM2FhMTAxOTIwMjAwMDExMDEwMGIwNTMxOTAwZWFiMCIsIjI2IjoiNTUxMzA0MDNhYTEwMWEyMDIwMDAxMTAxMDBiMDUzMWEwMDMxNjQiLCIyNyI6IjU1MTMwNDAzYWExMDFiMjAyMDAwMTEwMTAwYjA1MzFiMDA3ODI4IiwiMjgiOiI1NTEzMDQwM2FhMTAxYzIwMjAwMDExMDEwMGIwNTMxYzAwOTZjNSIsIjI5IjoiNTUxMzA0MDNhYTEwMWQyMDIwMDAxMTAxMDBiMDUzMWQwMGRmODkiLCIzMCI6IjU1MTMwNDAzYWExMDFlMjAyMDAwMTEwMTAwYjA1MzFlMDAwNDVkIiwiMzEiOiI1NTEzMDQwM2FhMTAxZjIwMjAwMDExMDEwMGIwNTMxZjAwNGQxMSIsIjMyIjoiNTUxMzA0MDNhYTEwMjAyMDIwMDAxMTAxMDBiMDUzMjAwMGE0YWIiLCIzMyI6IjU1MTMwNDAzYWExMDIxMjAyMDAwMTEwMTAwYjA1MzIxMDBlZGU3IiwiMzQiOiI1NTEzMDQwM2FhMTAyMjIwMjAwMDExMDEwMGIwNTMyMjAwMzYzMyIsIjM1IjoiNTUxMzA0MDNhYTEwMjMyMDIwMDAxMTAxMDBiMDUzMjMwMDdmN2YiLCIzNiI6IjU1MTMwNDAzYWExMDI0MjAyMDAwMTEwMTAwYjA1MzI0MDA5MTkyIiwiMzciOiI1NTEzMDQwM2FhMTAyNTIwMjAwMDExMDEwMGIwNTMyNTAwZDhkZSIsIjM4IjoiNTUxMzA0MDNhYTEwMjYyMDIwMDAxMTAxMDBiMDUzMjYwMDAzMGEiLCIzOSI6IjU1MTMwNDAzYWExMDI3MjAyMDAwMTEwMTAwYjA1MzI3MDA0YTQ2IiwiNDAiOiI1NTEzMDQwM2FhMTAyODIwMjAwMDExMDEwMGIwNTMyODAwY2VkOSIsIjQxIjoiNTUxMzA0MDNhYTEwMjkyMDIwMDAxMTAxMDBiMDUzMjkwMDg3OTUiLCI0MiI6IjU1MTMwNDAzYWExMDJhMjAyMDAwMTEwMTAwYjA1MzJhMDA1YzQxIiwiNDMiOiI1NTEzMDQwM2FhMTAyYjIwMjAwMDExMDEwMGIwNTMyYjAwMTUwZCIsIjQ0IjoiNTUxMzA0MDNhYTEwMmMyMDIwMDAxMTAxMDBiMDUzMmMwMGZiZTAiLCI0NSI6IjU1MTMwNDAzYWExMDJkMjAyMDAwMTEwMTAwYjA1MzJkMDBiMmFjIiwiNDYiOiI1NTEzMDQwM2FhMTAyZTIwMjAwMDExMDEwMGIwNTMyZTAwNjk3OCIsIjQ3IjoiNTUxMzA0MDNhYTEwMmYyMDIwMDAxMTAxMDBiMDUzMmYwMDIwMzQiLCI0OCI6IjU1MTMwNDAzYWExMDMwMjAyMDAwMTEwMTAwYjA1MzMwMDA3MDRmIiwiNDkiOiI1NTEzMDQwM2FhMTAzMTIwMjAwMDExMDEwMGIwNTMzMTAwMzkwMyIsIjUwIjoiNTUxMzA0MDNhYTEwMzIyMDIwMDAxMTAxMDBiMDUzMzIwMGUyZDciLCI1MSI6IjU1MTMwNDAzYWExMDMzMjAyMDAwMTEwMTAwYjA1MzMzMDBhYjliIiwiNTIiOiI1NTEzMDQwM2FhMTAzNDIwMjAwMDExMDEwMGIwNTMzNDAwNDU3NiIsIjUzIjoiNTUxMzA0MDNhYTEwMzUyMDIwMDAxMTAxMDBiMDUzMzUwMDBjM2EiLCI1NCI6IjU1MTMwNDAzYWExMDM2MjAyMDAwMTEwMTAwYjA1MzM2MDBkN2VlIiwiNTUiOiI1NTEzMDQwM2FhMTAzNzIwMjAwMDExMDEwMGIwNTMzNzAwOWVhMiIsIjU2IjoiNTUxMzA0MDNhYTEwMzgyMDIwMDAxMTAxMDBiMDUzMzgwMDFhM2QiLCI1NyI6IjU1MTMwNDAzYWExMDM5MjAyMDAwMTEwMTAwYjA1MzM5MDA1MzcxIiwiNTgiOiI1NTEzMDQwM2FhMTAzYTIwMjAwMDExMDEwMGIwNTMzYTAwODhhNSIsIjU5IjoiNTUxMzA0MDNhYTEwM2IyMDIwMDAxMTAxMDBiMDUzM2IwMGMxZTkiLCI2MCI6IjU1MTMwNDAzYWExMDNjMjAyMDAwMTEwMTAwYjA1MzNjMDAyZjA0IiwiNjEiOiI1NTEzMDQwM2FhMTAzZDIwMjAwMDExMDEwMGIwNTMzZDAwNjY0OCIsIjYyIjoiNTUxMzA0MDNhYTEwM2UyMDIwMDAxMTAxMDBiMDUzM2UwMGJkOWMiLCI2MyI6IjU1MTMwNDAzYWExMDNmMjAyMDAwMTEwMTAwYjA1MzNmMDBmNGQwIiwiNjQiOiI1NTEzMDQwM2FhMTA0MDIwMjAwMDExMDEwMGIwNTM0MDAwN2VlMSIsIjY1IjoiNTUxMzA0MDNhYTEwNDEyMDIwMDAxMTAxMDBiMDUzNDEwMDM3YWQiLCI2NiI6IjU1MTMwNDAzYWExMDQyMjAyMDAwMTEwMTAwYjA1MzQyMDBlYzc5IiwiNjciOiI1NTEzMDQwM2FhMTA0MzIwMjAwMDExMDEwMGIwNTM0MzAwYTUzNSIsIjY4IjoiNTUxMzA0MDNhYTEwNDQyMDIwMDAxMTAxMDBiMDUzNDQwMDRiZDgiLCI2OSI6IjU1MTMwNDAzYWExMDQ1MjAyMDAwMTEwMTAwYjA1MzQ1MDAwMjk0IiwiNzAiOiI1NTEzMDQwM2FhMTA0NjIwMjAwMDExMDEwMGIwNTM0NjAwZDk0MCIsIjcxIjoiNTUxMzA0MDNhYTEwNDcyMDIwMDAxMTAxMDBiMDUzNDcwMDkwMGMiLCI3MiI6IjU1MTMwNDAzYWExMDQ4MjAyMDAwMTEwMTAwYjA1MzQ4MDAxNDkzIiwiNzMiOiI1NTEzMDQwM2FhMTA0OTIwMjAwMDExMDEwMGIwNTM0OTAwNWRkZiIsIjc0IjoiNTUxMzA0MDNhYTEwNGEyMDIwMDAxMTAxMDBiMDUzNGEwMDg2MGIiLCI3NSI6IjU1MTMwNDAzYWExMDRiMjAyMDAwMTEwMTAwYjA1MzRiMDBjZjQ3IiwiNzYiOiI1NTEzMDQwM2FhMTA0YzIwMjAwMDExMDEwMGIwNTM0YzAwMjFhYSIsIjc3IjoiNTUxMzA0MDNhYTEwNGQyMDIwMDAxMTAxMDBiMDUzNGQwMDY4ZTYiLCI3OCI6IjU1MTMwNDAzYWExMDRlMjAyMDAwMTEwMTAwYjA1MzRlMDBiMzMyIiwiNzkiOiI1NTEzMDQwM2FhMTA0ZjIwMjAwMDExMDEwMGIwNTM0ZjAwZmE3ZSIsIjgwIjoiNTUxMzA0MDNhYTEwNTAyMDIwMDAxMTAxMDBiMDUzNTAwMGFhMDUiLCI4MSI6IjU1MTMwNDAzYWExMDUxMjAyMDAwMTEwMTAwYjA1MzUxMDBlMzQ5IiwiODIiOiI1NTEzMDQwM2FhMTA1MjIwMjAwMDExMDEwMGIwNTM1MjAwMzg5ZCIsIjgzIjoiNTUxMzA0MDNhYTEwNTMyMDIwMDAxMTAxMDBiMDUzNTMwMDcxZDEiLCI4NCI6IjU1MTMwNDAzYWExMDU0MjAyMDAwMTEwMTAwYjA1MzU0MDA5ZjNjIiwiODUiOiI1NTEzMDQwM2FhMTA1NTIwMjAwMDExMDEwMGIwNTM1NTAwZDY3MCIsIjg2IjoiNTUxMzA0MDNhYTEwNTYyMDIwMDAxMTAxMDBiMDUzNTYwMDBkYTQiLCI4NyI6IjU1MTMwNDAzYWExMDU3MjAyMDAwMTEwMTAwYjA1MzU3MDA0NGU4IiwiODgiOiI1NTEzMDQwM2FhMTA1ODIwMjAwMDExMDEwMGIwNTM1ODAwYzA3NyIsIjg5IjoiNTUxMzA0MDNhYTEwNTkyMDIwMDAxMTAxMDBiMDUzNTkwMDg5M2IiLCI5MCI6IjU1MTMwNDAzYWExMDVhMjAyMDAwMTEwMTAwYjA1MzVhMDA1MmVmIiwiOTEiOiI1NTEzMDQwM2FhMTA1YjIwMjAwMDExMDEwMGIwNTM1YjAwMWJhMyIsIjkyIjoiNTUxMzA0MDNhYTEwNWMyMDIwMDAxMTAxMDBiMDUzNWMwMGY1NGUiLCI5MyI6IjU1MTMwNDAzYWExMDVkMjAyMDAwMTEwMTAwYjA1MzVkMDBiYzAyIiwiOTQiOiI1NTEzMDQwM2FhMTA1ZTIwMjAwMDExMDEwMGIwNTM1ZTAwNjdkNiIsIjk1IjoiNTUxMzA0MDNhYTEwNWYyMDIwMDAxMTAxMDBiMDUzNWYwMDJlOWEiLCI5NiI6IjU1MTMwNDAzYWExMDYwMjAyMDAwMTEwMTAwYjA1MzYwMDBjNzIwIiwiOTciOiI1NTEzMDQwM2FhMTA2MTIwMjAwMDExMDEwMGIwNTM2MTAwOGU2YyIsIjk4IjoiNTUxMzA0MDNhYTEwNjIyMDIwMDAxMTAxMDBiMDUzNjIwMDU1YjgiLCI5OSI6IjU1MTMwNDAzYWExMDYzMjAyMDAwMTEwMTAwYjA1MzYzMDAxY2Y0IiwiMTAwIjoiNTUxMzA0MDNhYTEwNjQyMDIwMDAxMTAxMDBiMDUzNjQwMGYyMTkifX0sInRlbGVtZXRyeSI6eyJtZXNzYWdlVHlwZXMiOnsic3RyZWFtIjoiNTUzYTA0NzAiLCJyZXBTdW1tYXJ5IjoiNTU0YTA0YzYiLCJzZXRTdW1tYXJ5IjoiNTU0ZjA0MzkiLCJzdGF0dXNVcGRhdGUiOiI1NTM0MDRhYyJ9LCJvZmZzZXRzIjp7InNlcXVlbmNlIjo2LCJwaGFzZSI6MTMsInBvc2l0aW9uIjoyNCwiZm9yY2UiOjI2LCJ2ZWxvY2l0eSI6Mjh9LCJwaGFzZXMiOnsiaWRsZSI6MCwiY29uY2VudHJpYyI6MSwiaG9sZCI6MiwiZWNjZW50cmljIjozfSwibm90aWZpY2F0aW9ucyI6eyJtb2RlQ29uZmlybWF0aW9uIjp7ImhlYWRlciI6IjU1MTIiLCJsZW5ndGgiOjE4LCJwYXJhbUlkT2Zmc2V0IjoxMywidmFsdWVPZmZzZXQiOjE1LCJjcmNPZmZzZXQiOjE2fSwibXVsdGlQYXJhbSI6eyJoZWFkZXIiOiI1NTE2IiwicGFyYW1Db3VudE9mZnNldCI6MTEsImZpcnN0UGFyYW1PZmZzZXQiOjEzfSwic2V0dGluZ3NVcGRhdGUiOnsiaGVhZGVyIjoiNTUyZSIsImxlbmd0aCI6NDYsInBhcmFtQ291bnRPZmZzZXQiOjExLCJmaXJzdFBhcmFtT2Zmc2V0IjoxM30sImRldmljZUluaXQiOnsiaGVhZGVyIjoiNTUyMyIsImxlbmd0aCI6MzUsImJhdHRlcnlPZmZzZXQiOjExfSwic3RhdHVzQmF0dGVyeSI6eyJoZWFkZXIiOiI1NTM0IiwibGVuZ3RoIjo1MiwiYmF0dGVyeU9mZnNldCI6MTJ9fSwidWludDE2UGFyYW1JZHMiOlsiODYzZSIsIjg3M2UiLCI4ODNlIiwiODkzZSJdLCJwYXJhbUlkcyI6eyJiYXNlV2VpZ2h0IjoiODYzZSIsImNoYWlucyI6Ijg3M2UiLCJlY2NlbnRyaWMiOiI4ODNlIiwidHJhaW5pbmdNb2RlIjoiYjA0ZiIsImludmVyc2VDaGFpbnMiOiJiMDUzIiwidW5rbm93bjg5M2UiOiI4OTNlIn0sInRyYWluaW5nTW9kZXMiOnsiaWRsZSI6MCwid2VpZ2h0VHJhaW5pbmciOjEsInJlc2lzdGFuY2VCYW5kIjoyLCJyb3dpbmciOjMsImRhbXBlciI6NCwiY3VzdG9tQ3VydmVzIjo2LCJpc29raW5ldGljIjo3LCJpc29tZXRyaWMiOjh9fX0=';
4
+ export default JSON.parse(typeof atob !== 'undefined' ? atob(_e) : Buffer.from(_e, 'base64').toString());
5
+ //# sourceMappingURL=protocol-data.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-data.generated.js","sourceRoot":"","sources":["../../../../../src/voltra/protocol/data/protocol-data.generated.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,oBAAoB;AACpB,MAAM,EAAE,GACN,kulDAAkulD,CAAC;AACrulD,eAAe,IAAI,CAAC,KAAK,CACvB,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAC9E,CAAC"}
@@ -3,10 +3,11 @@
3
3
  *
4
4
  * Low-level protocol decoder for Voltra BLE telemetry notifications.
5
5
  * Only handles parsing bytes into typed data - no business logic.
6
+ * Uses offset-based lookups from protocol.json - no hardcoded byte positions.
6
7
  */
7
- import { MessageTypes, TelemetryOffsets, MovementPhase } from './constants';
8
+ import { MessageTypes, TelemetryOffsets, MovementPhase, NotificationConfigs, ParamIdHex, Uint16ParamIds, TrainingMode, VALID_TRAINING_MODES, } from './constants';
8
9
  import { createFrame } from '../models/telemetry/frame';
9
- import { bytesEqual } from '../../shared/utils';
10
+ import { bytesEqual, bytesToHex } from '../../shared/utils';
10
11
  // =============================================================================
11
12
  // Byte Parsing Helpers
12
13
  // =============================================================================
@@ -41,11 +42,13 @@ function writeInt16LE(data, offset, value) {
41
42
  }
42
43
  /**
43
44
  * Identify the message type from raw bytes.
45
+ * Uses header matching from protocol.json configurations.
44
46
  */
45
47
  export function identifyMessageType(data) {
46
48
  if (data.length < 4)
47
49
  return 'unknown';
48
50
  const msgType = data.slice(0, 4);
51
+ // Check 4-byte message types first (telemetry stream types)
49
52
  if (bytesEqual(msgType, MessageTypes.TELEMETRY_STREAM)) {
50
53
  return 'telemetry_stream';
51
54
  }
@@ -58,6 +61,23 @@ export function identifyMessageType(data) {
58
61
  else if (bytesEqual(msgType, MessageTypes.STATUS_UPDATE)) {
59
62
  return 'status_update';
60
63
  }
64
+ // Check 2-byte headers for other notification types
65
+ const header2 = bytesToHex(data.slice(0, 2));
66
+ if (header2 === NotificationConfigs.modeConfirmation.header) {
67
+ return 'mode_confirmation';
68
+ }
69
+ else if (header2 === NotificationConfigs.multiParam.header) {
70
+ return 'multi_param';
71
+ }
72
+ else if (header2 === NotificationConfigs.settingsUpdate.header) {
73
+ return 'settings_update';
74
+ }
75
+ else if (header2 === NotificationConfigs.deviceInit.header) {
76
+ return 'device_init';
77
+ }
78
+ else if (header2 === NotificationConfigs.statusBattery.header) {
79
+ return 'status_update'; // Also a status type
80
+ }
61
81
  return 'unknown';
62
82
  }
63
83
  // =============================================================================
@@ -87,6 +107,103 @@ export function decodeTelemetryFrame(data) {
87
107
  const velocity = readUint16LE(data, TelemetryOffsets.VELOCITY);
88
108
  return createFrame(sequence, phase, position, force, velocity);
89
109
  }
110
+ /**
111
+ * Decode a mode confirmation notification.
112
+ * Returns the training mode value.
113
+ */
114
+ function decodeModeConfirmation(data) {
115
+ const config = NotificationConfigs.modeConfirmation;
116
+ if (config.length && data.length < config.length)
117
+ return null;
118
+ if (config.valueOffset === undefined)
119
+ return null;
120
+ const rawMode = data[config.valueOffset];
121
+ const mode = VALID_TRAINING_MODES.includes(rawMode)
122
+ ? rawMode
123
+ : TrainingMode.Idle;
124
+ return { type: 'mode_confirmation', mode };
125
+ }
126
+ /**
127
+ * Decode a settings update or multi-param notification.
128
+ * Handles mixed-size value fields: param IDs in Uint16ParamIds get 2-byte
129
+ * (uint16 LE) values; all others get 1-byte (uint8) values.
130
+ */
131
+ function decodeSettingsUpdate(data) {
132
+ const config = NotificationConfigs.settingsUpdate;
133
+ if (config.paramCountOffset === undefined || config.firstParamOffset === undefined) {
134
+ return null;
135
+ }
136
+ const settings = {};
137
+ const paramCount = data[config.paramCountOffset];
138
+ let offset = config.firstParamOffset;
139
+ for (let i = 0; i < paramCount && i < 9; i++) {
140
+ if (offset + 2 > data.length)
141
+ break;
142
+ const paramIdHex = bytesToHex(data.slice(offset, offset + 2));
143
+ offset += 2;
144
+ let value;
145
+ if (Uint16ParamIds.has(paramIdHex)) {
146
+ if (offset + 2 > data.length)
147
+ break;
148
+ value = readUint16LE(data, offset);
149
+ offset += 2;
150
+ }
151
+ else {
152
+ if (offset + 1 > data.length)
153
+ break;
154
+ value = data[offset];
155
+ offset += 1;
156
+ }
157
+ if (paramIdHex === ParamIdHex.BASE_WEIGHT) {
158
+ settings.baseWeight = value;
159
+ }
160
+ else if (paramIdHex === ParamIdHex.CHAINS) {
161
+ settings.chains = value;
162
+ }
163
+ else if (paramIdHex === ParamIdHex.ECCENTRIC) {
164
+ settings.eccentric = value;
165
+ }
166
+ else if (paramIdHex === ParamIdHex.TRAINING_MODE) {
167
+ settings.trainingMode = VALID_TRAINING_MODES.includes(value)
168
+ ? value
169
+ : undefined;
170
+ }
171
+ else if (paramIdHex === ParamIdHex.INVERSE_CHAINS) {
172
+ settings.inverseChains = value;
173
+ }
174
+ }
175
+ return { type: 'settings_update', settings };
176
+ }
177
+ /**
178
+ * Decode a device status notification.
179
+ * Extracts battery level.
180
+ */
181
+ function decodeDeviceStatus(data) {
182
+ // Try device init format first
183
+ const initConfig = NotificationConfigs.deviceInit;
184
+ if (initConfig.length &&
185
+ data.length >= initConfig.length &&
186
+ initConfig.batteryOffset !== undefined) {
187
+ const header = bytesToHex(data.slice(0, 2));
188
+ if (header === initConfig.header) {
189
+ const battery = data[initConfig.batteryOffset];
190
+ return { type: 'device_status', battery };
191
+ }
192
+ }
193
+ // Try status/battery format
194
+ const statusConfig = NotificationConfigs.statusBattery;
195
+ if (statusConfig.length &&
196
+ data.length >= statusConfig.length &&
197
+ statusConfig.batteryOffset !== undefined) {
198
+ const header = bytesToHex(data.slice(0, 2));
199
+ if (header === statusConfig.header) {
200
+ const battery = data[statusConfig.batteryOffset];
201
+ return { type: 'device_status', battery };
202
+ }
203
+ }
204
+ // Fallback: return unknown with raw data
205
+ return { type: 'unknown', data };
206
+ }
90
207
  /**
91
208
  * Decode a BLE notification.
92
209
  * Returns structured data based on message type.
@@ -104,10 +221,16 @@ export function decodeNotification(data) {
104
221
  case 'set_summary':
105
222
  // Device is signaling set completion
106
223
  return { type: 'set_boundary' };
224
+ case 'mode_confirmation':
225
+ return decodeModeConfirmation(data);
226
+ case 'settings_update':
227
+ case 'multi_param':
228
+ return decodeSettingsUpdate(data);
229
+ case 'device_init':
107
230
  case 'status_update':
108
- return { type: 'status', data };
231
+ return decodeDeviceStatus(data);
109
232
  default:
110
- return null;
233
+ return { type: 'unknown', data };
111
234
  }
112
235
  }
113
236
  // =============================================================================
@@ -121,10 +244,11 @@ export function decodeNotification(data) {
121
244
  export function encodeTelemetryFrame(frame) {
122
245
  const data = new Uint8Array(30);
123
246
  // Message type header (telemetry stream)
124
- data[0] = 0x55;
125
- data[1] = 0x3a;
126
- data[2] = 0x04;
127
- data[3] = 0x70;
247
+ const header = MessageTypes.TELEMETRY_STREAM;
248
+ data[0] = header[0];
249
+ data[1] = header[1];
250
+ data[2] = header[2];
251
+ data[3] = header[3];
128
252
  // Sequence (bytes 6-7)
129
253
  writeUint16LE(data, TelemetryOffsets.SEQUENCE, frame.sequence);
130
254
  // Phase (byte 13)
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-decoder.js","sourceRoot":"","sources":["../../../../src/voltra/protocol/telemetry-decoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry-decoder.js","sourceRoot":"","sources":["../../../../src/voltra/protocol/telemetry-decoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * TypeScript types for the consolidated protocol.json structure.
3
+ *
4
+ * These types define the shape of the public protocol data used for
5
+ * command lookup and notification parsing.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/voltra/protocol/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../../src/bluetooth/adapters/native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAsEhD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,GAAG,EAAE,gBAAgB,CAAC;IACtB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sCAAsC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAQD;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,gBAAgB,CAAS;IAGjC,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,uBAAuB,CAAuB;IACtD,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,oBAAoB,CAAuC;IAGnE,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,sBAAsB,CAAuC;IAGrE,OAAO,CAAC,gBAAgB,CAAC,CAAa;IACtC,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,iBAAiB,CAAC,CAAyB;gBAEvC,MAAM,EAAE,mBAAmB;IAevC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;YACW,oBAAoB;IA2BlC;;OAEG;YACW,gBAAgB;YAqChB,gBAAgB;IA2BxB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkExC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwHxE,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,uBAAuB;IAYzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5C;;OAEG;IACM,WAAW,IAAI,OAAO;IAI/B;;OAEG;IACH,kBAAkB,IAAI,MAAM,GAAG,IAAI;IASnC;;OAEG;IACH,wBAAwB,IAAI,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,qBAAqB,CAAC,SAAS,EAAE;QAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;QACvB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KACnC,GAAG,IAAI;IAMR;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAKnE;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../../src/bluetooth/adapters/native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAMxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAsEhD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,GAAG,EAAE,gBAAgB,CAAC;IACtB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sCAAsC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAQD;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,gBAAgB,CAAS;IAGjC,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,uBAAuB,CAAuB;IACtD,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,oBAAoB,CAAuC;IAGnE,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,sBAAsB,CAAuC;IAGrE,OAAO,CAAC,gBAAgB,CAAC,CAAa;IACtC,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,iBAAiB,CAAC,CAAyB;gBAEvC,MAAM,EAAE,mBAAmB;IAevC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;YACW,oBAAoB;IAyBlC;;OAEG;YACW,gBAAgB;YAmChB,gBAAgB;IA2BxB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgExC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkHxE,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,uBAAuB;IAYzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5C;;OAEG;IACM,WAAW,IAAI,OAAO;IAI/B;;OAEG;IACH,kBAAkB,IAAI,MAAM,GAAG,IAAI;IASnC;;OAEG;IACH,wBAAwB,IAAI,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,qBAAqB,CAAC,SAAS,EAAE;QAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;QACvB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KACnC,GAAG,IAAI;IAMR;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAKnE;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../src/bluetooth/adapters/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAMtD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,GAAG,IAAI,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,yDAAyD;IACzD,OAAO,CAAC,aAAa,CAAuB;IAE5C,wDAAwD;IACxD,OAAO,CAAC,cAAc,CAAgC;IAEtD,qDAAqD;IACrD,OAAO,CAAC,iBAAiB,CAAgB;gBAE7B,MAAM,EAAE,aAAa;IAKjC;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI9C;;OAEG;YACW,qBAAqB;IAYnC;;;;;;;;;;;;OAYG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuF9C;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBxE;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1C;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAIhC;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,OAAO;CAKpC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../src/bluetooth/adapters/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAStD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,GAAG,IAAI,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,yDAAyD;IACzD,OAAO,CAAC,aAAa,CAAuB;IAE5C,wDAAwD;IACxD,OAAO,CAAC,cAAc,CAAgC;IAEtD,qDAAqD;IACrD,OAAO,CAAC,iBAAiB,CAAgB;gBAE7B,MAAM,EAAE,aAAa;IAKjC;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI9C;;OAEG;YACW,qBAAqB;IAYnC;;;;;;;;;;;;OAYG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuF9C;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxE;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1C;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAIhC;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,OAAO;CAKpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"web-bluetooth-base.d.ts","sourceRoot":"","sources":["../../../../src/bluetooth/adapters/web-bluetooth-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,GAAG,EAAE,gBAAgB,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,8BAAsB,gBAAiB,SAAQ,cAAc;IAC3D,iCAAiC;IACjC,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAQ;IAEhD,6BAA6B;IAC7B,SAAS,CAAC,MAAM,EAAE,yBAAyB,GAAG,IAAI,CAAQ;IAE1D,2BAA2B;IAC3B,SAAS,CAAC,SAAS,EAAE,iCAAiC,GAAG,IAAI,CAAQ;IAErE,4BAA4B;IAC5B,SAAS,CAAC,UAAU,EAAE,iCAAiC,GAAG,IAAI,CAAQ;IAEtE,gCAAgC;IAChC,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAEnC,6CAA6C;IAC7C,OAAO,CAAC,wBAAwB,CAAyC;gBAE7D,MAAM,EAAE,kBAAkB;IAetC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAEjD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3E;;;OAGG;cACa,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BvE;;OAEG;cACa,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BrD;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQhD;;OAEG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAKlC;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;IAmCzB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5C;;OAEG;IACH,kBAAkB,IAAI,MAAM,GAAG,IAAI;CAQpC"}
1
+ {"version":3,"file":"web-bluetooth-base.d.ts","sourceRoot":"","sources":["../../../../src/bluetooth/adapters/web-bluetooth-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAKxE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,GAAG,EAAE,gBAAgB,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,8BAAsB,gBAAiB,SAAQ,cAAc;IAC3D,iCAAiC;IACjC,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAQ;IAEhD,6BAA6B;IAC7B,SAAS,CAAC,MAAM,EAAE,yBAAyB,GAAG,IAAI,CAAQ;IAE1D,2BAA2B;IAC3B,SAAS,CAAC,SAAS,EAAE,iCAAiC,GAAG,IAAI,CAAQ;IAErE,4BAA4B;IAC5B,SAAS,CAAC,UAAU,EAAE,iCAAiC,GAAG,IAAI,CAAQ;IAEtE,gCAAgC;IAChC,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAEnC,6CAA6C;IAC7C,OAAO,CAAC,wBAAwB,CAAyC;gBAE7D,MAAM,EAAE,kBAAkB;IAetC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAEjD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3E;;;OAGG;cACa,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BvE;;OAEG;cACa,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BrD;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQhD;;OAEG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAKlC;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;IAmCzB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB5C;;OAEG;IACH,kBAAkB,IAAI,MAAM,GAAG,IAAI;CAQpC"}