alpic 0.0.0-dev.ff063bb → 0.0.0-dev.ff4302e

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 (205) hide show
  1. package/README.md +40 -0
  2. package/bin/run.js +5 -0
  3. package/dist/__tests__/auth.e2e.test.d.ts +1 -0
  4. package/dist/__tests__/auth.e2e.test.js +157 -0
  5. package/dist/__tests__/auth.e2e.test.js.map +1 -0
  6. package/dist/__tests__/deploy-flags.e2e.test.d.ts +1 -0
  7. package/dist/__tests__/deploy-flags.e2e.test.js +188 -0
  8. package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -0
  9. package/dist/__tests__/deploy.e2e.test.d.ts +1 -0
  10. package/dist/__tests__/deploy.e2e.test.js +180 -0
  11. package/dist/__tests__/deploy.e2e.test.js.map +1 -0
  12. package/dist/__tests__/deployment-inspect.e2e.test.d.ts +1 -0
  13. package/dist/__tests__/deployment-inspect.e2e.test.js +114 -0
  14. package/dist/__tests__/deployment-inspect.e2e.test.js.map +1 -0
  15. package/dist/__tests__/deployment-list.e2e.test.d.ts +1 -0
  16. package/dist/__tests__/deployment-list.e2e.test.js +116 -0
  17. package/dist/__tests__/deployment-list.e2e.test.js.map +1 -0
  18. package/dist/__tests__/deployment-logs.e2e.test.d.ts +1 -0
  19. package/dist/__tests__/deployment-logs.e2e.test.js +255 -0
  20. package/dist/__tests__/deployment-logs.e2e.test.js.map +1 -0
  21. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.d.ts +1 -0
  22. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js +259 -0
  23. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js.map +1 -0
  24. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.d.ts +1 -0
  25. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js +139 -0
  26. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js.map +1 -0
  27. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.d.ts +1 -0
  28. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js +150 -0
  29. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js.map +1 -0
  30. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.d.ts +1 -0
  31. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js +342 -0
  32. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js.map +1 -0
  33. package/dist/__tests__/environment-variable/environment-variable-validation.test.d.ts +1 -0
  34. package/dist/__tests__/environment-variable/environment-variable-validation.test.js +20 -0
  35. package/dist/__tests__/environment-variable/environment-variable-validation.test.js.map +1 -0
  36. package/dist/__tests__/fixtures/demo-project/index.d.ts +1 -0
  37. package/dist/__tests__/fixtures/demo-project/index.js +4 -0
  38. package/dist/__tests__/fixtures/demo-project/index.js.map +1 -0
  39. package/dist/__tests__/git-flags.e2e.test.d.ts +1 -0
  40. package/dist/__tests__/git-flags.e2e.test.js +124 -0
  41. package/dist/__tests__/git-flags.e2e.test.js.map +1 -0
  42. package/dist/__tests__/git.e2e.test.d.ts +1 -0
  43. package/dist/__tests__/git.e2e.test.js +221 -0
  44. package/dist/__tests__/git.e2e.test.js.map +1 -0
  45. package/dist/__tests__/link.e2e.test.d.ts +1 -0
  46. package/dist/__tests__/link.e2e.test.js +279 -0
  47. package/dist/__tests__/link.e2e.test.js.map +1 -0
  48. package/dist/__tests__/logs.e2e.test.d.ts +1 -0
  49. package/dist/__tests__/logs.e2e.test.js +227 -0
  50. package/dist/__tests__/logs.e2e.test.js.map +1 -0
  51. package/dist/__tests__/mock-server.d.ts +42 -0
  52. package/dist/__tests__/mock-server.js +739 -0
  53. package/dist/__tests__/mock-server.js.map +1 -0
  54. package/dist/__tests__/publish.e2e.test.d.ts +1 -0
  55. package/dist/__tests__/publish.e2e.test.js +505 -0
  56. package/dist/__tests__/publish.e2e.test.js.map +1 -0
  57. package/dist/__tests__/tunnel.e2e.test.d.ts +1 -0
  58. package/dist/__tests__/tunnel.e2e.test.js +61 -0
  59. package/dist/__tests__/tunnel.e2e.test.js.map +1 -0
  60. package/dist/__tests__/utils.d.ts +73 -0
  61. package/dist/__tests__/utils.js +278 -0
  62. package/dist/__tests__/utils.js.map +1 -0
  63. package/dist/api.d.ts +3 -9
  64. package/dist/api.js +20 -31
  65. package/dist/api.js.map +1 -1
  66. package/dist/commands/deploy.d.ts +10 -4
  67. package/dist/commands/deploy.js +85 -32
  68. package/dist/commands/deploy.js.map +1 -1
  69. package/dist/commands/deployment/inspect.d.ts +11 -0
  70. package/dist/commands/deployment/inspect.js +91 -0
  71. package/dist/commands/deployment/inspect.js.map +1 -0
  72. package/dist/commands/deployment/list.d.ts +11 -0
  73. package/dist/commands/deployment/list.js +97 -0
  74. package/dist/commands/deployment/list.js.map +1 -0
  75. package/dist/commands/deployment/logs.d.ts +12 -0
  76. package/dist/commands/deployment/logs.js +50 -0
  77. package/dist/commands/deployment/logs.js.map +1 -0
  78. package/dist/commands/environment-variable/add.d.ts +14 -0
  79. package/dist/commands/environment-variable/add.js +47 -0
  80. package/dist/commands/environment-variable/add.js.map +1 -0
  81. package/dist/commands/environment-variable/list.d.ts +9 -0
  82. package/dist/commands/environment-variable/list.js +45 -0
  83. package/dist/commands/environment-variable/list.js.map +1 -0
  84. package/dist/commands/environment-variable/remove.d.ts +11 -0
  85. package/dist/commands/environment-variable/remove.js +33 -0
  86. package/dist/commands/environment-variable/remove.js.map +1 -0
  87. package/dist/commands/environment-variable/update.d.ts +13 -0
  88. package/dist/commands/environment-variable/update.js +41 -0
  89. package/dist/commands/environment-variable/update.js.map +1 -0
  90. package/dist/commands/git/connect.d.ts +10 -0
  91. package/dist/commands/git/connect.js +60 -0
  92. package/dist/commands/git/connect.js.map +1 -0
  93. package/dist/commands/git/disconnect.d.ts +9 -0
  94. package/dist/commands/git/disconnect.js +45 -0
  95. package/dist/commands/git/disconnect.js.map +1 -0
  96. package/dist/commands/git.d.ts +6 -0
  97. package/dist/commands/git.js +17 -0
  98. package/dist/commands/git.js.map +1 -0
  99. package/dist/commands/link.d.ts +17 -0
  100. package/dist/commands/link.js +101 -0
  101. package/dist/commands/link.js.map +1 -0
  102. package/dist/commands/login.d.ts +6 -0
  103. package/dist/commands/login.js +21 -0
  104. package/dist/commands/login.js.map +1 -0
  105. package/dist/commands/logout.d.ts +6 -0
  106. package/dist/commands/logout.js +20 -0
  107. package/dist/commands/logout.js.map +1 -0
  108. package/dist/commands/logs.d.ts +16 -0
  109. package/dist/commands/logs.js +96 -0
  110. package/dist/commands/logs.js.map +1 -0
  111. package/dist/commands/publish.d.ts +15 -0
  112. package/dist/commands/publish.js +51 -0
  113. package/dist/commands/publish.js.map +1 -0
  114. package/dist/commands/telemetry/disable.d.ts +5 -0
  115. package/dist/commands/telemetry/disable.js +14 -0
  116. package/dist/commands/telemetry/disable.js.map +1 -0
  117. package/dist/commands/telemetry/enable.d.ts +5 -0
  118. package/dist/commands/telemetry/enable.js +13 -0
  119. package/dist/commands/telemetry/enable.js.map +1 -0
  120. package/dist/commands/telemetry/status.d.ts +5 -0
  121. package/dist/commands/telemetry/status.js +19 -0
  122. package/dist/commands/telemetry/status.js.map +1 -0
  123. package/dist/commands/tunnel.d.ts +9 -0
  124. package/dist/commands/tunnel.js +96 -0
  125. package/dist/commands/tunnel.js.map +1 -0
  126. package/dist/commands/whoami.d.ts +6 -0
  127. package/dist/commands/whoami.js +13 -0
  128. package/dist/commands/whoami.js.map +1 -0
  129. package/dist/env.d.ts +4 -0
  130. package/dist/env.js +10 -0
  131. package/dist/env.js.map +1 -0
  132. package/dist/lib/alpic-command.d.ts +6 -0
  133. package/dist/lib/alpic-command.js +27 -0
  134. package/dist/lib/alpic-command.js.map +1 -0
  135. package/dist/lib/archive.d.ts +3 -3
  136. package/dist/lib/archive.js +11 -15
  137. package/dist/lib/archive.js.map +1 -1
  138. package/dist/lib/auth/auth.d.ts +3 -0
  139. package/dist/lib/auth/auth.js +39 -0
  140. package/dist/lib/auth/auth.js.map +1 -0
  141. package/dist/lib/auth/oauth/client.d.ts +28 -0
  142. package/dist/lib/auth/oauth/client.js +110 -0
  143. package/dist/lib/auth/oauth/client.js.map +1 -0
  144. package/dist/lib/auth/oauth/constants.d.ts +2 -0
  145. package/dist/lib/auth/oauth/constants.js +3 -0
  146. package/dist/lib/auth/oauth/constants.js.map +1 -0
  147. package/dist/lib/auth/oauth/server/assets/alpic-mountain.png +0 -0
  148. package/dist/lib/auth/oauth/server/assets/authorize.html +195 -0
  149. package/dist/lib/auth/oauth/server/assets/callback.html +88 -0
  150. package/dist/lib/auth/oauth/server/index.d.ts +8 -0
  151. package/dist/lib/auth/oauth/server/index.js +105 -0
  152. package/dist/lib/auth/oauth/server/index.js.map +1 -0
  153. package/dist/lib/auth/whoami.d.ts +1 -0
  154. package/dist/lib/auth/whoami.js +45 -0
  155. package/dist/lib/auth/whoami.js.map +1 -0
  156. package/dist/lib/base-workflow.d.ts +10 -0
  157. package/dist/lib/base-workflow.js +22 -0
  158. package/dist/lib/base-workflow.js.map +1 -0
  159. package/dist/lib/config.d.ts +3 -2
  160. package/dist/lib/config.js +8 -7
  161. package/dist/lib/config.js.map +1 -1
  162. package/dist/lib/deployment.d.ts +88 -0
  163. package/dist/lib/deployment.js +150 -0
  164. package/dist/lib/deployment.js.map +1 -0
  165. package/dist/lib/environment-variable.d.ts +37 -0
  166. package/dist/lib/environment-variable.js +299 -0
  167. package/dist/lib/environment-variable.js.map +1 -0
  168. package/dist/lib/git.d.ts +22 -0
  169. package/dist/lib/git.js +131 -0
  170. package/dist/lib/git.js.map +1 -0
  171. package/dist/lib/global-store.d.ts +28 -0
  172. package/dist/lib/global-store.js +76 -0
  173. package/dist/lib/global-store.js.map +1 -0
  174. package/dist/lib/link.d.ts +83 -0
  175. package/dist/lib/link.js +387 -0
  176. package/dist/lib/link.js.map +1 -0
  177. package/dist/lib/logs.d.ts +20 -0
  178. package/dist/lib/logs.js +86 -0
  179. package/dist/lib/logs.js.map +1 -0
  180. package/dist/lib/publish.d.ts +22 -0
  181. package/dist/lib/publish.js +185 -0
  182. package/dist/lib/publish.js.map +1 -0
  183. package/dist/lib/resolve.d.ts +6 -0
  184. package/dist/lib/resolve.js +26 -0
  185. package/dist/lib/resolve.js.map +1 -0
  186. package/dist/lib/table.d.ts +8 -0
  187. package/dist/lib/table.js +27 -0
  188. package/dist/lib/table.js.map +1 -0
  189. package/dist/lib/telemetry.d.ts +7 -0
  190. package/dist/lib/telemetry.js +66 -0
  191. package/dist/lib/telemetry.js.map +1 -0
  192. package/dist/lib/utils.d.ts +4 -0
  193. package/dist/lib/utils.js +45 -0
  194. package/dist/lib/utils.js.map +1 -0
  195. package/dist/lib/utils.test.d.ts +1 -0
  196. package/dist/lib/utils.test.js +27 -0
  197. package/dist/lib/utils.test.js.map +1 -0
  198. package/dist/posthog.d.ts +3 -0
  199. package/dist/posthog.js +10 -0
  200. package/dist/posthog.js.map +1 -0
  201. package/dist/types.d.ts +1 -34
  202. package/package.json +43 -14
  203. package/dist/lib/project.d.ts +0 -10
  204. package/dist/lib/project.js +0 -145
  205. package/dist/lib/project.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alpic",
