opencode-mobile 1.0.11 → 1.2.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 (99) hide show
  1. package/bin/audit +31 -0
  2. package/bin/qr +13 -0
  3. package/dist/index.d.ts +11 -3
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +545 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/src/cli/endpoint-tester.d.ts +19 -0
  8. package/dist/src/cli/endpoint-tester.d.ts.map +1 -0
  9. package/dist/src/cli/endpoint-tester.js +233 -0
  10. package/dist/src/cli/endpoint-tester.js.map +1 -0
  11. package/dist/src/cli/index.d.ts +20 -0
  12. package/dist/src/cli/index.d.ts.map +1 -0
  13. package/dist/src/cli/index.js +166 -0
  14. package/dist/src/cli/index.js.map +1 -0
  15. package/dist/src/cli/push-tester.d.ts +16 -0
  16. package/dist/src/cli/push-tester.d.ts.map +1 -0
  17. package/dist/src/cli/push-tester.js +293 -0
  18. package/dist/src/cli/push-tester.js.map +1 -0
  19. package/dist/src/cli/qr.d.ts +5 -0
  20. package/dist/src/cli/qr.d.ts.map +1 -0
  21. package/dist/src/cli/qr.js +127 -0
  22. package/dist/src/cli/qr.js.map +1 -0
  23. package/dist/src/cli/report.d.ts +25 -0
  24. package/dist/src/cli/report.d.ts.map +1 -0
  25. package/dist/src/cli/report.js +215 -0
  26. package/dist/src/cli/report.js.map +1 -0
  27. package/dist/src/cli/server-manager.d.ts +28 -0
  28. package/dist/src/cli/server-manager.d.ts.map +1 -0
  29. package/dist/src/cli/server-manager.js +340 -0
  30. package/dist/src/cli/server-manager.js.map +1 -0
  31. package/dist/src/cli/test-runner.d.ts +16 -0
  32. package/dist/src/cli/test-runner.d.ts.map +1 -0
  33. package/dist/src/cli/test-runner.js +201 -0
  34. package/dist/src/cli/test-runner.js.map +1 -0
  35. package/dist/src/cli/tunnel-qr.d.ts +8 -0
  36. package/dist/src/cli/tunnel-qr.d.ts.map +1 -0
  37. package/dist/src/cli/tunnel-qr.js +163 -0
  38. package/dist/src/cli/tunnel-qr.js.map +1 -0
  39. package/dist/src/cli/tunnel-tester.d.ts +22 -0
  40. package/dist/src/cli/tunnel-tester.d.ts.map +1 -0
  41. package/dist/src/cli/tunnel-tester.js +360 -0
  42. package/dist/src/cli/tunnel-tester.js.map +1 -0
  43. package/dist/src/cli/types.d.ts +112 -0
  44. package/dist/src/cli/types.d.ts.map +1 -0
  45. package/dist/src/cli/types.js +5 -0
  46. package/dist/src/cli/types.js.map +1 -0
  47. package/dist/src/push/index.d.ts +1 -0
  48. package/dist/src/push/index.d.ts.map +1 -1
  49. package/dist/src/push/index.js +1 -0
  50. package/dist/src/push/index.js.map +1 -1
  51. package/dist/src/push/notification-handler.d.ts +58 -0
  52. package/dist/src/push/notification-handler.d.ts.map +1 -0
  53. package/dist/src/push/notification-handler.js +110 -0
  54. package/dist/src/push/notification-handler.js.map +1 -0
  55. package/dist/src/tunnel/cloudflare.d.ts +38 -1
  56. package/dist/src/tunnel/cloudflare.d.ts.map +1 -1
  57. package/dist/src/tunnel/cloudflare.js +148 -51
  58. package/dist/src/tunnel/cloudflare.js.map +1 -1
  59. package/dist/src/tunnel/localtunnel.d.ts +32 -1
  60. package/dist/src/tunnel/localtunnel.d.ts.map +1 -1
  61. package/dist/src/tunnel/localtunnel.js +75 -16
  62. package/dist/src/tunnel/localtunnel.js.map +1 -1
  63. package/dist/src/tunnel/metadata.d.ts +29 -0
  64. package/dist/src/tunnel/metadata.d.ts.map +1 -0
  65. package/dist/src/tunnel/metadata.js +83 -0
  66. package/dist/src/tunnel/metadata.js.map +1 -0
  67. package/dist/src/tunnel/ngrok.d.ts +24 -1
  68. package/dist/src/tunnel/ngrok.d.ts.map +1 -1
  69. package/dist/src/tunnel/ngrok.js +381 -20
  70. package/dist/src/tunnel/ngrok.js.map +1 -1
  71. package/dist/src/tunnel/qrcode.d.ts +14 -2
  72. package/dist/src/tunnel/qrcode.d.ts.map +1 -1
  73. package/dist/src/tunnel/qrcode.js +96 -8
  74. package/dist/src/tunnel/qrcode.js.map +1 -1
  75. package/package.json +22 -4
  76. package/dist/push-notifications.d.ts +0 -4
  77. package/dist/push-notifications.d.ts.map +0 -1
  78. package/dist/push-notifications.js +0 -260
  79. package/dist/push-notifications.js.map +0 -1
  80. package/dist/reverse-proxy.d.ts +0 -9
  81. package/dist/reverse-proxy.d.ts.map +0 -1
  82. package/dist/reverse-proxy.js +0 -78
  83. package/dist/reverse-proxy.js.map +0 -1
  84. package/dist/sdk-logger.d.ts +0 -19
  85. package/dist/sdk-logger.d.ts.map +0 -1
  86. package/dist/sdk-logger.js +0 -103
  87. package/dist/sdk-logger.js.map +0 -1
  88. package/dist/src/tunnel/index.d.ts +0 -29
  89. package/dist/src/tunnel/index.d.ts.map +0 -1
  90. package/dist/src/tunnel/index.js +0 -125
  91. package/dist/src/tunnel/index.js.map +0 -1
  92. package/dist/src/utils/port.d.ts +0 -12
  93. package/dist/src/utils/port.d.ts.map +0 -1
  94. package/dist/src/utils/port.js +0 -41
  95. package/dist/src/utils/port.js.map +0 -1
  96. package/dist/tunnel-manager.d.ts +0 -30
  97. package/dist/tunnel-manager.d.ts.map +0 -1
  98. package/dist/tunnel-manager.js +0 -641
  99. package/dist/tunnel-manager.js.map +0 -1
