miakapi 3.0.3-DEV → 4.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +358 -0
  3. package/contracts/miakapp-v3.json +6 -0
  4. package/dist/access-token-provider.d.ts +8 -0
  5. package/dist/access-token-provider.d.ts.map +1 -0
  6. package/dist/access-token-provider.js +167 -0
  7. package/dist/access-token-provider.js.map +1 -0
  8. package/dist/api.d.ts +224 -0
  9. package/dist/api.d.ts.map +1 -0
  10. package/dist/api.js +47 -0
  11. package/dist/api.js.map +1 -0
  12. package/dist/browser-api.d.ts +113 -0
  13. package/dist/browser-api.d.ts.map +1 -0
  14. package/dist/browser-api.js +2 -0
  15. package/dist/browser-api.js.map +1 -0
  16. package/dist/browser-client.d.ts +3 -0
  17. package/dist/browser-client.d.ts.map +1 -0
  18. package/dist/browser-client.js +678 -0
  19. package/dist/browser-client.js.map +1 -0
  20. package/dist/browser-relay-credential-provider.d.ts +3 -0
  21. package/dist/browser-relay-credential-provider.d.ts.map +1 -0
  22. package/dist/browser-relay-credential-provider.js +243 -0
  23. package/dist/browser-relay-credential-provider.js.map +1 -0
  24. package/dist/browser.d.ts +4 -0
  25. package/dist/browser.d.ts.map +1 -0
  26. package/dist/browser.js +4 -0
  27. package/dist/browser.js.map +1 -0
  28. package/dist/coordinator.d.ts +3 -0
  29. package/dist/coordinator.d.ts.map +1 -0
  30. package/dist/coordinator.js +544 -0
  31. package/dist/coordinator.js.map +1 -0
  32. package/dist/index.d.ts +4 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +4 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/internal/browser-errors.d.ts +31 -0
  37. package/dist/internal/browser-errors.d.ts.map +1 -0
  38. package/dist/internal/browser-errors.js +69 -0
  39. package/dist/internal/browser-errors.js.map +1 -0
  40. package/dist/internal/browser-socket.d.ts +8 -0
  41. package/dist/internal/browser-socket.d.ts.map +1 -0
  42. package/dist/internal/browser-socket.js +204 -0
  43. package/dist/internal/browser-socket.js.map +1 -0
  44. package/dist/internal/calls.d.ts +33 -0
  45. package/dist/internal/calls.d.ts.map +1 -0
  46. package/dist/internal/calls.js +525 -0
  47. package/dist/internal/calls.js.map +1 -0
  48. package/dist/internal/control-plane-response.d.ts +10 -0
  49. package/dist/internal/control-plane-response.d.ts.map +1 -0
  50. package/dist/internal/control-plane-response.js +283 -0
  51. package/dist/internal/control-plane-response.js.map +1 -0
  52. package/dist/internal/declarations.d.ts +62 -0
  53. package/dist/internal/declarations.d.ts.map +1 -0
  54. package/dist/internal/declarations.js +427 -0
  55. package/dist/internal/declarations.js.map +1 -0
  56. package/dist/internal/errors.d.ts +31 -0
  57. package/dist/internal/errors.d.ts.map +1 -0
  58. package/dist/internal/errors.js +72 -0
  59. package/dist/internal/errors.js.map +1 -0
  60. package/dist/internal/events.d.ts +27 -0
  61. package/dist/internal/events.d.ts.map +1 -0
  62. package/dist/internal/events.js +207 -0
  63. package/dist/internal/events.js.map +1 -0
  64. package/dist/internal/presence.d.ts +15 -0
  65. package/dist/internal/presence.d.ts.map +1 -0
  66. package/dist/internal/presence.js +99 -0
  67. package/dist/internal/presence.js.map +1 -0
  68. package/dist/internal/resources.d.ts +33 -0
  69. package/dist/internal/resources.d.ts.map +1 -0
  70. package/dist/internal/resources.js +136 -0
  71. package/dist/internal/resources.js.map +1 -0
  72. package/dist/internal/runtime.d.ts +34 -0
  73. package/dist/internal/runtime.d.ts.map +1 -0
  74. package/dist/internal/runtime.js +17 -0
  75. package/dist/internal/runtime.js.map +1 -0
  76. package/dist/internal/session.d.ts +33 -0
  77. package/dist/internal/session.d.ts.map +1 -0
  78. package/dist/internal/session.js +199 -0
  79. package/dist/internal/session.js.map +1 -0
  80. package/dist/internal/socket.d.ts +6 -0
  81. package/dist/internal/socket.d.ts.map +1 -0
  82. package/dist/internal/socket.js +176 -0
  83. package/dist/internal/socket.js.map +1 -0
  84. package/dist/internal/state.d.ts +21 -0
  85. package/dist/internal/state.d.ts.map +1 -0
  86. package/dist/internal/state.js +133 -0
  87. package/dist/internal/state.js.map +1 -0
  88. package/dist/internal/user-calls.d.ts +27 -0
  89. package/dist/internal/user-calls.d.ts.map +1 -0
  90. package/dist/internal/user-calls.js +325 -0
  91. package/dist/internal/user-calls.js.map +1 -0
  92. package/dist/internal/user-session.d.ts +36 -0
  93. package/dist/internal/user-session.d.ts.map +1 -0
  94. package/dist/internal/user-session.js +250 -0
  95. package/dist/internal/user-session.js.map +1 -0
  96. package/dist/internal/user-state.d.ts +21 -0
  97. package/dist/internal/user-state.d.ts.map +1 -0
  98. package/dist/internal/user-state.js +240 -0
  99. package/dist/internal/user-state.js.map +1 -0
  100. package/dist/internal/validation.d.ts +32 -0
  101. package/dist/internal/validation.d.ts.map +1 -0
  102. package/dist/internal/validation.js +553 -0
  103. package/dist/internal/validation.js.map +1 -0
  104. package/dist/protocol/codec.d.ts +75 -0
  105. package/dist/protocol/codec.d.ts.map +1 -0
  106. package/dist/protocol/codec.js +1091 -0
  107. package/dist/protocol/codec.js.map +1 -0
  108. package/dist/protocol/session.d.ts +14 -0
  109. package/dist/protocol/session.d.ts.map +1 -0
  110. package/dist/protocol/session.js +125 -0
  111. package/dist/protocol/session.js.map +1 -0
  112. package/dist/protocol/user-session.d.ts +14 -0
  113. package/dist/protocol/user-session.d.ts.map +1 -0
  114. package/dist/protocol/user-session.js +116 -0
  115. package/dist/protocol/user-session.js.map +1 -0
  116. package/package.json +58 -10
  117. package/.eslintrc.js +0 -16
  118. package/.gitattributes +0 -2
  119. package/main.js +0 -305
  120. package/miakode.js +0 -56
  121. package/screenshots/bigGrid.jpg +0 -0
  122. package/screenshots/formExample.jpg +0 -0
  123. package/screenshots/properties&table.jpg +0 -0
  124. package/test.js +0 -45