3
- "version": "0.0.0-dev.ff063bb",
3
+ "version": "0.0.0-dev.ff4302e",
4
4
  "description": "The command-line interface for Alpic",
5
5
  "homepage": "https://alpic.ai",
6
6
  "preferGlobal": true,
@@ -14,7 +14,7 @@
14
14
  "dist"
15
15
  ],
16
16
  "engines": {
17
- "node": ">= 18"
17
+ "node": ">= 18.20.8"
18
18
  },
19
19
  "keywords": [
20
20
  "chatgpt",
@@ -25,20 +25,43 @@
25
25
  "author": "Alpic",
26
26
  "license": "ISC",
27
27
  "dependencies": {
28
- "@clack/prompts": "^0.8.2",
28
+ "@clack/prompts": "^1.1.0",
29
+ "@oclif/core": "^4.9.0",
30
+ "@orpc/client": "^1.13.9",
31
+ "@orpc/contract": "^1.13.9",
32
+ "@orpc/openapi-client": "^1.13.9",
33
+ "@t3-oss/env-core": "^0.13.10",
29
34
  "chalk": "^5.6.2",
30
- "tar": "^7.4.0"
35
+ "ci-info": "^4.4.0",
36
+ "env-paths": "^4.0.0",
37
+ "envfile": "^7.1.0",
38
+ "jwt-decode": "^4.0.0",
39
+ "open": "^11.0.0",
40
+ "openid-client": "^6.8.2",
41
+ "pipenet": "^1.4.0",
42
+ "posthog-node": "^5.28.3",
43
+ "semver": "^7.7.4",
44
+ "tar": "^7.5.11",
45
+ "undici": "^7.24.5",
46
+ "zod": "^4.3.6",
47
+ "@alpic-ai/api": "0.0.0-dev.ff4302e"
31
48
  },
32
49
  "devDependencies": {
33
- "@oclif/core": "^4.8.0",
50
+ "@orpc/openapi": "^1.13.9",
51
+ "@orpc/server": "^1.13.9",
52
+ "@orpc/zod": "^1.13.9",
34
53
  "@total-typescript/tsconfig": "^1.0.4",
35
- "@types/node": "^25.1.0",
36
- "biome": "^0.3.3",
37
- "jsdom": "^27.4.0",
54
+ "@types/express": "^5.0.6",
55
+ "@types/node": "^25.5.0",
56
+ "@types/semver": "^7.7.1",
57
+ "express": "^5.2.1",
58
+ "jsdom": "^29.0.0",
59
+ "node-pty": "1.1.0",
60
+ "selfsigned": "^5.5.0",
38
61
  "shx": "^0.4.0",
39
62
  "ts-node": "^10.9.2",
40
63
  "typescript": "^5.9.3",
41
- "vitest": "^4.0.18"
64
+ "vitest": "^4.1.0"
42
65
  },
43
66
  "bin": {
44
67
  "alpic": "bin/run.js"
@@ -47,14 +70,20 @@
47
70
  "bin": "alpic",
48
71
  "commands": "./dist/commands",
49
72
  "dirname": "alpic",
50
- "topicSeparator": " "
73
+ "topicSeparator": " ",
74
+ "hooks": {
75
+ "finally": "./dist/lib/telemetry.js"
76
+ }
51
77
  },
52
78
  "scripts": {
53
- "build": "shx rm -rf dist && tsc",
54
- "format": "biome check --write --error-on-warnings",
79
+ "build": "shx rm -rf dist && tsc && pnpm run build:assets",
80
+ "build:assets": "shx cp -r src/lib/auth/oauth/server/assets dist/lib/auth/oauth/server/",
81
+ "format": "biome check --write --error-on-warnings .",
55
82
  "test": "pnpm run test:unit && pnpm run test:type && pnpm run test:format",
56
83
  "test:unit": "vitest run",
57
- "test:format": "prettier --check .",
58
- "test:type": "tsc --noEmit"
84
+ "test:format": "biome check --error-on-warnings .",
85
+ "test:type": "tsc --noEmit",
86
+ "update:docs": "claude --add-dir ../../docs --permission-mode acceptEdits -p \"/update-cli-docs\" 2>&1 && pnpm --filter docs run format",
87
+ "publish:npm": "pnpm publish --tag \"${NPM_TAG}\" --access public --no-git-checks"
59
88
  }
60
89
  }
