dsh-env-manager-plugin 0.0.0-stage → 0.1.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 (148) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +249 -2
  3. package/client.js +2581 -0
  4. package/cordis.patch.yml +4 -0
  5. package/docs/00-project/current-state.md +246 -0
  6. package/docs/00-project/glossary.md +215 -0
  7. package/docs/00-project/project-brief.md +114 -0
  8. package/docs/00-project/roadmap.md +89 -0
  9. package/docs/01-architecture/DSH_Environment_Service_Memory_Skill_Brainstorm.md +493 -0
  10. package/docs/01-architecture/api-verification.md +416 -0
  11. package/docs/01-architecture/architecture-overview.md +222 -0
  12. package/docs/01-architecture/data-model.md +930 -0
  13. package/docs/01-architecture/decisions/ADR-0001-plugin-as-bundle.md +29 -0
  14. package/docs/01-architecture/decisions/ADR-0002-file-based-storage.md +25 -0
  15. package/docs/01-architecture/decisions/ADR-0003-skill-router-over-search.md +25 -0
  16. package/docs/01-architecture/decisions/ADR-0004-typescript-host-js-client.md +31 -0
  17. package/docs/01-architecture/decisions/ADR-0005-layered-rule-resolution.md +36 -0
  18. package/docs/01-architecture/decisions/ADR-0006-credentials-as-references.md +30 -0
  19. package/docs/01-architecture/decisions/ADR-0007-session-scoped-default-environment.md +28 -0
  20. package/docs/01-architecture/decisions/ADR-0008-memory-bridge-not-second-store.md +31 -0
  21. package/docs/01-architecture/decisions/ADR-0009-client-host-http-transport.md +87 -0
  22. package/docs/01-architecture/decisions/ADR-0010-environment-plane-model.md +87 -0
  23. package/docs/01-architecture/decisions/ADR-0011-k8s-node-execution-model.md +92 -0
  24. package/docs/01-architecture/design.md +666 -0
  25. package/docs/01-architecture/detailed-design.md +961 -0
  26. package/docs/01-architecture/implementation-plan.md +323 -0
  27. package/docs/01-architecture/module-boundaries.md +306 -0
  28. package/docs/01-architecture/security-model.md +227 -0
  29. package/docs/01-architecture/storage-contract.md +224 -0
  30. package/docs/01-architecture/tool-contract.md +438 -0
  31. package/docs/01-architecture/ui-design.md +587 -0
  32. package/docs/02-harness/agent-behavior.md +36 -0
  33. package/docs/02-harness/change-snapshot-policy.md +29 -0
  34. package/docs/02-harness/client-ui-integration.md +110 -0
  35. package/docs/02-harness/context-policy.md +43 -0
  36. package/docs/02-harness/harness-standard.md +91 -0
  37. package/docs/02-harness/task-execution-policy.md +26 -0
  38. package/docs/02-harness/verification-policy.md +97 -0
  39. package/docs/03-openspec/archive-rule.md +25 -0
  40. package/docs/03-openspec/bugfix-rule.md +30 -0
  41. package/docs/03-openspec/design-rule.md +33 -0
  42. package/docs/03-openspec/openspec-usage-guide.md +31 -0
  43. package/docs/03-openspec/proposal-rule.md +70 -0
  44. package/docs/03-openspec/spec-rule.md +33 -0
  45. package/docs/03-openspec/tasks-rule.md +31 -0
  46. package/docs/04-development/coding-style.md +67 -0
  47. package/docs/04-development/dependency-policy.md +43 -0
  48. package/docs/04-development/development-guide.md +85 -0
  49. package/docs/04-development/directory-convention.md +105 -0
  50. package/docs/04-development/local-run-guide.md +55 -0
  51. package/docs/04-development/testing-guide.md +102 -0
  52. package/docs/05-domain/deployment-template.md +76 -0
  53. package/docs/05-domain/environment-template.md +165 -0
  54. package/docs/05-domain/operation-binding-template.md +55 -0
  55. package/docs/05-domain/operation-record-template.md +55 -0
  56. package/docs/05-domain/prompt-template.md +90 -0
  57. package/docs/05-domain/rule-template.md +73 -0
  58. package/docs/05-domain/service-template.md +39 -0
  59. package/docs/06-operations/deployment-guide.md +54 -0
  60. package/docs/06-operations/release.md +188 -0
  61. package/docs/06-operations/security-policy.md +53 -0
  62. package/docs/06-operations/troubleshooting.md +91 -0
  63. package/docs/07-templates/adr-template.md +21 -0
  64. package/docs/07-templates/bugfix-template.md +11 -0
  65. package/docs/07-templates/case-template.md +15 -0
  66. package/docs/07-templates/design-template.md +29 -0
  67. package/docs/07-templates/proposal-template.md +19 -0
  68. package/docs/07-templates/spec-template.md +15 -0
  69. package/docs/07-templates/tasks-template.md +12 -0
  70. package/docs/99-archive/README.md +13 -0
  71. package/docs/README.md +142 -0
  72. package/icon.svg +4 -0
  73. package/index.js +8 -0
  74. package/lib/app/app.d.ts +67 -0
  75. package/lib/app/app.js +494 -0
  76. package/lib/app/app.js.map +1 -0
  77. package/lib/config.d.ts +55 -0
  78. package/lib/config.js +42 -0
  79. package/lib/config.js.map +1 -0
  80. package/lib/domain/constants.d.ts +21 -0
  81. package/lib/domain/constants.js +59 -0
  82. package/lib/domain/constants.js.map +1 -0
  83. package/lib/domain/errors.d.ts +20 -0
  84. package/lib/domain/errors.js +22 -0
  85. package/lib/domain/errors.js.map +1 -0
  86. package/lib/domain/schemas.d.ts +28 -0
  87. package/lib/domain/schemas.js +445 -0
  88. package/lib/domain/schemas.js.map +1 -0
  89. package/lib/domain/types.d.ts +412 -0
  90. package/lib/domain/types.js +2 -0
  91. package/lib/domain/types.js.map +1 -0
  92. package/lib/index.d.ts +18 -0
  93. package/lib/index.js +89 -0
  94. package/lib/index.js.map +1 -0
  95. package/lib/logger.d.ts +8 -0
  96. package/lib/logger.js +13 -0
  97. package/lib/logger.js.map +1 -0
  98. package/lib/memory/bridge.d.ts +18 -0
  99. package/lib/memory/bridge.js +13 -0
  100. package/lib/memory/bridge.js.map +1 -0
  101. package/lib/registry/integrity.d.ts +10 -0
  102. package/lib/registry/integrity.js +204 -0
  103. package/lib/registry/integrity.js.map +1 -0
  104. package/lib/registry/registry.d.ts +14 -0
  105. package/lib/registry/registry.js +182 -0
  106. package/lib/registry/registry.js.map +1 -0
  107. package/lib/resolver/merge.d.ts +23 -0
  108. package/lib/resolver/merge.js +90 -0
  109. package/lib/resolver/merge.js.map +1 -0
  110. package/lib/resolver/resolve.d.ts +18 -0
  111. package/lib/resolver/resolve.js +288 -0
  112. package/lib/resolver/resolve.js.map +1 -0
  113. package/lib/resolver/template.d.ts +10 -0
  114. package/lib/resolver/template.js +42 -0
  115. package/lib/resolver/template.js.map +1 -0
  116. package/lib/router/params.d.ts +3 -0
  117. package/lib/router/params.js +83 -0
  118. package/lib/router/params.js.map +1 -0
  119. package/lib/router/router.d.ts +11 -0
  120. package/lib/router/router.js +204 -0
  121. package/lib/router/router.js.map +1 -0
  122. package/lib/session/session.d.ts +16 -0
  123. package/lib/session/session.js +64 -0
  124. package/lib/session/session.js.map +1 -0
  125. package/lib/skill.d.ts +17 -0
  126. package/lib/skill.js +56 -0
  127. package/lib/skill.js.map +1 -0
  128. package/lib/storage/atomic.d.ts +10 -0
  129. package/lib/storage/atomic.js +107 -0
  130. package/lib/storage/atomic.js.map +1 -0
  131. package/lib/storage/paths.d.ts +10 -0
  132. package/lib/storage/paths.js +50 -0
  133. package/lib/storage/paths.js.map +1 -0
  134. package/lib/storage/records.d.ts +16 -0
  135. package/lib/storage/records.js +112 -0
  136. package/lib/storage/records.js.map +1 -0
  137. package/lib/storage/sessions.d.ts +17 -0
  138. package/lib/storage/sessions.js +65 -0
  139. package/lib/storage/sessions.js.map +1 -0
  140. package/lib/tools/tools.d.ts +14 -0
  141. package/lib/tools/tools.js +472 -0
  142. package/lib/tools/tools.js.map +1 -0
  143. package/lib/transport/http.d.ts +3 -0
  144. package/lib/transport/http.js +217 -0
  145. package/lib/transport/http.js.map +1 -0
  146. package/locale/en.json +6 -0
  147. package/locale/zh.json +6 -0
  148. package/package.json +97 -4
