@reown/appkit-wallet 0.0.3

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 (34) hide show
  1. package/LICENSE +190 -0
  2. package/dist/esm/index.js +8 -0
  3. package/dist/esm/index.js.map +1 -0
  4. package/dist/esm/src/RegexUtil.js +6 -0
  5. package/dist/esm/src/RegexUtil.js.map +1 -0
  6. package/dist/esm/src/W3mFrame.js +137 -0
  7. package/dist/esm/src/W3mFrame.js.map +1 -0
  8. package/dist/esm/src/W3mFrameConstants.js +150 -0
  9. package/dist/esm/src/W3mFrameConstants.js.map +1 -0
  10. package/dist/esm/src/W3mFrameHelpers.js +44 -0
  11. package/dist/esm/src/W3mFrameHelpers.js.map +1 -0
  12. package/dist/esm/src/W3mFrameLogger.js +27 -0
  13. package/dist/esm/src/W3mFrameLogger.js.map +1 -0
  14. package/dist/esm/src/W3mFrameProvider.js +430 -0
  15. package/dist/esm/src/W3mFrameProvider.js.map +1 -0
  16. package/dist/esm/src/W3mFrameSchema.js +532 -0
  17. package/dist/esm/src/W3mFrameSchema.js.map +1 -0
  18. package/dist/esm/src/W3mFrameStorage.js +26 -0
  19. package/dist/esm/src/W3mFrameStorage.js.map +1 -0
  20. package/dist/esm/src/W3mFrameTypes.js +3 -0
  21. package/dist/esm/src/W3mFrameTypes.js.map +1 -0
  22. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  23. package/dist/types/index.d.ts +9 -0
  24. package/dist/types/src/RegexUtil.d.ts +5 -0
  25. package/dist/types/src/W3mFrame.d.ts +20 -0
  26. package/dist/types/src/W3mFrameConstants.d.ts +98 -0
  27. package/dist/types/src/W3mFrameHelpers.d.ts +9 -0
  28. package/dist/types/src/W3mFrameLogger.d.ts +6 -0
  29. package/dist/types/src/W3mFrameProvider.d.ts +112 -0
  30. package/dist/types/src/W3mFrameSchema.d.ts +3127 -0
  31. package/dist/types/src/W3mFrameStorage.d.ts +5 -0
  32. package/dist/types/src/W3mFrameTypes.d.ts +63 -0
  33. package/package.json +40 -0
  34. package/readme.md +11 -0