@@ -0,0 +1,69 @@
1
+ export class BrowserClientError extends Error {
2
+ kind;
3
+ retryable;
4
+ outcome;
5
+ code;
6
+ correlation;
7
+ constructor(kind, outcome, message, options = {}) {
8
+ super(message);
9
+ this.name = 'BrowserClientFailure';
10
+ this.kind = kind;
11
+ this.outcome = outcome;
12
+ this.retryable = options.retryable ?? false;
13
+ if (options.code !== undefined)
14
+ this.code = options.code;
15
+ if (options.correlation !== undefined) {
16
+ this.correlation = Object.freeze({ ...options.correlation });
17
+ }
18
+ }
19
+ }
20
+ export function browserInvalidLifecycle(message) {
21
+ return new BrowserClientError('invalid_lifecycle', 'not_dispatched', message);
22
+ }
23
+ export function browserUnavailable(message = 'Browser client is not ready') {
24
+ return new BrowserClientError('unavailable', 'not_dispatched', message, { retryable: true });
25
+ }
26
+ export function browserCancelled(outcome, message = 'Operation was cancelled') {
27
+ return new BrowserClientError('cancelled', outcome, message);
28
+ }
29
+ export function browserOutcomeUnknown(message = 'Transport closed after operation handoff') {
30
+ return new BrowserClientError('unavailable', 'outcome_unknown', message);
31
+ }
32
+ export function browserInternalFailure() {
33
+ return new BrowserClientError('internal', 'not_dispatched', 'Browser client internal failure');
34
+ }
35
+ export function browserProtocolFailure(message = 'Relay protocol violation') {
36
+ return new BrowserClientError('protocol', 'not_dispatched', message);
37
+ }
38
+ function kindFromCode(code) {
39
+ if (code >= 1100 && code <= 1102)
40
+ return 'authentication';
41
+ if (code >= 1200 && code <= 1203)
42
+ return 'authorization';
43
+ if (code >= 1300 && code <= 1305)
44
+ return 'conflict';
45
+ if (code === 1405)
46
+ return 'cancelled';
47
+ if (code >= 1000 && code <= 1005)
48
+ return 'protocol';
49
+ if (code === 1500)
50
+ return 'internal';
51
+ return 'unavailable';
52
+ }
53
+ export function browserRelayFailure(code, retryable, outcome, correlation) {
54
+ const options = correlation === undefined
55
+ ? { code, retryable }
56
+ : { code, retryable, correlation };
57
+ return new BrowserClientError(kindFromCode(code), outcome, 'Relay rejected the operation', options);
58
+ }
59
+ export function safeBrowserLog(logger, record) {
60
+ if (logger === undefined)
61
+ return;
62
+ try {
63
+ logger.write(Object.freeze({ ...record }));
64
+ }
65
+ catch {
66
+ // Diagnostic sinks never control client execution.
67
+ }
68
+ }
69
+ //# sourceMappingURL=browser-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-errors.js","sourceRoot":"","sources":["../../src/internal/browser-errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { BrowserRuntime, ManagedSocket, SocketFactory, SocketHandlers } from './runtime.js';
2
+ export declare class BrowserSocketFactory implements SocketFactory {
3
+ #private;
4
+ constructor(now?: () => number);
5
+ connect(url: string, handlers: SocketHandlers, signal: AbortSignal, onSocket?: (socket: ManagedSocket) => void): Promise<ManagedSocket>;
6
+ }
7
+ export declare function createBrowserRuntime(): BrowserRuntime;
8
+ //# sourceMappingURL=browser-socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-socket.d.ts","sourceRoot":"","sources":["../../src/internal/browser-socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEb,aAAa,EACb,cAAc,EACf,MAAM,cAAc,CAAC;AAqMtB,qBAAa,oBAAqB,YAAW,aAAa;;IAGxD,YAAY,GAAG,GAAE,MAAM,MAAyB,EAE/C;IAEK,OAAO,CACX,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GACzC,OAAO,CAAC,aAAa,CAAC,CAkBxB;CACF;AAcD,wBAAgB,oBAAoB,IAAI,cAAc,CAQrD"}
@@ -0,0 +1,204 @@
1
+ import { LIMITS } from '../protocol/codec.js';
2
+ const MAX_QUEUED_BYTES = 1_048_576;
3
+ const MAX_INBOUND_BYTES_PER_WINDOW = 1_048_576;
4
+ const MAX_INBOUND_FRAMES_PER_WINDOW = 256;
5
+ const INBOUND_WINDOW_MS = 1_000;
6
+ const MAX_TIMER_DELAY_MS = 2_147_483_647;
7
+ const WEBSOCKET_SUBPROTOCOL = 'miakapp';
8
+ const CONNECTING = 0;
9
+ const OPEN = 1;
10
+ const CLOSED = 3;
11
+ function nativeConstructor() {
12
+ const value = globalThis.WebSocket;
13
+ if (value === undefined)
14
+ throw new Error('Native WebSocket is not available');
15
+ return value;
16
+ }
17
+ class BrowserManagedSocket {
18
+ #socket;
19
+ #handlers;
20
+ #signal;
21
+ #now;
22
+ #ready;
23
+ #resolveReady;
24
+ #rejectReady;
25
+ #readySettled = false;
26
+ #detached = false;
27
+ #inboundWindowStartedMs;
28
+ #inboundBytes = 0;
29
+ #inboundFrames = 0;
30
+ constructor(socket, handlers, signal, now) {
31
+ this.#socket = socket;
32
+ this.#handlers = handlers;
33
+ this.#signal = signal;
34
+ this.#now = now;
35
+ socket.binaryType = 'arraybuffer';
36
+ this.#ready = new Promise((resolve, reject) => {
37
+ this.#resolveReady = resolve;
38
+ this.#rejectReady = reject;
39
+ });
40
+ socket.addEventListener('open', this.#onOpen);
41
+ socket.addEventListener('message', this.#onMessage);
42
+ socket.addEventListener('close', this.#onClose);
43
+ socket.addEventListener('error', this.#onError);
44
+ signal.addEventListener('abort', this.#onAbort, { once: true });
45
+ }
46
+ #onOpen = () => {
47
+ if (this.#readySettled)
48
+ return;
49
+ this.#readySettled = true;
50
+ if (this.#socket.protocol !== WEBSOCKET_SUBPROTOCOL) {
51
+ this.#rejectReady?.(new Error('Relay did not negotiate the Miakapp WebSocket subprotocol'));
52
+ this.terminate();
53
+ return;
54
+ }
55
+ this.#resolveReady?.();
56
+ };
57
+ #onMessage = (raw) => {
58
+ if (this.#detached)
59
+ return;
60
+ const event = raw;
61
+ if (!(event.data instanceof ArrayBuffer)) {
62
+ this.#handlers.error(new Error('Relay sent a non-binary WebSocket message'));
63
+ this.terminate();
64
+ return;
65
+ }
66
+ const bytes = event.data.byteLength;
67
+ const now = this.#now();
68
+ if (this.#inboundWindowStartedMs === undefined
69
+ || now < this.#inboundWindowStartedMs
70
+ || now - this.#inboundWindowStartedMs >= INBOUND_WINDOW_MS) {
71
+ this.#inboundWindowStartedMs = now;
72
+ this.#inboundBytes = 0;
73
+ this.#inboundFrames = 0;
74
+ }
75
+ this.#inboundBytes += bytes;
76
+ this.#inboundFrames += 1;
77
+ if (bytes > LIMITS.frameBytes
78
+ || this.#inboundBytes > MAX_INBOUND_BYTES_PER_WINDOW
79
+ || this.#inboundFrames > MAX_INBOUND_FRAMES_PER_WINDOW) {
80
+ this.#handlers.error(new Error('Relay exceeded the browser inbound budget'));
81
+ this.terminate();
82
+ return;
83
+ }
84
+ this.#handlers.message(new Uint8Array(event.data));
85
+ };
86
+ #onClose = (raw) => {
87
+ const event = raw;
88
+ if (!this.#readySettled) {
89
+ this.#readySettled = true;
90
+ this.#rejectReady?.(new Error('WebSocket closed before authentication'));
91
+ }
92
+ if (!this.#detached)
93
+ this.#handlers.close(event.code, event.reason);
94
+ };
95
+ #onError = () => {
96
+ const failure = new Error('WebSocket transport error');
97
+ if (!this.#readySettled) {
98
+ this.#readySettled = true;
99
+ this.#rejectReady?.(failure);
100
+ }
101
+ if (!this.#detached)
102
+ this.#handlers.error(failure);
103
+ };
104
+ #onAbort = () => {
105
+ if (!this.#readySettled) {
106
+ this.#readySettled = true;
107
+ this.#rejectReady?.(this.#signal.reason);
108
+ }
109
+ this.terminate();
110
+ };
111
+ ready() {
112
+ return this.#ready;
113
+ }
114
+ get bufferedBytes() {
115
+ return this.#socket.bufferedAmount;
116
+ }
117
+ write(bytes) {
118
+ if (this.#socket.readyState !== OPEN) {
119
+ return Promise.reject(new Error('WebSocket is not open'));
120
+ }
121
+ if (bytes.byteLength > LIMITS.frameBytes
122
+ || this.#socket.bufferedAmount + bytes.byteLength > MAX_QUEUED_BYTES) {
123
+ return Promise.reject(new RangeError('WebSocket outbound queue limit exceeded'));
124
+ }
125
+ try {
126
+ this.#socket.send(bytes);
127
+ return Promise.resolve();
128
+ }
129
+ catch {
130
+ return Promise.reject(new Error('WebSocket send failed'));
131
+ }
132
+ }
133
+ close(code = 1000, reason = 'shutdown') {
134
+ if (this.#socket.readyState === OPEN || this.#socket.readyState === CONNECTING) {
135
+ try {
136
+ this.#socket.close(code, reason);
137
+ }
138
+ catch {
139
+ try {
140
+ this.#socket.close();
141
+ }
142
+ catch {
143
+ // The browser owns final transport cleanup after both close attempts fail.
144
+ }
145
+ }
146
+ }
147
+ }
148
+ terminate() {
149
+ if (this.#socket.readyState !== CLOSED)
150
+ this.close(1000, 'shutdown');
151
+ }
152
+ detach() {
153
+ if (this.#detached)
154
+ return;
155
+ this.#detached = true;
156
+ this.#signal.removeEventListener('abort', this.#onAbort);
157
+ this.#socket.removeEventListener('open', this.#onOpen);
158
+ this.#socket.removeEventListener('message', this.#onMessage);
159
+ this.#socket.removeEventListener('close', this.#onClose);
160
+ this.#socket.removeEventListener('error', this.#onError);
161
+ }
162
+ }
163
+ export class BrowserSocketFactory {
164
+ #now;
165
+ constructor(now = () => Date.now()) {
166
+ this.#now = now;
167
+ }
168
+ async connect(url, handlers, signal, onSocket) {
169
+ if (signal.aborted)
170
+ throw signal.reason;
171
+ const ManagedWebSocket = nativeConstructor();
172
+ const socket = new BrowserManagedSocket(new ManagedWebSocket(url, WEBSOCKET_SUBPROTOCOL), handlers, signal, this.#now);
173
+ onSocket?.(socket);
174
+ try {
175
+ await socket.ready();
176
+ return socket;
177
+ }
178
+ catch (error) {
179
+ socket.terminate();
180
+ if (onSocket === undefined)
181
+ socket.detach();
182
+ throw error;
183
+ }
184
+ }
185
+ }
186
+ class BrowserTimer {
187
+ #timer;
188
+ constructor(callback, delayMs) {
189
+ this.#timer = setTimeout(callback, Math.min(delayMs, MAX_TIMER_DELAY_MS));
190
+ }
191
+ cancel() {
192
+ clearTimeout(this.#timer);
193
+ }
194
+ }
195
+ export function createBrowserRuntime() {
196
+ const now = () => Date.now();
197
+ return Object.freeze({
198
+ socketFactory: new BrowserSocketFactory(now),
199
+ now,
200
+ random: () => Math.random(),
201
+ setTimer: (callback, delayMs) => new BrowserTimer(callback, delayMs),
202
+ });
203
+ }
204
+ //# sourceMappingURL=browser-socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-socket.js","sourceRoot":"","sources":["../../src/internal/browser-socket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { CallHandle, CoordinatorCalls, CoordinatorFunctions, CoordinatorLogger, DeclarationOptions, FunctionHandler, StartCallOptions } from '../api.js';
2
+ import { type Frame } from '../protocol/codec.js';
3
+ import type { ActiveDeclarations, DeclarationManager } from './declarations.js';
4
+ import { type CoordinatorError } from './errors.js';
5
+ import type { CoordinatorRuntime } from './runtime.js';
6
+ import type { RelaySession } from './session.js';
7
+ export interface CallHost {
8
+ readySession(): RelaySession | undefined;
9
+ currentSession(): RelaySession | undefined;
10
+ activeDeclarations(): ActiveDeclarations | undefined;
11
+ nextCallId(): number;
12
+ nextLocalCallId(): number;
13
+ runtime(): CoordinatorRuntime;
14
+ emitFailure(failure: CoordinatorError): void;
15
+ logger(): CoordinatorLogger | undefined;
16
+ }
17
+ export declare class FunctionManager implements CoordinatorFunctions {
18
+ #private;
19
+ constructor(declarations: DeclarationManager);
20
+ declare(handlers: Readonly<Record<string, FunctionHandler>>, options?: DeclarationOptions): Promise<import('../api.js').DeclarationReceipt>;
21
+ }
22
+ export declare class CallManager implements CoordinatorCalls {
23
+ #private;
24
+ constructor(host: CallHost);
25
+ start(rawOptions: StartCallOptions): CallHandle;
26
+ setActiveDeclarations(active: ActiveDeclarations): void;
27
+ handleFrame(frame: Frame): boolean;
28
+ handleError(id: number, code: number, retryable: boolean): boolean;
29
+ handleResponseError(id: number, code: number, retryable: boolean): boolean;
30
+ disconnected(): void;
31
+ stop(): void;
32
+ }
33
+ //# sourceMappingURL=calls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../src/internal/calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EAIf,gBAAgB,EACjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAkB,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAMrB,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AASjD,MAAM,WAAW,QAAQ;IACvB,YAAY,IAAI,YAAY,GAAG,SAAS,CAAC;IACzC,cAAc,IAAI,YAAY,GAAG,SAAS,CAAC;IAC3C,kBAAkB,IAAI,kBAAkB,GAAG,SAAS,CAAC;IACrD,UAAU,IAAI,MAAM,CAAC;IACrB,eAAe,IAAI,MAAM,CAAC;IAC1B,OAAO,IAAI,kBAAkB,CAAC;IAC9B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC7C,MAAM,IAAI,iBAAiB,GAAG,SAAS,CAAC;CACzC;AAwED,qBAAa,eAAgB,YAAW,oBAAoB;;IAG1D,YAAY,YAAY,EAAE,kBAAkB,EAE3C;IAED,OAAO,CACL,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EACnD,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,OAAO,WAAW,EAAE,kBAAkB,CAAC,CAKjD;CACF;AAED,qBAAa,WAAY,YAAW,gBAAgB;;IAQlD,YAAY,IAAI,EAAE,QAAQ,EAEzB;IAED,KAAK,CAAC,UAAU,EAAE,gBAAgB,GAAG,UAAU,CAqG9C;IAED,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAItD;IAED,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAyEjC;IAED,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAejE;IAED,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAezE;IAED,YAAY,IAAI,IAAI,CAUnB;IAED,IAAI,IAAI,IAAI,CAWX;CAuNF"}