@@ -0,0 +1,59 @@
1
+ export const SCHEMA_VERSION = 1;
2
+ export const ID_PATTERN = /^[a-z0-9][a-z0-9-]{0,62}$/;
3
+ export const SESSION_ID_PATTERN = /^[A-Za-z0-9_-]{1,128}$/;
4
+ export const PARAMETER_KEY_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
5
+ export const TEMPLATE_REF_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)*$/;
6
+ export const RECORD_KINDS = [
7
+ 'environment',
8
+ 'service',
9
+ 'deployment',
10
+ 'ruleProfile',
11
+ 'operationBinding',
12
+ ];
13
+ export const KIND_DIRECTORIES = {
14
+ environment: 'environments',
15
+ service: 'services',
16
+ deployment: 'deployments',
17
+ ruleProfile: 'rules',
18
+ operationBinding: 'operations',
19
+ };
20
+ export const STANDARD_OPERATIONS = [
21
+ 'install',
22
+ 'deploy',
23
+ 'redeploy',
24
+ 'replace',
25
+ 'restart',
26
+ 'upgrade',
27
+ 'rollback',
28
+ 'uninstall',
29
+ 'collect-logs',
30
+ 'health-check',
31
+ 'inspect',
32
+ 'upload',
33
+ 'download',
34
+ ];
35
+ export const WRITE_OPERATIONS = new Set([
36
+ 'install',
37
+ 'deploy',
38
+ 'redeploy',
39
+ 'replace',
40
+ 'restart',
41
+ 'upgrade',
42
+ 'rollback',
43
+ 'uninstall',
44
+ 'upload',
45
+ ]);
46
+ export const LIMITS = {
47
+ recordBytes: 1024 * 1024,
48
+ sessionBytes: 64 * 1024,
49
+ templateLength: 2048,
50
+ maxParameters: 50,
51
+ maxDiagnostics: 200,
52
+ maxWarnings: 20,
53
+ backupCount: 5,
54
+ maxSnapshotRecords: 5000,
55
+ };
56
+ export function isRecordKind(value) {
57
+ return RECORD_KINDS.includes(value);
58
+ }
59
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/domain/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAE/B,MAAM,CAAC,MAAM,UAAU,GAAG,2BAA2B,CAAA;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAA;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAA;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,qDAAqD,CAAA;AAEzF,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,aAAa;IACb,SAAS;IACT,YAAY;IACZ,aAAa;IACb,kBAAkB;CACnB,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D,WAAW,EAAE,cAAc;IAC3B,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,OAAO;IACpB,gBAAgB,EAAE,YAAY;CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,SAAS;IACT,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,UAAU;IACV,WAAW;IACX,cAAc;IACd,cAAc;IACd,SAAS;IACT,QAAQ;IACR,UAAU;CACF,CAAA;AAEV,MAAM,CAAC,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC;IAC3D,SAAS;IACT,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,UAAU;IACV,WAAW;IACX,QAAQ;CACT,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,WAAW,EAAE,IAAI,GAAG,IAAI;IACxB,YAAY,EAAE,EAAE,GAAG,IAAI;IACvB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,CAAC;IACd,kBAAkB,EAAE,IAAI;CAChB,CAAA;AAEV,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAQ,YAAkC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC5D,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { HarnessError } from '@deepseek-ai/dsh-llm';
2
+ export type ErrorCode = 'ENV_NOT_FOUND' | 'SERVICE_NOT_FOUND' | 'DEPLOYMENT_NOT_FOUND' | 'HOST_NOT_FOUND' | 'CLUSTER_NOT_FOUND' | 'RULE_PROFILE_NOT_FOUND' | 'BINDING_NOT_FOUND' | 'DEPLOYMENT_AMBIGUOUS' | 'DUPLICATE_ID' | 'RECORD_INVALID' | 'RECORD_IN_USE' | 'RECORD_LIMIT_EXCEEDED' | 'RECORD_TOO_LARGE' | 'INVALID_ARGUMENT' | 'FORBIDDEN' | 'STORAGE_UNWRITABLE' | 'SCHEMA_UNSUPPORTED' | 'UNKNOWN_FIELD' | 'RULE_TEMPLATE_INVALID' | 'RULE_UNDEFINED_VARIABLE' | 'RULE_CYCLE' | 'RULE_PATH_TRAVERSAL' | 'RULE_TYPE_MISMATCH' | 'OPERATION_UNKNOWN' | 'BINDING_CONFLICT' | 'SKILL_UNAVAILABLE' | 'SKILL_REGISTRY_UNAVAILABLE' | 'POLICY_DENIED' | 'PARAMETER_RESOLUTION_FAILED' | 'CREDENTIAL_MISSING' | 'CREDENTIAL_UNAVAILABLE' | 'CREDENTIAL_WRITE_FAILED' | 'MEMORY_BRIDGE_UNAVAILABLE' | 'SESSION_CONTEXT_UNAVAILABLE' | 'SESSION_CONTEXT_UNPERSISTED' | 'INTERNAL_ERROR';
3
+ export declare class EnvManagerError extends HarnessError {
4
+ readonly details?: Record<string, unknown>;
5
+ constructor(code: ErrorCode, message: string, details?: Record<string, unknown>);
6
+ }
7
+ export declare function isEnvManagerError(error: unknown): error is EnvManagerError;
8
+ export declare function asEnvManagerError(error: unknown): EnvManagerError;
9
+ export declare function diagnostic(code: ErrorCode, severity: 'info' | 'warning' | 'error', message: string, extra?: {
10
+ file?: string;
11
+ path?: string;
12
+ details?: Record<string, unknown>;
13
+ }): {
14
+ file?: string;
15
+ path?: string;
16
+ details?: Record<string, unknown>;
17
+ code: ErrorCode;
18
+ severity: "info" | "warning" | "error";
19
+ message: string;
20
+ };
@@ -0,0 +1,22 @@
1
+ import { HarnessError } from '@deepseek-ai/dsh-llm';
2
+ export class EnvManagerError extends HarnessError {
3
+ details;
4
+ constructor(code, message, details) {
5
+ super(message, code);
6
+ this.name = 'EnvManagerError';
7
+ this.details = details;
8
+ }
9
+ }
10
+ export function isEnvManagerError(error) {
11
+ return error instanceof EnvManagerError;
12
+ }
13
+ export function asEnvManagerError(error) {
14
+ if (error instanceof EnvManagerError)
15
+ return error;
16
+ const message = error instanceof Error ? error.message : String(error);
17
+ return new EnvManagerError('INTERNAL_ERROR', message);
18
+ }
19
+ export function diagnostic(code, severity, message, extra) {
20
+ return { code, severity, message, ...extra };
21
+ }
22
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/domain/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAwCnD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IACtC,OAAO,CAA0B;IAE1C,YAAY,IAAe,EAAE,OAAe,EAAE,OAAiC;QAC7E,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,KAAK,YAAY,eAAe,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,YAAY,eAAe;QAAE,OAAO,KAAK,CAAA;IAClD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtE,OAAO,IAAI,eAAe,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,IAAe,EACf,QAAsC,EACtC,OAAe,EACf,KAA2E;IAE3E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAA;AAC9C,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { AnyRecord, RecordKind } from './types.js';
2
+ export interface RecordIssue {
3
+ path: string;
4
+ message: string;
5
+ }
6
+ export type ParseResult<T extends AnyRecord = AnyRecord> = {
7
+ ok: true;
8
+ record: T;
9
+ } | {
10
+ ok: false;
11
+ issues: RecordIssue[];
12
+ };
13
+ export declare function matchShape(match: Record<string, unknown>): string | null;
14
+ export declare function normalizeRecordInput(kind: RecordKind, raw: unknown): unknown;
15
+ export declare function parseRecordInput(kind: RecordKind, raw: unknown): ParseResult;
16
+ export declare function parseRecord(kind: RecordKind, raw: unknown): ParseResult;
17
+ export declare function parseRecordLoose(kind: RecordKind, raw: unknown): ParseResult;
18
+ export declare function withTimestamps<T extends {
19
+ createdAt?: string;
20
+ updatedAt?: string;
21
+ }>(record: T, previous?: {
22
+ createdAt: string;
23
+ }, now?: string): T & {
24
+ createdAt: string;
25
+ updatedAt: string;
26
+ };
27
+ /** Top-level unknown keys, used for read-side `UNKNOWN_FIELD` warnings. */
28
+ export declare function unknownTopLevelKeys(kind: RecordKind, raw: unknown): string[];
@@ -0,0 +1,445 @@
1
+ import { z } from 'zod';
2
+ import { ID_PATTERN, PARAMETER_KEY_PATTERN, SCHEMA_VERSION, WRITE_OPERATIONS } from './constants.js';
3
+ const idSchema = z.string().regex(ID_PATTERN, 'Must match ^[a-z0-9][a-z0-9-]{0,62}$');
4
+ const runtimeModeSchema = z.enum(['native', 'docker', 'kubernetes']);
5
+ const hostKindSchema = z.enum(['vm', 'physical', 'k8s-all-in-one', 'k8s-worker', 'pod-host']);
6
+ const hostAccessSchema = z.enum(['ssh', 'kubectl', 'docker']);
7
+ const clusterTopologySchema = z.enum(['all-in-one', 'separate', 'external']);
8
+ const timestampSchema = z
9
+ .string()
10
+ .refine((value) => !Number.isNaN(Date.parse(value)), 'Must be an ISO-8601 timestamp');
11
+ const scalarSchema = z.union([z.string(), z.number(), z.boolean()]);
12
+ const loginProtocolSchema = z.enum(['ssh', 'rdp', 'web', 'k8s-api', 'docker', 'custom']);
13
+ const loginAuthTypeSchema = z.enum(['password', 'private-key', 'agent', 'token', 'other']);
14
+ const webLoginUrlSchema = z
15
+ .string()
16
+ .url()
17
+ .refine((value) => /^https?:\/\//i.test(value), 'Must be an http(s) URL');
18
+ function hostAccountSchema(mode) {
19
+ return o({
20
+ id: z.string().min(1),
21
+ username: z.string().min(1),
22
+ purpose: z.string().optional(),
23
+ protocol: loginProtocolSchema.optional(),
24
+ loginUrl: webLoginUrlSchema.optional(),
25
+ port: z.number().int().min(1).max(65535).optional(),
26
+ authType: loginAuthTypeSchema.optional(),
27
+ credentialRef: z.string().min(1).optional(),
28
+ lastLoginAt: timestampSchema.optional(),
29
+ lastLoginFrom: z.string().optional(),
30
+ note: z.string().optional(),
31
+ }, mode);
32
+ }
33
+ function loginRecordSchema(mode) {
34
+ return o({
35
+ id: z.string().min(1),
36
+ at: timestampSchema,
37
+ username: z.string().min(1),
38
+ hostRef: z.string().min(1).optional(),
39
+ accountId: z.string().min(1).optional(),
40
+ protocol: loginProtocolSchema.optional(),
41
+ sourceIp: z.string().optional(),
42
+ result: z.enum(['success', 'failure']),
43
+ note: z.string().optional(),
44
+ }, mode);
45
+ }
46
+ function o(shape, mode) {
47
+ return mode === 'read' ? z.looseObject(shape) : z.strictObject(shape);
48
+ }
49
+ function metaShape(input) {
50
+ return {
51
+ id: idSchema,
52
+ schemaVersion: z.literal(SCHEMA_VERSION),
53
+ createdAt: input ? timestampSchema.optional() : timestampSchema,
54
+ updatedAt: input ? timestampSchema.optional() : timestampSchema,
55
+ };
56
+ }
57
+ function logSourceSchema(mode) {
58
+ return z.discriminatedUnion('kind', [
59
+ o({ kind: z.literal('file'), path: z.string().min(1) }, mode),
60
+ o({ kind: z.literal('container-stdout'), container: z.string().min(1) }, mode),
61
+ o({
62
+ kind: z.literal('pod-logs'),
63
+ namespace: z.string().min(1),
64
+ workload: z.string().min(1),
65
+ }, mode),
66
+ ]);
67
+ }
68
+ function classLocationSchema(mode) {
69
+ return o({
70
+ kind: z.enum(['build-output', 'deployed-dir', 'jar-entry']),
71
+ path: z.string().min(1),
72
+ entryPrefix: z.string().optional(),
73
+ }, mode);
74
+ }
75
+ function ruleOverrideSchema(mode) {
76
+ return o({
77
+ variables: z.record(z.string().min(1), scalarSchema).optional(),
78
+ paths: z.record(z.string().min(1), z.string()).optional(),
79
+ logSources: z
80
+ .object({
81
+ native: logSourceSchema(mode).optional(),
82
+ docker: logSourceSchema(mode).optional(),
83
+ kubernetes: logSourceSchema(mode).optional(),
84
+ })
85
+ .optional(),
86
+ classLocations: z
87
+ .object({
88
+ native: classLocationSchema(mode).optional(),
89
+ docker: classLocationSchema(mode).optional(),
90
+ kubernetes: classLocationSchema(mode).optional(),
91
+ })
92
+ .optional(),
93
+ }, mode);
94
+ }
95
+ function environmentFields(mode) {
96
+ return {
97
+ name: z.string().min(1),
98
+ aliases: z.array(z.string().min(1)).default([]),
99
+ category: z.enum(['dev', 'test', 'staging', 'production', 'custom']),
100
+ description: z.string().optional(),
101
+ roles: z
102
+ .array(o({
103
+ id: z.string().min(1),
104
+ name: z.string().min(1),
105
+ description: z.string().optional(),
106
+ }, mode))
107
+ .min(1, 'At least one logical role is required'),
108
+ hosts: z
109
+ .array(o({
110
+ id: z.string().min(1),
111
+ name: z.string().min(1),
112
+ kind: hostKindSchema.default('vm'),
113
+ os: z.string().optional(),
114
+ platform: z.string().optional(),
115
+ ip: z.string().optional(),
116
+ publicIp: z.string().optional(),
117
+ sshPort: z.number().int().min(1).max(65535).optional(),
118
+ roles: z.array(z.string().min(1)).min(1, 'At least one host role is required'),
119
+ access: z.array(hostAccessSchema).max(3).optional(),
120
+ clusterRef: z.string().min(1).optional(),
121
+ adminUser: z.string().optional(),
122
+ isActive: z.boolean().optional(),
123
+ credentialRef: z.string().min(1).optional(),
124
+ accounts: z.array(hostAccountSchema(mode)).max(50).optional(),
125
+ note: z.string().optional(),
126
+ }, mode))
127
+ .default([]),
128
+ clusters: z
129
+ .array(o({
130
+ id: z.string().min(1),
131
+ name: z.string().min(1),
132
+ kind: z.enum(['kubernetes', 'docker']),
133
+ topology: clusterTopologySchema.optional(),
134
+ apiEndpoint: z.string().optional(),
135
+ namespaces: z.array(z.string().min(1)).optional(),
136
+ credentialRef: z.string().min(1).optional(),
137
+ note: z.string().optional(),
138
+ }, mode))
139
+ .default([]),
140
+ endpoints: z
141
+ .array(o({
142
+ id: z.string().min(1),
143
+ kind: z.enum(['ssh', 'web', 'k8s-api', 'docker', 'custom']),
144
+ hostRef: z.string().min(1).optional(),
145
+ clusterRef: z.string().min(1).optional(),
146
+ url: z.string().optional(),
147
+ port: z.number().int().min(1).max(65535).optional(),
148
+ credentialRef: z.string().min(1).optional(),
149
+ note: z.string().optional(),
150
+ }, mode))
151
+ .default([]),
152
+ loginRecords: z.array(loginRecordSchema(mode)).max(200).optional(),
153
+ ruleOverrides: ruleOverrideSchema(mode).optional(),
154
+ };
155
+ }
156
+ function serviceFields(mode) {
157
+ return {
158
+ name: z.string().min(1),
159
+ aliases: z.array(z.string().min(1)).default([]),
160
+ category: z.string().min(1),
161
+ description: z.string().optional(),
162
+ git: o({
163
+ url: z.string().min(1),
164
+ defaultBranch: z.string().min(1).default('main'),
165
+ modulePath: z.string().optional(),
166
+ }, mode),
167
+ build: o({
168
+ tool: z.enum(['maven', 'gradle', 'npm', 'custom']),
169
+ command: z.string().optional(),
170
+ }, mode).optional(),
171
+ artifact: o({
172
+ name: z.string().min(1),
173
+ path: z.string().optional(),
174
+ }, mode).optional(),
175
+ deployModes: z.array(runtimeModeSchema).min(1),
176
+ ruleProfileRefs: z.array(z.string().min(1)).default([]),
177
+ };
178
+ }
179
+ function deploymentFields(mode) {
180
+ const native = o({
181
+ kind: z.literal('native'),
182
+ hostRef: z.string().min(1),
183
+ installDir: z.string().optional(),
184
+ serviceName: z.string().optional(),
185
+ processMatch: z.string().optional(),
186
+ }, mode);
187
+ const docker = o({
188
+ kind: z.literal('docker'),
189
+ hostRef: z.string().min(1),
190
+ containerName: z.string().optional(),
191
+ image: z.string().optional(),
192
+ volumes: z.array(z.string()).optional(),
193
+ }, mode);
194
+ const kubernetes = o({
195
+ kind: z.literal('kubernetes'),
196
+ clusterRef: z.string().min(1),
197
+ namespace: z.string().min(1),
198
+ workload: o({
199
+ kind: z.enum(['Deployment', 'StatefulSet', 'DaemonSet', 'CronJob', 'Pod']),
200
+ name: z.string().min(1),
201
+ }, mode),
202
+ container: z.string().optional(),
203
+ }, mode);
204
+ return {
205
+ name: z.string().optional(),
206
+ environmentId: z.string().min(1),
207
+ serviceId: z.string().min(1),
208
+ runtimeMode: runtimeModeSchema,
209
+ location: z.discriminatedUnion('kind', [native, docker, kubernetes]),
210
+ variables: z.record(z.string().min(1), scalarSchema).optional(),
211
+ ruleOverrides: ruleOverrideSchema(mode).optional(),
212
+ };
213
+ }
214
+ function ruleProfileFields(mode) {
215
+ return {
216
+ name: z.string().optional(),
217
+ description: z.string().optional(),
218
+ variables: z.record(z.string().min(1), scalarSchema).optional(),
219
+ paths: z.record(z.string().min(1), z.string()).optional(),
220
+ logSources: z
221
+ .object({
222
+ native: logSourceSchema(mode).optional(),
223
+ docker: logSourceSchema(mode).optional(),
224
+ kubernetes: logSourceSchema(mode).optional(),
225
+ })
226
+ .optional(),
227
+ classLocations: z
228
+ .object({
229
+ native: classLocationSchema(mode).optional(),
230
+ docker: classLocationSchema(mode).optional(),
231
+ kubernetes: classLocationSchema(mode).optional(),
232
+ })
233
+ .optional(),
234
+ };
235
+ }
236
+ function operationBindingFields(mode) {
237
+ return {
238
+ operation: z.string().min(1),
239
+ match: o({
240
+ environmentId: z.string().min(1).optional(),
241
+ serviceId: z.string().min(1).optional(),
242
+ deploymentId: z.string().min(1).optional(),
243
+ deploymentMode: runtimeModeSchema.optional(),
244
+ serviceCategory: z.string().min(1).optional(),
245
+ }, mode),
246
+ skill: o({
247
+ name: z.string().min(1),
248
+ expectedSource: z.string().min(1).nullable().optional(),
249
+ expectedProvider: z.string().min(1).nullable().optional(),
250
+ }, mode),
251
+ parameters: z.record(z.string().regex(PARAMETER_KEY_PATTERN), scalarSchema).optional(),
252
+ policy: o({
253
+ requiresApproval: z.boolean().default(true),
254
+ allowProduction: z.boolean().default(false),
255
+ }, mode),
256
+ enabled: z.boolean().default(true),
257
+ };
258
+ }
259
+ function fieldsOf(kind, mode) {
260
+ switch (kind) {
261
+ case 'environment':
262
+ return environmentFields(mode);
263
+ case 'service':
264
+ return serviceFields(mode);
265
+ case 'deployment':
266
+ return deploymentFields(mode);
267
+ case 'ruleProfile':
268
+ return ruleProfileFields(mode);
269
+ case 'operationBinding':
270
+ return operationBindingFields(mode);
271
+ }
272
+ }
273
+ export function matchShape(match) {
274
+ const keys = Object.keys(match).filter((key) => match[key] !== undefined);
275
+ const has = (key) => keys.includes(key);
276
+ if (has('deploymentId')) {
277
+ const allowed = new Set(['deploymentId', 'environmentId', 'serviceId']);
278
+ return keys.every((key) => allowed.has(key)) ? 'deployment' : null;
279
+ }
280
+ if (has('environmentId') && has('serviceId')) {
281
+ const allowed = new Set(['environmentId', 'serviceId']);
282
+ return keys.every((key) => allowed.has(key)) ? 'environment-service' : null;
283
+ }
284
+ if (has('serviceId')) {
285
+ return keys.length === 1 ? 'service' : null;
286
+ }
287
+ if (has('serviceCategory') && has('deploymentMode')) {
288
+ return keys.length === 2 ? 'category-mode' : null;
289
+ }
290
+ if (keys.length === 0)
291
+ return 'global';
292
+ return null;
293
+ }
294
+ function crossCheck(kind, value, ctx) {
295
+ const add = (path, message) => ctx.addIssue({ code: 'custom', message, path: path ? path.split('.') : [] });
296
+ const unique = (items, label, path) => {
297
+ const seen = new Set();
298
+ for (const [index, item] of items.entries()) {
299
+ if (seen.has(item.id))
300
+ add(`${path}[${index}].id`, `Duplicate ${label} id "${item.id}"`);
301
+ seen.add(item.id);
302
+ }
303
+ };
304
+ if (kind === 'environment') {
305
+ const env = value;
306
+ unique(env.roles ?? [], 'role', 'roles');
307
+ unique(env.hosts ?? [], 'host', 'hosts');
308
+ unique(env.clusters ?? [], 'cluster', 'clusters');
309
+ unique(env.endpoints ?? [], 'endpoint', 'endpoints');
310
+ const roleIds = new Set((env.roles ?? []).map((role) => role.id));
311
+ const clusterIds = new Set((env.clusters ?? []).map((cluster) => cluster.id));
312
+ const k8sNodeKinds = new Set(['k8s-all-in-one', 'k8s-worker']);
313
+ for (const [index, host] of (env.hosts ?? []).entries()) {
314
+ for (const role of host.roles) {
315
+ if (!roleIds.has(role))
316
+ add(`hosts[${index}].roles`, `Unknown role "${role}"`);
317
+ }
318
+ if (k8sNodeKinds.has(host.kind || 'vm') && !host.clusterRef) {
319
+ add(`hosts[${index}].clusterRef`, 'K8s nodes must reference a cluster');
320
+ }
321
+ if (host.clusterRef && !clusterIds.has(host.clusterRef)) {
322
+ add(`hosts[${index}].clusterRef`, `Unknown cluster "${host.clusterRef}"`);
323
+ }
324
+ if (host.access && new Set(host.access).size !== host.access.length) {
325
+ add(`hosts[${index}].access`, 'Duplicate host access method');
326
+ }
327
+ }
328
+ const seenIps = new Set();
329
+ for (const [index, host] of (env.hosts ?? []).entries()) {
330
+ if (!host.ip)
331
+ continue;
332
+ if (seenIps.has(host.ip))
333
+ add(`hosts[${index}].ip`, `Duplicate host ip "${host.ip}"`);
334
+ seenIps.add(host.ip);
335
+ }
336
+ const hostIds = new Set((env.hosts ?? []).map((host) => host.id));
337
+ for (const [index, endpoint] of (env.endpoints ?? []).entries()) {
338
+ if (endpoint.hostRef && !hostIds.has(endpoint.hostRef)) {
339
+ add(`endpoints[${index}].hostRef`, `Unknown host "${endpoint.hostRef}"`);
340
+ }
341
+ if (endpoint.clusterRef && !clusterIds.has(endpoint.clusterRef)) {
342
+ add(`endpoints[${index}].clusterRef`, `Unknown cluster "${endpoint.clusterRef}"`);
343
+ }
344
+ }
345
+ }
346
+ if (kind === 'deployment') {
347
+ const deployment = value;
348
+ if (deployment.runtimeMode !== deployment.location.kind) {
349
+ add('location.kind', 'location.kind must equal runtimeMode');
350
+ }
351
+ }
352
+ if (kind === 'operationBinding') {
353
+ const binding = value;
354
+ if (matchShape(binding.match) === null) {
355
+ add('match', 'match must be one of: deployment, environment-service, service, category-mode, global');
356
+ }
357
+ if (binding.parameters && Object.keys(binding.parameters).length > 50) {
358
+ add('parameters', 'At most 50 parameters are allowed');
359
+ }
360
+ }
361
+ }
362
+ const cache = new Map();
363
+ function schemaFor(kind, mode, input) {
364
+ const key = `${kind}:${mode}:${input ? 'input' : 'record'}`;
365
+ const cached = cache.get(key);
366
+ if (cached)
367
+ return cached;
368
+ const schema = o({ ...metaShape(input), ...fieldsOf(kind, mode) }, mode).superRefine((value, ctx) => crossCheck(kind, value, ctx));
369
+ cache.set(key, schema);
370
+ return schema;
371
+ }
372
+ function issuesFrom(error) {
373
+ return error.issues.slice(0, 50).map((issue) => ({
374
+ path: issue.path.map(String).join('.'),
375
+ message: issue.message,
376
+ }));
377
+ }
378
+ export function normalizeRecordInput(kind, raw) {
379
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
380
+ return raw;
381
+ const value = { ...raw };
382
+ switch (kind) {
383
+ case 'environment': {
384
+ value.aliases ??= [];
385
+ value.roles ??= [];
386
+ value.hosts ??= [];
387
+ value.clusters ??= [];
388
+ value.endpoints ??= [];
389
+ break;
390
+ }
391
+ case 'service': {
392
+ value.aliases ??= [];
393
+ value.ruleProfileRefs ??= [];
394
+ break;
395
+ }
396
+ case 'ruleProfile':
397
+ break;
398
+ case 'deployment':
399
+ break;
400
+ case 'operationBinding': {
401
+ value.enabled ??= true;
402
+ const existing = (value.policy ?? {});
403
+ const operation = typeof value.operation === 'string' ? value.operation : '';
404
+ value.policy = {
405
+ requiresApproval: existing.requiresApproval ?? WRITE_OPERATIONS.has(operation),
406
+ allowProduction: existing.allowProduction ?? false,
407
+ };
408
+ break;
409
+ }
410
+ }
411
+ return value;
412
+ }
413
+ export function parseRecordInput(kind, raw) {
414
+ const result = schemaFor(kind, 'write', true).safeParse(normalizeRecordInput(kind, raw));
415
+ if (!result.success)
416
+ return { ok: false, issues: issuesFrom(result.error) };
417
+ return { ok: true, record: result.data };
418
+ }
419
+ export function parseRecord(kind, raw) {
420
+ const result = schemaFor(kind, 'write', false).safeParse(raw);
421
+ if (!result.success)
422
+ return { ok: false, issues: issuesFrom(result.error) };
423
+ return { ok: true, record: result.data };
424
+ }
425
+ export function parseRecordLoose(kind, raw) {
426
+ const result = schemaFor(kind, 'read', false).safeParse(raw);
427
+ if (!result.success)
428
+ return { ok: false, issues: issuesFrom(result.error) };
429
+ return { ok: true, record: result.data };
430
+ }
431
+ export function withTimestamps(record, previous, now = new Date().toISOString()) {
432
+ return {
433
+ ...record,
434
+ createdAt: previous?.createdAt ?? record.createdAt ?? now,
435
+ updatedAt: now,
436
+ };
437
+ }
438
+ /** Top-level unknown keys, used for read-side `UNKNOWN_FIELD` warnings. */
439
+ export function unknownTopLevelKeys(kind, raw) {
440
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
441
+ return [];
442
+ const allowed = new Set(Object.keys({ ...metaShape(false), ...fieldsOf(kind, 'read') }));
443
+ return Object.keys(raw).filter((key) => !allowed.has(key));
444
+ }
445
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/domain/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAoBpG,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,sCAAsC,CAAC,CAAA;AACrF,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAA;AACpE,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;AAC7F,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC7D,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;AAC5E,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAA;AAEvF,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;AAEnE,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AACxF,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AAC1F,MAAM,iBAAiB,GAAG,CAAC;KACxB,MAAM,EAAE;KACR,GAAG,EAAE;KACL,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,wBAAwB,CAAC,CAAA;AAE3E,SAAS,iBAAiB,CAAC,IAAU;IACnC,OAAO,CAAC,CACN;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE;QACxC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE;QACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QACnD,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE;QACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC3C,WAAW,EAAE,eAAe,CAAC,QAAQ,EAAE;QACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,EACD,IAAI,CACL,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAU;IACnC,OAAO,CAAC,CACN;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,EAAE,EAAE,eAAe;QACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACvC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE;QACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,EACD,IAAI,CACL,CAAA;AACH,CAAC;AAED,SAAS,CAAC,CAAC,KAAY,EAAE,IAAU;IACjC,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AACvE,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QACxC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,eAAe;QAC/D,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,eAAe;KAChE,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAU;IACjC,OAAO,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;QAClC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;QAC7D,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;QAC9E,CAAC,CACC;YACE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5B,EACD,IAAI,CACL;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAU;IACrC,OAAO,CAAC,CACN;QACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC,EACD,IAAI,CACL,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAU;IACpC,OAAO,CAAC,CACN;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE;QAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACzD,UAAU,EAAE,CAAC;aACV,MAAM,CAAC;YACN,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YACxC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YACxC,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;SAC7C,CAAC;aACD,QAAQ,EAAE;QACb,cAAc,EAAE,CAAC;aACd,MAAM,CAAC;YACN,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YAC5C,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YAC5C,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;SACjD,CAAC;aACD,QAAQ,EAAE;KACd,EACD,IAAI,CACL,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAU;IACnC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACpE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,KAAK,EAAE,CAAC;aACL,KAAK,CACJ,CAAC,CACC;YACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACnC,EACD,IAAI,CACL,CACF;aACA,GAAG,CAAC,CAAC,EAAE,uCAAuC,CAAC;QAClD,KAAK,EAAE,CAAC;aACL,KAAK,CACJ,CAAC,CACC;YACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;YAClC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;YACtD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;YAC9E,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACnD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC3C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;YAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,EACD,IAAI,CACL,CACF;aACA,OAAO,CAAC,EAAE,CAAC;QACd,QAAQ,EAAE,CAAC;aACR,KAAK,CACJ,CAAC,CACC;YACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACtC,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,EAAE;YAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAClC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,EACD,IAAI,CACL,CACF;aACA,OAAO,CAAC,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;aACT,KAAK,CACJ,CAAC,CACC;YACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC3D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACxC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;YACnD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,EACD,IAAI,CACL,CACF;aACA,OAAO,CAAC,EAAE,CAAC;QACd,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QAClE,aAAa,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;KACnD,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAU;IAC/B,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,GAAG,EAAE,CAAC,CACJ;YACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAClC,EACD,IAAI,CACL;QACD,KAAK,EAAE,CAAC,CACN;YACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,EACD,IAAI,CACL,CAAC,QAAQ,EAAE;QACZ,QAAQ,EAAE,CAAC,CACT;YACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,EACD,IAAI,CACL,CAAC,QAAQ,EAAE;QACZ,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;KACxD,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAU;IAClC,MAAM,MAAM,GAAG,CAAC,CACd;QACE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACpC,EACD,IAAI,CACL,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,CACd;QACE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACxC,EACD,IAAI,CACL,CAAA;IACD,MAAM,UAAU,GAAG,CAAC,CAClB;QACE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,QAAQ,EAAE,CAAC,CACT;YACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACxB,EACD,IAAI,CACL;QACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACjC,EACD,IAAI,CACL,CAAA;IACD,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,WAAW,EAAE,iBAAiB;QAC9B,QAAQ,EAAE,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACpE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE;QAC/D,aAAa,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;KACnD,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAU;IACnC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE;QAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACzD,UAAU,EAAE,CAAC;aACV,MAAM,CAAC;YACN,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YACxC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YACxC,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;SAC7C,CAAC;aACD,QAAQ,EAAE;QACb,cAAc,EAAE,CAAC;aACd,MAAM,CAAC;YACN,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YAC5C,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YAC5C,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;SACjD,CAAC;aACD,QAAQ,EAAE;KACd,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAU;IACxC,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,KAAK,EAAE,CAAC,CACN;YACE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC1C,cAAc,EAAE,iBAAiB,CAAC,QAAQ,EAAE;YAC5C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC9C,EACD,IAAI,CACL;QACD,KAAK,EAAE,CAAC,CACN;YACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YACvD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SAC1D,EACD,IAAI,CACL;QACD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE;QACtF,MAAM,EAAE,CAAC,CACP;YACE,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YAC3C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;SAC5C,EACD,IAAI,CACL;QACD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KACnC,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB,EAAE,IAAU;IAC5C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAChC,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;QAC5B,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC/B,KAAK,aAAa;YAChB,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAChC,KAAK,kBAAkB;YACrB,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAA8B;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAA;IACzE,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC/C,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC,CAAA;QACvE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAA;IACpE,CAAC;IACD,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAA;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7E,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7C,CAAC;IACD,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAA;IACnD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAA;IACtC,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB,EAAE,KAA8B,EAAE,GAAoB;IACxF,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE,CAC5C,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAE9E,MAAM,MAAM,GAAG,CAAC,KAA4B,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAC9B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,MAAM,EAAE,aAAa,KAAK,QAAQ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;YACxF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,CAAA;IAED,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAA+B,CAAA;QAC3C,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QACxC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QACjD,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACjE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAA;QAC9D,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,iBAAiB,IAAI,GAAG,CAAC,CAAA;YAChF,CAAC;YACD,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5D,GAAG,CAAC,SAAS,KAAK,cAAc,EAAE,oCAAoC,CAAC,CAAA;YACzE,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxD,GAAG,CAAC,SAAS,KAAK,cAAc,EAAE,oBAAoB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;YAC3E,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACpE,GAAG,CAAC,SAAS,KAAK,UAAU,EAAE,8BAA8B,CAAC,CAAA;YAC/D,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;QACjC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,SAAQ;YACtB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,sBAAsB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;YACrF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACjE,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAChE,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvD,GAAG,CAAC,aAAa,KAAK,WAAW,EAAE,iBAAiB,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAA;YAC1E,CAAC;YACD,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,aAAa,KAAK,cAAc,EAAE,oBAAoB,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAA;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,KAGlB,CAAA;QACD,IAAI,UAAU,CAAC,WAAW,KAAK,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxD,GAAG,CAAC,eAAe,EAAE,sCAAsC,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,KAKf,CAAA;QACD,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACvC,GAAG,CAAC,OAAO,EAAE,uFAAuF,CAAC,CAAA;QACvG,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACtE,GAAG,CAAC,YAAY,EAAE,mCAAmC,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAA;AAE1C,SAAS,SAAS,CAAC,IAAgB,EAAE,IAAU,EAAE,KAAc;IAC7D,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IACzB,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,WAAW,CAClF,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAgC,EAAE,GAAG,CAAC,CACxE,CAAA;IACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACtB,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB;IACnC,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAgB,EAAE,GAAY;IACjE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAC7E,MAAM,KAAK,GAAG,EAAE,GAAI,GAA+B,EAAE,CAAA;IACrD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,KAAK,CAAC,OAAO,KAAK,EAAE,CAAA;YACpB,KAAK,CAAC,KAAK,KAAK,EAAE,CAAA;YAClB,KAAK,CAAC,KAAK,KAAK,EAAE,CAAA;YAClB,KAAK,CAAC,QAAQ,KAAK,EAAE,CAAA;YACrB,KAAK,CAAC,SAAS,KAAK,EAAE,CAAA;YACtB,MAAK;QACP,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,KAAK,CAAC,OAAO,KAAK,EAAE,CAAA;YACpB,KAAK,CAAC,eAAe,KAAK,EAAE,CAAA;YAC5B,MAAK;QACP,CAAC;QACD,KAAK,aAAa;YAChB,MAAK;QACP,KAAK,YAAY;YACf,MAAK;QACP,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,KAAK,IAAI,CAAA;YACtB,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAA;YAChE,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;YAC5E,KAAK,CAAC,MAAM,GAAG;gBACb,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC9E,eAAe,EAAE,QAAQ,CAAC,eAAe,IAAI,KAAK;aACnD,CAAA;YACD,MAAK;QACP,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,GAAY;IAC7D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;IACxF,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IAC3E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAiB,EAAE,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAgB,EAAE,GAAY;IACxD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAC7D,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IAC3E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAiB,EAAE,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,GAAY;IAC7D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAC5D,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IAC3E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAiB,EAAE,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAAS,EACT,QAAgC,EAChC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IAE9B,OAAO;QACL,GAAG,MAAM;QACT,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,GAAG;QACzD,SAAS,EAAE,GAAG;KACf,CAAA;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,IAAgB,EAAE,GAAY;IAChE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAC5E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IACxF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAC5D,CAAC"}