@@ -1,10 +0,0 @@
1
- import type { ApiEnvironment, ApiProject, ProjectConfig } from "../types.js";
2
- export declare function resolveDeployDir(raw: string | undefined): string;
3
- export declare function confirmDeployWithExistingConfig(existingConfig: ProjectConfig): Promise<boolean>;
4
- export declare function selectEnvironmentFromList(environments: ApiEnvironment[]): Promise<ApiEnvironment | null>;
5
- export declare function confirmDeployWithoutConfig(deployDir: string): Promise<boolean>;
6
- export declare function confirmLinkExisting(): Promise<boolean>;
7
- export declare function selectProjectFromList(projects: ApiProject[]): Promise<ApiProject | null>;
8
- export declare function resolveProjectForDeploy(deployDir: string): Promise<(ProjectConfig & {
9
- environmentId: string;
10
- }) | null>;
@@ -1,145 +0,0 @@
1
- import * as p from "@clack/prompts";
2
- import chalk from "chalk";
3
- import { existsSync, statSync } from "node:fs";
4
- import { resolve } from "node:path";
5
- import { api } from "../api.js";
6
- import { config } from "./config.js";
7
- export function resolveDeployDir(raw) {
8
- const dir = resolve((raw ?? "").trim() || process.cwd());
9
- if (!existsSync(dir)) {
10
- throw new Error(`Path does not exist: ${dir}`);
11
- }
12
- if (!statSync(dir).isDirectory()) {
13
- throw new Error(`Path is not a directory: ${dir}`);
14
- }
15
- return dir;
16
- }
17
- export async function confirmDeployWithExistingConfig(existingConfig) {
18
- const envLabel = existingConfig.environmentName ? ` to environment "${existingConfig.environmentName}"` : "";
19
- const confirm = await p.confirm({
20
- message: chalk.bold(`Deploy project "${existingConfig.projectName}"${envLabel}?`),
21
- initialValue: true,
22
- });
23
- if (p.isCancel(confirm))
24
- return false;
25
- return confirm === true;
26
- }
27
- export async function selectEnvironmentFromList(environments) {
28
- if (environments.length === 0) {
29
- return null;
30
- }
31
- const choice = await p.select({
32
- message: chalk.bold("Choose an environment to deploy to"),
33
- options: environments.map((env) => ({
34
- value: env.id,
35
- label: `${env.name} (${env.sourceBranch})`,
36
- })),
37
- });
38
- if (p.isCancel(choice))
39
- return null;
40
- const environment = environments.find((e) => e.id === choice);
41
- return environment ?? null;
42
- }
43
- export async function confirmDeployWithoutConfig(deployDir) {
44
- const confirm = await p.confirm({
45
- message: chalk.bold(`Deploy the directory? `) + chalk.cyan(deployDir),
46
- initialValue: true,
47
- });
48
- if (p.isCancel(confirm))
49
- return false;
50
- return confirm === true;
51
- }
52
- export async function confirmLinkExisting() {
53
- const link = await p.confirm({
54
- message: chalk.bold("Link to existing project?"),
55
- initialValue: true,
56
- });
57
- if (p.isCancel(link))
58
- return false;
59
- return link === true;
60
- }
61
- export async function selectProjectFromList(projects) {
62
- if (projects.length === 0) {
63
- return null;
64
- }
65
- const choice = await p.select({
66
- message: chalk.bold("Choose a project"),
67
- options: projects.map((proj) => ({ value: proj.id, label: proj.name })),
68
- });
69
- if (p.isCancel(choice))
70
- return null;
71
- const project = projects.find((proj) => proj.id === choice);
72
- return project ?? null;
73
- }
74
- async function resolveEnvironmentForProject(projectId) {
75
- const project = await api.getProject(projectId);
76
- const environments = project.environments ?? [];
77
- if (environments.length === 0) {
78
- throw new Error("No environments found for this project.");
79
- }
80
- const environment = await selectEnvironmentFromList(environments);
81
- if (!environment)
82
- return null;
83
- return { environmentId: environment.id, environmentName: environment.name };
84
- }
85
- export async function resolveProjectForDeploy(deployDir) {
86
- const existingConfig = config.load(deployDir);
87
- if (existingConfig) {
88
- const ok = await confirmDeployWithExistingConfig(existingConfig);
89
- if (!ok)
90
- return null;
91
- if (existingConfig.environmentId) {
92
- return {
93
- projectId: existingConfig.projectId,
94
- teamId: existingConfig.teamId,
95
- projectName: existingConfig.projectName,
96
- environmentId: existingConfig.environmentId,
97
- environmentName: existingConfig.environmentName,
98
- };
99
- }
100
- const env = await resolveEnvironmentForProject(existingConfig.projectId);
101
- if (!env)
102
- return null;
103
- const updatedConfig = {
104
- ...existingConfig,
105
- environmentId: env.environmentId,
106
- environmentName: env.environmentName,
107
- };
108
- config.save(updatedConfig, deployDir);
109
- p.note(`Environment "${env.environmentName}" will be used for future deploys.`);
110
- return updatedConfig;
111
- }
112
- const ok = await confirmDeployWithoutConfig(deployDir);
113
- if (!ok)
114
- return null;
115
- const linkExisting = await confirmLinkExisting();
116
- if (!linkExisting) {
117
- p.note("Creating a new project is not implemented yet.", "Not yet implemented");
118
- return null;
119
- }
120
- const projects = await api.listProjects();
121
- if (projects.length === 0) {
122
- throw new Error("No projects found. Create a project in the Alpic dashboard first.");
123
- }
124
- const project = await selectProjectFromList(projects);
125
- if (!project)
126
- return null;
127
- const environments = project.environments ?? [];
128
- if (environments.length === 0) {
129
- throw new Error("No environments found for this project.");
130
- }
131
- const environment = await selectEnvironmentFromList(environments);
132
- if (!environment)
133
- return null;
134
- const newConfig = {
135
- projectId: project.id,
136
- teamId: project.teamId,
137
- projectName: project.name,
138
- environmentId: environment.id,
139
- environmentName: environment.name,
140
- };
141
- config.save(newConfig, deployDir);
142
- p.note(`Linked to project "${project.name}", environment "${environment.name}".`);
143
- return newConfig;
144
- }
145
- //# sourceMappingURL=project.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,UAAU,gBAAgB,CAAC,GAAuB;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,cAA6B;IACjF,MAAM,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,oBAAoB,cAAc,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7G,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;QAC9B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,cAAc,CAAC,WAAW,IAAI,QAAQ,GAAG,CAAC;QACjF,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,OAAO,KAAK,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,YAA8B;IAC5E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC;QACzD,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAClC,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,YAAY,GAAG;SAC3C,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IAC9D,OAAO,WAAW,IAAI,IAAI,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,SAAiB;IAChE,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;QAC9B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QACrE,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,OAAO,KAAK,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;QAC3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC;QAChD,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,IAAI,KAAK,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAsB;IAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACvC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACxE,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IAC5D,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,SAAiB;IAI3D,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IAChD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAClE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,EAAE,eAAe,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB;IAEjB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,MAAM,+BAA+B,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAErB,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;YACjC,OAAO;gBACL,SAAS,EAAE,cAAc,CAAC,SAAS;gBACnC,MAAM,EAAE,cAAc,CAAC,MAAM;gBAC7B,WAAW,EAAE,cAAc,CAAC,WAAW;gBACvC,aAAa,EAAE,cAAc,CAAC,aAAa;gBAC3C,eAAe,EAAE,cAAc,CAAC,eAAe;aAChD,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,4BAA4B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,MAAM,aAAa,GAAkB;YACnC,GAAG,cAAc;YACjB,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,eAAe,EAAE,GAAG,CAAC,eAAe;SACrC,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,eAAe,oCAAoC,CAAC,CAAC;QAChF,OAAO,aAA0D,CAAC;IACpE,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAErB,MAAM,YAAY,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,CAAC,CAAC,IAAI,CAAC,gDAAgD,EAAE,qBAAqB,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IAChD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAClE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,SAAS,GAA8C;QAC3D,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,WAAW,EAAE,OAAO,CAAC,IAAI;QACzB,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,eAAe,EAAE,WAAW,CAAC,IAAI;KAClC,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClC,CAAC,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,IAAI,mBAAmB,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC;IAClF,OAAO,SAAS,CAAC;AACnB,CAAC"}