@@ -0,0 +1,430 @@
1
+ import { W3mFrame } from './W3mFrame.js';
2
+ import { W3mFrameConstants, W3mFrameRpcConstants } from './W3mFrameConstants.js';
3
+ import { W3mFrameStorage } from './W3mFrameStorage.js';
4
+ import { W3mFrameHelpers } from './W3mFrameHelpers.js';
5
+ import { W3mFrameLogger } from './W3mFrameLogger.js';
6
+ export class W3mFrameProvider {
7
+ constructor(projectId, chainId) {
8
+ this.openRpcRequests = [];
9
+ this.w3mLogger = new W3mFrameLogger(projectId);
10
+ this.w3mFrame = new W3mFrame(projectId, true, chainId);
11
+ }
12
+ getLoginEmailUsed() {
13
+ return Boolean(W3mFrameStorage.get(W3mFrameConstants.EMAIL_LOGIN_USED_KEY));
14
+ }
15
+ getEmail() {
16
+ return W3mFrameStorage.get(W3mFrameConstants.EMAIL);
17
+ }
18
+ async connectEmail(payload) {
19
+ try {
20
+ W3mFrameHelpers.checkIfAllowedToTriggerEmail();
21
+ const response = await this.appEvent({
22
+ type: W3mFrameConstants.APP_CONNECT_EMAIL,
23
+ payload
24
+ });
25
+ this.setNewLastEmailLoginTime();
26
+ return response;
27
+ }
28
+ catch (error) {
29
+ this.w3mLogger.logger.error({ error }, 'Error connecting email');
30
+ throw error;
31
+ }
32
+ }
33
+ async connectDevice() {
34
+ try {
35
+ return this.appEvent({
36
+ type: W3mFrameConstants.APP_CONNECT_DEVICE
37
+ });
38
+ }
39
+ catch (error) {
40
+ this.w3mLogger.logger.error({ error }, 'Error connecting device');
41
+ throw error;
42
+ }
43
+ }
44
+ async connectOtp(payload) {
45
+ try {
46
+ return this.appEvent({
47
+ type: W3mFrameConstants.APP_CONNECT_OTP,
48
+ payload
49
+ });
50
+ }
51
+ catch (error) {
52
+ this.w3mLogger.logger.error({ error }, 'Error connecting otp');
53
+ throw error;
54
+ }
55
+ }
56
+ async isConnected() {
57
+ try {
58
+ const response = await this.appEvent({
59
+ type: W3mFrameConstants.APP_IS_CONNECTED
60
+ });
61
+ if (!response.isConnected) {
62
+ this.deleteAuthLoginCache();
63
+ }
64
+ return response;
65
+ }
66
+ catch (error) {
67
+ this.deleteAuthLoginCache();
68
+ this.w3mLogger.logger.error({ error }, 'Error checking connection');
69
+ throw error;
70
+ }
71
+ }
72
+ async getChainId() {
73
+ try {
74
+ const response = await this.appEvent({
75
+ type: W3mFrameConstants.APP_GET_CHAIN_ID
76
+ });
77
+ this.setLastUsedChainId(response.chainId);
78
+ return response;
79
+ }
80
+ catch (error) {
81
+ this.w3mLogger.logger.error({ error }, 'Error getting chain id');
82
+ throw error;
83
+ }
84
+ }
85
+ async getSocialRedirectUri(payload) {
86
+ try {
87
+ return this.appEvent({
88
+ type: W3mFrameConstants.APP_GET_SOCIAL_REDIRECT_URI,
89
+ payload
90
+ });
91
+ }
92
+ catch (error) {
93
+ this.w3mLogger.logger.error({ error }, 'Error getting social redirect uri');
94
+ throw error;
95
+ }
96
+ }
97
+ async updateEmail(payload) {
98
+ try {
99
+ const response = await this.appEvent({
100
+ type: W3mFrameConstants.APP_UPDATE_EMAIL,
101
+ payload
102
+ });
103
+ this.setNewLastEmailLoginTime();
104
+ return response;
105
+ }
106
+ catch (error) {
107
+ this.w3mLogger.logger.error({ error }, 'Error updating email');
108
+ throw error;
109
+ }
110
+ }
111
+ async updateEmailPrimaryOtp(payload) {
112
+ try {
113
+ return this.appEvent({
114
+ type: W3mFrameConstants.APP_UPDATE_EMAIL_PRIMARY_OTP,
115
+ payload
116
+ });
117
+ }
118
+ catch (error) {
119
+ this.w3mLogger.logger.error({ error }, 'Error updating email primary otp');
120
+ throw error;
121
+ }
122
+ }
123
+ async updateEmailSecondaryOtp(payload) {
124
+ try {
125
+ const response = await this.appEvent({
126
+ type: W3mFrameConstants.APP_UPDATE_EMAIL_SECONDARY_OTP,
127
+ payload
128
+ });
129
+ this.setLoginSuccess(response.newEmail);
130
+ return response;
131
+ }
132
+ catch (error) {
133
+ this.w3mLogger.logger.error({ error }, 'Error updating email secondary otp');
134
+ throw error;
135
+ }
136
+ }
137
+ async syncTheme(payload) {
138
+ try {
139
+ return this.appEvent({
140
+ type: W3mFrameConstants.APP_SYNC_THEME,
141
+ payload
142
+ });
143
+ }
144
+ catch (error) {
145
+ this.w3mLogger.logger.error({ error }, 'Error syncing theme');
146
+ throw error;
147
+ }
148
+ }
149
+ async syncDappData(payload) {
150
+ try {
151
+ return this.appEvent({
152
+ type: W3mFrameConstants.APP_SYNC_DAPP_DATA,
153
+ payload
154
+ });
155
+ }
156
+ catch (error) {
157
+ this.w3mLogger.logger.error({ error }, 'Error syncing dapp data');
158
+ throw error;
159
+ }
160
+ }
161
+ async getSmartAccountEnabledNetworks() {
162
+ try {
163
+ const response = await this.appEvent({
164
+ type: W3mFrameConstants.APP_GET_SMART_ACCOUNT_ENABLED_NETWORKS
165
+ });
166
+ this.persistSmartAccountEnabledNetworks(response.smartAccountEnabledNetworks);
167
+ return response;
168
+ }
169
+ catch (error) {
170
+ this.persistSmartAccountEnabledNetworks([]);
171
+ this.w3mLogger.logger.error({ error }, 'Error getting smart account enabled networks');
172
+ throw error;
173
+ }
174
+ }
175
+ async setPreferredAccount(type) {
176
+ try {
177
+ return this.appEvent({
178
+ type: W3mFrameConstants.APP_SET_PREFERRED_ACCOUNT,
179
+ payload: { type }
180
+ });
181
+ }
182
+ catch (error) {
183
+ this.w3mLogger.logger.error({ error }, 'Error setting preferred account');
184
+ throw error;
185
+ }
186
+ }
187
+ async connect(payload) {
188
+ try {
189
+ const chainId = payload?.chainId || this.getLastUsedChainId() || 1;
190
+ const response = await this.appEvent({
191
+ type: W3mFrameConstants.APP_GET_USER,
192
+ payload: { ...payload, chainId }
193
+ });
194
+ this.setLoginSuccess(response.email);
195
+ this.setLastUsedChainId(response.chainId);
196
+ return response;
197
+ }
198
+ catch (error) {
199
+ this.w3mLogger.logger.error({ error }, 'Error connecting');
200
+ throw error;
201
+ }
202
+ }
203
+ async connectSocial(uri) {
204
+ try {
205
+ const response = await this.appEvent({
206
+ type: W3mFrameConstants.APP_CONNECT_SOCIAL,
207
+ payload: { uri }
208
+ });
209
+ if (response.userName) {
210
+ this.setSocialLoginSuccess(response.userName);
211
+ }
212
+ return response;
213
+ }
214
+ catch (error) {
215
+ this.w3mLogger.logger.error({ error }, 'Error connecting social');
216
+ throw error;
217
+ }
218
+ }
219
+ async getFarcasterUri() {
220
+ try {
221
+ const response = await this.appEvent({
222
+ type: W3mFrameConstants.APP_GET_FARCASTER_URI
223
+ });
224
+ return response;
225
+ }
226
+ catch (error) {
227
+ this.w3mLogger.logger.error({ error }, 'Error getting farcaster uri');
228
+ throw error;
229
+ }
230
+ }
231
+ async connectFarcaster() {
232
+ try {
233
+ const response = await this.appEvent({
234
+ type: W3mFrameConstants.APP_CONNECT_FARCASTER
235
+ });
236
+ if (response.userName) {
237
+ this.setSocialLoginSuccess(response.userName);
238
+ }
239
+ return response;
240
+ }
241
+ catch (error) {
242
+ this.w3mLogger.logger.error({ error }, 'Error connecting farcaster');
243
+ throw error;
244
+ }
245
+ }
246
+ async switchNetwork(chainId) {
247
+ try {
248
+ const response = await this.appEvent({
249
+ type: W3mFrameConstants.APP_SWITCH_NETWORK,
250
+ payload: { chainId }
251
+ });
252
+ this.setLastUsedChainId(response.chainId);
253
+ return response;
254
+ }
255
+ catch (error) {
256
+ this.w3mLogger.logger.error({ error }, 'Error switching network');
257
+ throw error;
258
+ }
259
+ }
260
+ async disconnect() {
261
+ try {
262
+ const response = await this.appEvent({
263
+ type: W3mFrameConstants.APP_SIGN_OUT
264
+ });
265
+ this.deleteAuthLoginCache();
266
+ return response;
267
+ }
268
+ catch (error) {
269
+ this.w3mLogger.logger.error({ error }, 'Error disconnecting');
270
+ throw error;
271
+ }
272
+ }
273
+ async request(req) {
274
+ try {
275
+ if (W3mFrameRpcConstants.GET_CHAIN_ID === req.method) {
276
+ return this.getLastUsedChainId();
277
+ }
278
+ this.rpcRequestHandler?.(req);
279
+ const response = await this.appEvent({
280
+ type: W3mFrameConstants.APP_RPC_REQUEST,
281
+ payload: req
282
+ });
283
+ this.rpcSuccessHandler?.(response, req);
284
+ return response;
285
+ }
286
+ catch (error) {
287
+ this.rpcErrorHandler?.(error, req);
288
+ this.w3mLogger.logger.error({ error }, 'Error requesting');
289
+ throw error;
290
+ }
291
+ }
292
+ onRpcRequest(callback) {
293
+ this.rpcRequestHandler = callback;
294
+ }
295
+ onRpcSuccess(callback) {
296
+ this.rpcSuccessHandler = callback;
297
+ }
298
+ onRpcError(callback) {
299
+ this.rpcErrorHandler = callback;
300
+ }
301
+ onIsConnected(callback) {
302
+ this.w3mFrame.events.onFrameEvent(event => {
303
+ if (event.type === W3mFrameConstants.FRAME_GET_USER_SUCCESS) {
304
+ callback(event.payload);
305
+ }
306
+ });
307
+ }
308
+ onNotConnected(callback) {
309
+ this.w3mFrame.events.onFrameEvent(event => {
310
+ if (event.type === W3mFrameConstants.FRAME_IS_CONNECTED_ERROR) {
311
+ callback();
312
+ }
313
+ if (event.type === W3mFrameConstants.FRAME_IS_CONNECTED_SUCCESS &&
314
+ !event.payload.isConnected) {
315
+ callback();
316
+ }
317
+ });
318
+ }
319
+ async getCapabilities() {
320
+ try {
321
+ const capabilities = await this.request({
322
+ method: 'wallet_getCapabilities'
323
+ });
324
+ return capabilities || {};
325
+ }
326
+ catch {
327
+ return {};
328
+ }
329
+ }
330
+ onSetPreferredAccount(callback) {
331
+ this.w3mFrame.events.onFrameEvent(event => {
332
+ if (event.type === W3mFrameConstants.FRAME_SET_PREFERRED_ACCOUNT_SUCCESS) {
333
+ callback(event.payload);
334
+ }
335
+ else if (event.type === W3mFrameConstants.FRAME_SET_PREFERRED_ACCOUNT_ERROR) {
336
+ callback({ type: W3mFrameRpcConstants.ACCOUNT_TYPES.EOA });
337
+ }
338
+ });
339
+ }
340
+ onGetSmartAccountEnabledNetworks(callback) {
341
+ this.w3mFrame.events.onFrameEvent(event => {
342
+ if (event.type === W3mFrameConstants.FRAME_GET_SMART_ACCOUNT_ENABLED_NETWORKS_SUCCESS) {
343
+ callback(event.payload.smartAccountEnabledNetworks);
344
+ }
345
+ else if (event.type === W3mFrameConstants.FRAME_GET_SMART_ACCOUNT_ENABLED_NETWORKS_ERROR) {
346
+ callback([]);
347
+ }
348
+ });
349
+ }
350
+ getAvailableChainIds() {
351
+ return Object.keys(this.w3mFrame.networks);
352
+ }
353
+ rejectRpcRequests() {
354
+ try {
355
+ this.openRpcRequests.forEach(({ abortController, method }) => {
356
+ if (!W3mFrameRpcConstants.SAFE_RPC_METHODS.includes(method)) {
357
+ abortController.abort();
358
+ }
359
+ });
360
+ this.openRpcRequests = [];
361
+ }
362
+ catch (e) {
363
+ this.w3mLogger.logger.error({ error: e }, 'Error aborting RPC request');
364
+ }
365
+ }
366
+ async appEvent(event) {
367
+ await this.w3mFrame.frameLoadPromise;
368
+ const type = event.type.replace('@w3m-app/', '');
369
+ return new Promise((resolve, reject) => {
370
+ const id = Math.random().toString(36).substring(7);
371
+ this.w3mLogger.logger.info?.({ event, id }, 'Sending app event');
372
+ this.w3mFrame.events.postAppEvent({ ...event, id });
373
+ const abortController = new AbortController();
374
+ if (type === 'RPC_REQUEST') {
375
+ const rpcEvent = event;
376
+ this.openRpcRequests = [...this.openRpcRequests, { ...rpcEvent.payload, abortController }];
377
+ }
378
+ abortController.signal.addEventListener('abort', () => {
379
+ if (type === 'RPC_REQUEST') {
380
+ reject(new Error('Request was aborted'));
381
+ }
382
+ });
383
+ function handler(framEvent) {
384
+ if (framEvent.type === `@w3m-frame/${type}_SUCCESS`) {
385
+ if ('payload' in framEvent) {
386
+ resolve(framEvent.payload);
387
+ }
388
+ resolve(undefined);
389
+ }
390
+ else if (framEvent.type === `@w3m-frame/${type}_ERROR`) {
391
+ if ('payload' in framEvent) {
392
+ reject(new Error(framEvent.payload?.message || 'An error occurred'));
393
+ }
394
+ reject(new Error('An error occurred'));
395
+ }
396
+ }
397
+ this.w3mFrame.events.registerFrameEventHandler(id, handler, abortController.signal);
398
+ });
399
+ }
400
+ setNewLastEmailLoginTime() {
401
+ W3mFrameStorage.set(W3mFrameConstants.LAST_EMAIL_LOGIN_TIME, Date.now().toString());
402
+ }
403
+ setSocialLoginSuccess(username) {
404
+ W3mFrameStorage.set(W3mFrameConstants.SOCIAL_USERNAME, username);
405
+ }
406
+ setLoginSuccess(email) {
407
+ if (email) {
408
+ W3mFrameStorage.set(W3mFrameConstants.EMAIL, email);
409
+ }
410
+ W3mFrameStorage.set(W3mFrameConstants.EMAIL_LOGIN_USED_KEY, 'true');
411
+ W3mFrameStorage.delete(W3mFrameConstants.LAST_EMAIL_LOGIN_TIME);
412
+ }
413
+ deleteAuthLoginCache() {
414
+ W3mFrameStorage.delete(W3mFrameConstants.EMAIL_LOGIN_USED_KEY);
415
+ W3mFrameStorage.delete(W3mFrameConstants.EMAIL);
416
+ W3mFrameStorage.delete(W3mFrameConstants.LAST_USED_CHAIN_KEY);
417
+ W3mFrameStorage.delete(W3mFrameConstants.SOCIAL_USERNAME);
418
+ W3mFrameStorage.delete(W3mFrameConstants.SOCIAL, true);
419
+ }
420
+ setLastUsedChainId(chainId) {
421
+ W3mFrameStorage.set(W3mFrameConstants.LAST_USED_CHAIN_KEY, String(chainId));
422
+ }
423
+ getLastUsedChainId() {
424
+ return Number(W3mFrameStorage.get(W3mFrameConstants.LAST_USED_CHAIN_KEY));
425
+ }
426
+ persistSmartAccountEnabledNetworks(networks) {
427
+ W3mFrameStorage.set(W3mFrameConstants.SMART_ACCOUNT_ENABLED_NETWORKS, networks.join(','));
428
+ }
429
+ }
430
+ //# sourceMappingURL=W3mFrameProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"W3mFrameProvider.js","sourceRoot":"","sources":["../../../src/W3mFrameProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,MAAM,OAAO,gBAAgB;IAa3B,YAAmB,SAAiB,EAAE,OAA0C;QAVxE,oBAAe,GACrB,EAAE,CAAA;QAUF,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;IAGM,iBAAiB;QACtB,OAAO,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC7E,CAAC;IAEM,QAAQ;QACb,OAAO,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACrD,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,OAAyD;QACjF,IAAI,CAAC;YACH,eAAe,CAAC,4BAA4B,EAAE,CAAA;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAiB;gBACnD,IAAI,EAAE,iBAAiB,CAAC,iBAAiB;gBACzC,OAAO;aACkB,CAAC,CAAA;YAC5B,IAAI,CAAC,wBAAwB,EAAE,CAAA;YAE/B,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,wBAAwB,CAAC,CAAA;YAChE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAkB;gBACpC,IAAI,EAAE,iBAAiB,CAAC,kBAAkB;aACjB,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAA;YACjE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAuD;QAC7E,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAe;gBACjC,IAAI,EAAE,iBAAiB,CAAC,eAAe;gBACvC,OAAO;aACkB,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,sBAAsB,CAAC,CAAA;YAC9D,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAgB;gBAClD,IAAI,EAAE,iBAAiB,CAAC,gBAAgB;aACf,CAAC,CAAA;YAC5B,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC7B,CAAC;YAED,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAA;YACnE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAe;gBACjD,IAAI,EAAE,iBAAiB,CAAC,gBAAgB;aACf,CAAC,CAAA;YAE5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAEzC,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,wBAAwB,CAAC,CAAA;YAChE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAC/B,OAAiE;QAEjE,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAyB;gBAC3C,IAAI,EAAE,iBAAiB,CAAC,2BAA2B;gBACnD,OAAO;aACkB,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,mCAAmC,CAAC,CAAA;YAC3E,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAwD;QAC/E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAgB;gBAClD,IAAI,EAAE,iBAAiB,CAAC,gBAAgB;gBACxC,OAAO;aACkB,CAAC,CAAA;YAC5B,IAAI,CAAC,wBAAwB,EAAE,CAAA;YAE/B,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,sBAAsB,CAAC,CAAA;YAC9D,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAChC,OAAkE;QAElE,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAA0B;gBAC5C,IAAI,EAAE,iBAAiB,CAAC,4BAA4B;gBACpD,OAAO;aACkB,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,kCAAkC,CAAC,CAAA;YAC1E,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAClC,OAAoE;QAEpE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAA4B;gBAC9D,IAAI,EAAE,iBAAiB,CAAC,8BAA8B;gBACtD,OAAO;aACkB,CAAC,CAAA;YAE5B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAEvC,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,oCAAoC,CAAC,CAAA;YAC5E,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,OAAsD;QAC3E,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAc;gBAChC,IAAI,EAAE,iBAAiB,CAAC,cAAc;gBACtC,OAAO;aACkB,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,qBAAqB,CAAC,CAAA;YAC7D,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,OAAyD;QAEzD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAiB;gBACnC,IAAI,EAAE,iBAAiB,CAAC,kBAAkB;gBAC1C,OAAO;aACkB,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAA;YACjE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,8BAA8B;QACzC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAmC;gBACrE,IAAI,EAAE,iBAAiB,CAAC,sCAAsC;aACrC,CAAC,CAAA;YAC5B,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAA;YAE7E,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAA;YAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,8CAA8C,CAAC,CAAA;YACtF,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,IAA+B;QAC9D,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAwB;gBAC1C,IAAI,EAAE,iBAAiB,CAAC,yBAAyB;gBACjD,OAAO,EAAE,EAAE,IAAI,EAAE;aACQ,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,iCAAiC,CAAC,CAAA;YACzE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAGM,KAAK,CAAC,OAAO,CAAC,OAAqD;QACxE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAA;YAClE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAY;gBAC9C,IAAI,EAAE,iBAAiB,CAAC,YAAY;gBACpC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE;aACP,CAAC,CAAA;YAC5B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACpC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAEzC,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAA;YAC1D,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,GAAW;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAkB;gBACpD,IAAI,EAAE,iBAAiB,CAAC,kBAAkB;gBAC1C,OAAO,EAAE,EAAE,GAAG,EAAE;aACS,CAAC,CAAA;YAE5B,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC/C,CAAC;YAED,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAA;YACjE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAoB;gBACtD,IAAI,EAAE,iBAAiB,CAAC,qBAAqB;aACpB,CAAC,CAAA;YAE5B,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,6BAA6B,CAAC,CAAA;YACrE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,gBAAgB;QAC3B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAqB;gBACvD,IAAI,EAAE,iBAAiB,CAAC,qBAAqB;aACpB,CAAC,CAAA;YAE5B,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC/C,CAAC;YAED,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,4BAA4B,CAAC,CAAA;YACpE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAwB;QACjD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAkB;gBACpD,IAAI,EAAE,iBAAiB,CAAC,kBAAkB;gBAC1C,OAAO,EAAE,EAAE,OAAO,EAAE;aACK,CAAC,CAAA;YAE5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAEzC,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAA;YACjE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAY;gBAC9C,IAAI,EAAE,iBAAiB,CAAC,YAAY;aACX,CAAC,CAAA;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAE3B,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,qBAAqB,CAAC,CAAA;YAC7D,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAA6B;QAChD,IAAI,CAAC;YACH,IAAI,oBAAoB,CAAC,YAAY,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;gBACrD,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAA;YAClC,CAAC;YAED,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAA;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAQ;gBAC1C,IAAI,EAAE,iBAAiB,CAAC,eAAe;gBACvC,OAAO,EAAE,GAAG;aACa,CAAC,CAAA;YAE5B,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YAEvC,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,EAAE,CAAC,KAAc,EAAE,GAAG,CAAC,CAAA;YAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAA;YAC1D,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,QAAqD;QACvE,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAA;IACnC,CAAC;IAEM,YAAY,CACjB,QAAyF;QAEzF,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAA;IACnC,CAAC;IAEM,UAAU,CAAC,QAAmE;QACnF,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAA;IACjC,CAAC;IAEM,aAAa,CAClB,QAA4E;QAE5E,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;gBAC5D,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACzB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,cAAc,CAAC,QAAoB;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,wBAAwB,EAAE,CAAC;gBAC9D,QAAQ,EAAE,CAAA;YACZ,CAAC;YACD,IACE,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,0BAA0B;gBAC3D,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAC1B,CAAC;gBACD,QAAQ,EAAE,CAAA;YACZ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;gBACtC,MAAM,EAAE,wBAAwB;aACjC,CAAC,CAAA;YAEF,OAAO,YAAY,IAAI,EAAE,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IAEM,qBAAqB,CAC1B,QAAyE;QAEzE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,mCAAmC,EAAE,CAAC;gBACzE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACzB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,iCAAiC,EAAE,CAAC;gBAC9E,QAAQ,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,gCAAgC,CAAC,QAAsC;QAC5E,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,gDAAgD,EAAE,CAAC;gBACtF,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAA;YACrD,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,8CAA8C,EAAE,CAAC;gBAC3F,QAAQ,CAAC,EAAE,CAAC,CAAA;YACd,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,oBAAoB;QACzB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAGM,iBAAiB;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC3D,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5D,eAAe,CAAC,KAAK,EAAE,CAAA;gBACzB,CAAC;YACH,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAA;QACzE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,KAAyC;QAEzC,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAA;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QAEhD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;YAClD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAA;YAEhE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAA4B,CAAC,CAAA;YAC7E,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;YAC7C,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,KAA0E,CAAA;gBAC3F,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAA;YAC5F,CAAC;YACD,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;gBAC1C,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,SAAS,OAAO,CAAC,SAAmC;gBAClD,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,IAAI,UAAU,EAAE,CAAC;oBACpD,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;wBAC3B,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;oBAC5B,CAAC;oBACD,OAAO,CAAC,SAAoE,CAAC,CAAA;gBAC/E,CAAC;qBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,IAAI,QAAQ,EAAE,CAAC;oBACzD,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;wBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,IAAI,mBAAmB,CAAC,CAAC,CAAA;oBACtE,CAAC;oBACD,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAA;gBACxC,CAAC;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;QACrF,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,wBAAwB;QAC9B,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;IACrF,CAAC;IAEO,qBAAqB,CAAC,QAAgB;QAC5C,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;IAClE,CAAC;IAEO,eAAe,CAAC,KAAqB;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACrD,CAAC;QAED,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;QACnE,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAA;IACjE,CAAC;IAEO,oBAAoB;QAC1B,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;QAC9D,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAC/C,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAA;QAC7D,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAA;QACzD,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAEO,kBAAkB,CAAC,OAAwB;QACjD,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7E,CAAC;IAEO,kBAAkB;QACxB,OAAO,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAC3E,CAAC;IAEO,kCAAkC,CAAC,QAAkB;QAC3D,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,8BAA8B,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3F,CAAC;CACF"}