@@ -1,103 +0,0 @@
1
- // Check if we're in development mode (not published to npm)
2
- const isDevMode = process.env.NODE_ENV !== "production" &&
3
- !process.env.npm_package_version;
4
- const defaultConfig = {
5
- level: process.env.LOG_LEVEL || (isDevMode ? "debug" : "info"),
6
- prefix: "App",
7
- showTimestamp: true,
8
- devMode: isDevMode,
9
- };
10
- let globalConfig = { ...defaultConfig };
11
- export function configureLogger(config) {
12
- globalConfig = { ...globalConfig, ...config };
13
- }
14
- export function createLogger(service) {
15
- const shouldLog = (level) => {
16
- const levels = ["debug", "info", "warn", "error"];
17
- return levels.indexOf(level) >= levels.indexOf(globalConfig.level);
18
- };
19
- const formatMessage = (level, message) => {
20
- const timestamp = globalConfig.showTimestamp
21
- ? new Date().toISOString().split("T")[1].slice(0, -1) + "Z"
22
- : "";
23
- const levelIcon = {
24
- debug: "🔍",
25
- info: "ℹ️",
26
- warn: "⚠️",
27
- error: "❌",
28
- }[level];
29
- const parts = [
30
- timestamp,
31
- `[${globalConfig.prefix}]`,
32
- `[${service}]`,
33
- levelIcon,
34
- message,
35
- ].filter(Boolean);
36
- return parts.join(" ");
37
- };
38
- return {
39
- debug: (message, data) => {
40
- if (!shouldLog("debug"))
41
- return;
42
- console.log(formatMessage("debug", message));
43
- if (data)
44
- console.debug("[DEBUG-DATA]", JSON.stringify(data, null, 2));
45
- },
46
- dev: (message, data) => {
47
- // Only log in development mode
48
- if (!globalConfig.devMode)
49
- return;
50
- console.log(formatMessage("debug", message));
51
- if (data)
52
- console.debug("[DEV-DATA]", JSON.stringify(data, null, 2));
53
- },
54
- info: (message, data) => {
55
- if (!shouldLog("info"))
56
- return;
57
- console.log(formatMessage("info", message));
58
- if (data)
59
- console.debug("[INFO-DATA]", JSON.stringify(data, null, 2));
60
- },
61
- warn: (message, data) => {
62
- if (!shouldLog("warn"))
63
- return;
64
- console.warn(formatMessage("warn", message));
65
- if (data)
66
- console.debug("[WARN-DATA]", JSON.stringify(data, null, 2));
67
- },
68
- error: (message, extra) => {
69
- if (!shouldLog("error"))
70
- return;
71
- console.error(formatMessage("error", message));
72
- if (extra) {
73
- if (extra instanceof Error || extra?.stack) {
74
- console.error("[ERROR]", extra);
75
- if (extra instanceof Error) {
76
- console.error("[ERROR-STACK]", extra.stack);
77
- }
78
- }
79
- else if (typeof extra === "object" && extra !== null) {
80
- console.error("[ERROR-EXTRA]", JSON.stringify(extra, null, 2));
81
- }
82
- else {
83
- console.error("[ERROR-DETAILS]", extra);
84
- }
85
- }
86
- },
87
- log: (level, message, data) => {
88
- if (!shouldLog(level))
89
- return;
90
- console.log(formatMessage(level, message));
91
- if (data)
92
- console.debug(`[${level.toUpperCase()}-DATA]`, JSON.stringify(data, null, 2));
93
- },
94
- };
95
- }
96
- // Convenience function for quick logging
97
- export function log(level, service, message, data) {
98
- const logger = createLogger(service);
99
- logger.log(level, message, data);
100
- }
101
- // Export for use in plugins
102
- export default createLogger;
103
- //# sourceMappingURL=sdk-logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdk-logger.js","sourceRoot":"","sources":["../sdk-logger.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Tunnel manager - unified interface for all tunnel providers
3
- */
4
- import type { TunnelConfig, TunnelInfo, TunnelDetails } from "./types";
5
- /**
6
- * Start a tunnel with the specified provider
7
- */
8
- export declare function startTunnel(config: TunnelConfig): Promise<TunnelInfo>;
9
- /**
10
- * Stop the current tunnel
11
- */
12
- export declare function stopTunnel(): Promise<void>;
13
- /**
14
- * Display QR code for tunnel URL
15
- */
16
- export declare function displayQR(tunnelInfo: TunnelInfo): Promise<void>;
17
- /**
18
- * Get current tunnel details
19
- */
20
- export declare function getTunnelDetails(): TunnelDetails;
21
- /**
22
- * Get current tunnel info
23
- */
24
- export declare function getTunnelInfo(): TunnelInfo | null;
25
- /**
26
- * Get current server URL from tunnel
27
- */
28
- export declare function getServerUrl(): string;
29
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tunnel/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQvE;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAoC3E;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBhD;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAiBhD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAKjD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAKrC"}
@@ -1,125 +0,0 @@
1
- /**
2
- * Tunnel manager - unified interface for all tunnel providers
3
- */
4
- import { startNgrokTunnel, stopNgrokTunnel } from "./ngrok";
5
- import { startLocaltunnel, stopLocaltunnel } from "./localtunnel";
6
- import { startCloudflareTunnel, stopCloudflareTunnel } from "./cloudflare";
7
- import { displayQRCode } from "../../tunnel-manager";
8
- let currentTunnel = null;
9
- /**
10
- * Start a tunnel with the specified provider
11
- */
12
- export async function startTunnel(config) {
13
- // Validate that we have a proper TunnelConfig object
14
- if (!config || typeof config !== 'object') {
15
- console.log("[Tunnel] startTunnel called with invalid config type:", typeof config);
16
- throw new Error("Invalid tunnel config: config must be an object");
17
- }
18
- // Check if this looks like the OpenCode client context (has 'client' property)
19
- if ('client' in config) {
20
- console.log("[Tunnel] startTunnel called with OpenCode client context instead of TunnelConfig");
21
- console.log("[Tunnel] This indicates a plugin initialization issue");
22
- throw new Error("Invalid tunnel config: received OpenCode client context");
23
- }
24
- if (!config?.port) {
25
- console.log("[Tunnel] startTunnel called with invalid config:", JSON.stringify(config).substring(0, 200));
26
- throw new Error("Invalid tunnel config: port is required");
27
- }
28
- const provider = config.provider || "ngrok";
29
- switch (provider) {
30
- case "ngrok":
31
- currentTunnel = await startNgrokTunnel(config);
32
- break;
33
- case "localtunnel":
34
- currentTunnel = await startLocaltunnel(config);
35
- break;
36
- case "cloudflare":
37
- currentTunnel = await startCloudflareTunnel(config);
38
- break;
39
- default:
40
- throw new Error(`Unknown tunnel provider: ${provider}`);
41
- }
42
- return currentTunnel;
43
- }
44
- /**
45
- * Stop the current tunnel
46
- */
47
- export async function stopTunnel() {
48
- if (!currentTunnel) {
49
- return;
50
- }
51
- switch (currentTunnel.provider) {
52
- case "ngrok":
53
- await stopNgrokTunnel();
54
- break;
55
- case "localtunnel":
56
- await stopLocaltunnel();
57
- break;
58
- case "cloudflare":
59
- await stopCloudflareTunnel();
60
- break;
61
- }
62
- currentTunnel = null;
63
- }
64
- /**
65
- * Display QR code for tunnel URL
66
- */
67
- export async function displayQR(tunnelInfo) {
68
- // Validate that we have a proper TunnelInfo object, not the OpenCode client context
69
- if (!tunnelInfo || typeof tunnelInfo !== 'object') {
70
- console.log("[Tunnel] displayQR called with invalid tunnelInfo type:", typeof tunnelInfo);
71
- return;
72
- }
73
- // Check if this looks like the OpenCode client context (has 'client' property)
74
- if ('client' in tunnelInfo) {
75
- console.log("[Tunnel] displayQR called with OpenCode client context instead of TunnelInfo");
76
- console.log("[Tunnel] This indicates a plugin initialization issue");
77
- return;
78
- }
79
- if (!tunnelInfo?.url) {
80
- console.log("[Tunnel] displayQR called with invalid tunnelInfo:", JSON.stringify(tunnelInfo).substring(0, 200));
81
- console.log("[Tunnel] Stack:", new Error().stack?.split('\n').slice(2, 6).join('\n'));
82
- return;
83
- }
84
- await displayQRCode(tunnelInfo.url);
85
- }
86
- /**
87
- * Get current tunnel details
88
- */
89
- export function getTunnelDetails() {
90
- if (!currentTunnel?.url) {
91
- return {
92
- type: "none",
93
- url: null,
94
- loginStatus: "unknown",
95
- loginId: null,
96
- configPath: null,
97
- };
98
- }
99
- return {
100
- type: currentTunnel.provider,
101
- url: currentTunnel.url,
102
- loginStatus: "unknown",
103
- loginId: null,
104
- configPath: null,
105
- };
106
- }
107
- /**
108
- * Get current tunnel info
109
- */
110
- export function getTunnelInfo() {
111
- if (!currentTunnel?.url) {
112
- return null;
113
- }
114
- return currentTunnel;
115
- }
116
- /**
117
- * Get current server URL from tunnel
118
- */
119
- export function getServerUrl() {
120
- if (!currentTunnel?.url) {
121
- throw new Error("No tunnel active");
122
- }
123
- return currentTunnel.url;
124
- }
125
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tunnel/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Port detection utilities
3
- */
4
- /**
5
- * Find the next available port starting from a given port
6
- * @param startPort - Port to start searching from
7
- * @param maxAttempts - Maximum number of ports to try
8
- * @returns The first available port
9
- * @throws Error if no port is found after maxAttempts
10
- */
11
- export declare function getNextAvailablePort(startPort: number, maxAttempts?: number): Promise<number>;
12
- //# sourceMappingURL=port.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../../src/utils/port.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,MAAM,CAAC,CAoCjB"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Port detection utilities
3
- */
4
- import * as net from "net";
5
- /**
6
- * Find the next available port starting from a given port
7
- * @param startPort - Port to start searching from
8
- * @param maxAttempts - Maximum number of ports to try
9
- * @returns The first available port
10
- * @throws Error if no port is found after maxAttempts
11
- */
12
- export function getNextAvailablePort(startPort, maxAttempts = 50) {
13
- return new Promise((resolve, reject) => {
14
- let attempts = 0;
15
- const tryPort = (port) => {
16
- if (attempts >= maxAttempts) {
17
- reject(new Error(`Could not find available port after ${maxAttempts} attempts`));
18
- return;
19
- }
20
- attempts++;
21
- const server = net.createServer();
22
- server.on("error", (e) => {
23
- if (e.message?.includes("EADDRINUSE")) {
24
- console.log(`[PushPlugin] Port ${port} in use, trying next...`);
25
- tryPort(port + 1);
26
- }
27
- else {
28
- // Don't retry on other errors - could mask serious issues
29
- reject(new Error(`Port ${port} error: ${e.message}`));
30
- }
31
- });
32
- server.listen(port, "127.0.0.1", () => {
33
- server.close(() => {
34
- resolve(port);
35
- });
36
- });
37
- };
38
- tryPort(startPort);
39
- });
40
- }
41
- //# sourceMappingURL=port.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"port.js","sourceRoot":"","sources":["../../../src/utils/port.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAiB,EACjB,cAAsB,EAAE;IAExB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE;YAC/B,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;gBAC5B,MAAM,CACJ,IAAI,KAAK,CACP,uCAAuC,WAAW,WAAW,CAC9D,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YACD,QAAQ,EAAE,CAAC;YAEX,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAElC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE;gBAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,yBAAyB,CAAC,CAAC;oBAChE,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,0DAA0D;oBAC1D,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;gBACpC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,30 +0,0 @@
1
- export interface TunnelConfig {
2
- port: number;
3
- authToken?: string;
4
- region?: string;
5
- subdomain?: string;
6
- provider?: "localtunnel" | "cloudflare" | "ngrok";
7
- }
8
- export interface TunnelInfo {
9
- url: string;
10
- tunnelId: string;
11
- port: number;
12
- provider: string;
13
- }
14
- export interface TunnelDetails {
15
- type: string;
16
- url: string | null;
17
- loginStatus: string;
18
- loginId: string | null;
19
- configPath: string | null;
20
- }
21
- export declare function stopNgrok(): Promise<void>;
22
- export declare function stopTunnel(): Promise<void>;
23
- export declare function startTunnel(config: TunnelConfig): Promise<TunnelInfo>;
24
- export declare function getTunnelInfo(): TunnelInfo | null;
25
- export declare function getTunnelDetails(): TunnelDetails;
26
- export declare function getServerUrl(): string | null;
27
- export declare function displayQRCode(url: string): Promise<void>;
28
- export declare function displayQRCodeAndSave(url: string, filepath?: string): Promise<string>;
29
- export declare function gracefulShutdown(): Promise<void>;
30
- //# sourceMappingURL=tunnel-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tunnel-manager.d.ts","sourceRoot":"","sources":["../tunnel-manager.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,OAAO,CAAC;CACnD;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AA6jBD,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAU/C;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAKhD;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAa3E;AAED,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAEjD;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAoEhD;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9D;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD"}