artifact-contracts 0.1.1 → 0.2.1

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 (117) hide show
  1. package/README.md +254 -2
  2. package/cli-contract.yaml +529 -0
  3. package/dist/agents/index.d.ts +3 -0
  4. package/dist/agents/index.d.ts.map +1 -0
  5. package/dist/agents/index.js +2 -0
  6. package/dist/agents/index.js.map +1 -0
  7. package/dist/agents/orchestrator.d.ts +3 -0
  8. package/dist/agents/orchestrator.d.ts.map +1 -0
  9. package/dist/agents/orchestrator.js +109 -0
  10. package/dist/agents/orchestrator.js.map +1 -0
  11. package/dist/agents/types.d.ts +21 -0
  12. package/dist/agents/types.d.ts.map +1 -0
  13. package/dist/agents/types.js +2 -0
  14. package/dist/agents/types.js.map +1 -0
  15. package/dist/cli/audit.d.ts +12 -0
  16. package/dist/cli/audit.d.ts.map +1 -0
  17. package/dist/cli/audit.js +122 -0
  18. package/dist/cli/audit.js.map +1 -0
  19. package/dist/cli/explain.d.ts +5 -0
  20. package/dist/cli/explain.d.ts.map +1 -0
  21. package/dist/cli/explain.js +47 -0
  22. package/dist/cli/explain.js.map +1 -0
  23. package/dist/cli/index.d.ts +3 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +35 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/cli/list.d.ts +7 -0
  28. package/dist/cli/list.d.ts.map +1 -0
  29. package/dist/cli/list.js +49 -0
  30. package/dist/cli/list.js.map +1 -0
  31. package/dist/cli/resolve.d.ts +5 -0
  32. package/dist/cli/resolve.d.ts.map +1 -0
  33. package/dist/cli/resolve.js +21 -0
  34. package/dist/cli/resolve.js.map +1 -0
  35. package/dist/cli/validate.d.ts +5 -0
  36. package/dist/cli/validate.d.ts.map +1 -0
  37. package/dist/cli/validate.js +36 -0
  38. package/dist/cli/validate.js.map +1 -0
  39. package/dist/core/index.d.ts +10 -0
  40. package/dist/core/index.d.ts.map +1 -0
  41. package/dist/core/index.js +6 -0
  42. package/dist/core/index.js.map +1 -0
  43. package/dist/core/lookup.d.ts +12 -0
  44. package/dist/core/lookup.d.ts.map +1 -0
  45. package/dist/core/lookup.js +24 -0
  46. package/dist/core/lookup.js.map +1 -0
  47. package/dist/core/matcher.d.ts +3 -0
  48. package/dist/core/matcher.d.ts.map +1 -0
  49. package/dist/core/matcher.js +14 -0
  50. package/dist/core/matcher.js.map +1 -0
  51. package/dist/core/resolver.d.ts +18 -0
  52. package/dist/core/resolver.d.ts.map +1 -0
  53. package/dist/core/resolver.js +98 -0
  54. package/dist/core/resolver.js.map +1 -0
  55. package/dist/core/schema.d.ts +160 -0
  56. package/dist/core/schema.d.ts.map +1 -0
  57. package/dist/core/schema.js +69 -0
  58. package/dist/core/schema.js.map +1 -0
  59. package/dist/core/validator.d.ts +16 -0
  60. package/dist/core/validator.d.ts.map +1 -0
  61. package/dist/core/validator.js +86 -0
  62. package/dist/core/validator.js.map +1 -0
  63. package/dist/generated/commands.d.ts +2 -0
  64. package/dist/generated/commands.d.ts.map +1 -0
  65. package/dist/generated/commands.js +2 -0
  66. package/dist/generated/commands.js.map +1 -0
  67. package/dist/generated/dsl/agents.d.ts +34 -0
  68. package/dist/generated/dsl/agents.d.ts.map +1 -0
  69. package/dist/generated/dsl/agents.js +42 -0
  70. package/dist/generated/dsl/agents.js.map +1 -0
  71. package/dist/generated/dsl/handoffs.d.ts +339 -0
  72. package/dist/generated/dsl/handoffs.d.ts.map +1 -0
  73. package/dist/generated/dsl/handoffs.js +74 -0
  74. package/dist/generated/dsl/handoffs.js.map +1 -0
  75. package/dist/generated/dsl/index.d.ts +13 -0
  76. package/dist/generated/dsl/index.d.ts.map +1 -0
  77. package/dist/generated/dsl/index.js +10 -0
  78. package/dist/generated/dsl/index.js.map +1 -0
  79. package/dist/generated/dsl/tasks.d.ts +23 -0
  80. package/dist/generated/dsl/tasks.d.ts.map +1 -0
  81. package/dist/generated/dsl/tasks.js +25 -0
  82. package/dist/generated/dsl/tasks.js.map +1 -0
  83. package/dist/generated/dsl/workflows.d.ts +31 -0
  84. package/dist/generated/dsl/workflows.d.ts.map +1 -0
  85. package/dist/generated/dsl/workflows.js +32 -0
  86. package/dist/generated/dsl/workflows.js.map +1 -0
  87. package/dist/generated/index.d.ts +7 -0
  88. package/dist/generated/index.d.ts.map +1 -0
  89. package/dist/generated/index.js +7 -0
  90. package/dist/generated/index.js.map +1 -0
  91. package/dist/generated/policy-runtime.d.ts +114 -0
  92. package/dist/generated/policy-runtime.d.ts.map +1 -0
  93. package/dist/generated/policy-runtime.js +195 -0
  94. package/dist/generated/policy-runtime.js.map +1 -0
  95. package/dist/generated/policy.d.ts +146 -0
  96. package/dist/generated/policy.d.ts.map +1 -0
  97. package/dist/generated/policy.js +236 -0
  98. package/dist/generated/policy.js.map +1 -0
  99. package/dist/generated/program.d.ts +33 -0
  100. package/dist/generated/program.d.ts.map +1 -0
  101. package/dist/generated/program.js +92 -0
  102. package/dist/generated/program.js.map +1 -0
  103. package/dist/generated/schemas.d.ts +471 -0
  104. package/dist/generated/schemas.d.ts.map +1 -0
  105. package/dist/generated/schemas.js +640 -0
  106. package/dist/generated/schemas.js.map +1 -0
  107. package/dist/generated/types.d.ts +187 -0
  108. package/dist/generated/types.d.ts.map +1 -0
  109. package/dist/generated/types.js +3 -0
  110. package/dist/generated/types.js.map +1 -0
  111. package/dist/index.d.ts +4 -3
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +3 -5
  114. package/dist/index.js.map +1 -0
  115. package/package.json +47 -10
  116. package/schemas/2026A.config.json +47 -0
  117. package/schemas/2026A.json +116 -0
@@ -0,0 +1,114 @@
1
+ export type RiskLevel = "low" | "medium" | "high" | "critical";
2
+ export type ExecutionMode = "normal" | "long-running" | "watch" | "interactive" | "background";
3
+ interface EffectWrite {
4
+ target: string;
5
+ description?: string;
6
+ overwrite?: boolean;
7
+ destructive?: boolean;
8
+ idempotent?: boolean;
9
+ idempotencyKey?: string;
10
+ idempotentNote?: string;
11
+ }
12
+ interface EffectRead {
13
+ target: string;
14
+ description?: string;
15
+ }
16
+ interface NetworkEffect {
17
+ description?: string;
18
+ domains?: string[];
19
+ idempotent?: boolean;
20
+ idempotencyKey?: string;
21
+ idempotentNote?: string;
22
+ }
23
+ interface Effects {
24
+ riskLevel?: RiskLevel;
25
+ reads?: EffectRead[];
26
+ writes?: EffectWrite[];
27
+ network?: NetworkEffect | boolean;
28
+ executionMode?: ExecutionMode;
29
+ requiresConfirmation?: boolean;
30
+ }
31
+ interface FileContract {
32
+ mode: "read" | "write" | "append" | "readWrite";
33
+ }
34
+ interface Option {
35
+ name: string;
36
+ schema?: {
37
+ type?: string;
38
+ [key: string]: unknown;
39
+ };
40
+ file?: FileContract;
41
+ effects?: Effects;
42
+ repeatable?: boolean;
43
+ }
44
+ interface EnvVar {
45
+ sensitive?: boolean;
46
+ }
47
+ export type DerivedReadEffect = {
48
+ kind: "option-file";
49
+ option: string;
50
+ path?: string;
51
+ source: string;
52
+ } | {
53
+ kind: "semantic";
54
+ target: string;
55
+ description?: string;
56
+ source: string;
57
+ };
58
+ export type DerivedWriteEffect = {
59
+ kind: "option-file";
60
+ option: string;
61
+ path?: string;
62
+ mode: string;
63
+ source: string;
64
+ } | {
65
+ kind: "semantic";
66
+ target: string;
67
+ description?: string;
68
+ overwrite?: boolean;
69
+ destructive?: boolean;
70
+ idempotent?: boolean;
71
+ idempotencyKey?: string;
72
+ idempotentNote?: string;
73
+ source: string;
74
+ };
75
+ export interface DerivedNetworkEffect {
76
+ description?: string;
77
+ domains?: string[];
78
+ idempotent?: boolean;
79
+ idempotencyKey?: string;
80
+ idempotentNote?: string;
81
+ source: string;
82
+ }
83
+ export interface DerivedPolicy {
84
+ riskLevel: RiskLevel;
85
+ requiresConfirmation: boolean;
86
+ idempotent: boolean;
87
+ sideEffects: string[];
88
+ reads: DerivedReadEffect[];
89
+ writes: DerivedWriteEffect[];
90
+ network?: DerivedNetworkEffect[];
91
+ executionMode?: ExecutionMode;
92
+ requiresSecrets?: string[];
93
+ }
94
+ export interface IntrospectionResult {
95
+ command: string;
96
+ activeOptions: string[];
97
+ policy: DerivedPolicy;
98
+ }
99
+ export interface OptionInput {
100
+ value: unknown;
101
+ specified: boolean;
102
+ }
103
+ export interface PolicyDerivationInput {
104
+ commandId: string;
105
+ commandEffects?: Effects;
106
+ options: Record<string, OptionInput & {
107
+ definition: Option;
108
+ }>;
109
+ env?: Record<string, EnvVar>;
110
+ }
111
+ export declare function isOptionActive(definition: Option, value: unknown, specified: boolean): boolean;
112
+ export declare function derivePolicy(input: PolicyDerivationInput): DerivedPolicy;
113
+ export {};
114
+ //# sourceMappingURL=policy-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-runtime.d.ts","sourceRoot":"","sources":["../../src/generated/policy-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ // Standalone policy runtime. Copied by cli-contracts generate.
2
+ // This file is self-contained — no imports from cli-contracts internals.
3
+ // ─── Risk Level Ordering ────────────────────────────────────────
4
+ const RISK_ORDER = {
5
+ low: 0,
6
+ medium: 1,
7
+ high: 2,
8
+ critical: 3,
9
+ };
10
+ function maxRiskLevel(...levels) {
11
+ let max = "low";
12
+ for (const level of levels) {
13
+ if (RISK_ORDER[level] > RISK_ORDER[max]) {
14
+ max = level;
15
+ }
16
+ }
17
+ return max;
18
+ }
19
+ // ─── Active Determination ───────────────────────────────────────
20
+ export function isOptionActive(definition, value, specified) {
21
+ const schemaType = definition.schema?.type;
22
+ if (schemaType === "boolean") {
23
+ return value === true;
24
+ }
25
+ if (definition.repeatable) {
26
+ return specified && Array.isArray(value) && value.length > 0;
27
+ }
28
+ return specified && value != null;
29
+ }
30
+ // ─── Derive Policy ─────────────────────────────────────────────
31
+ export function derivePolicy(input) {
32
+ const sideEffects = new Set();
33
+ const reads = [];
34
+ const writes = [];
35
+ const networkEffects = [];
36
+ const riskLevels = [];
37
+ let executionMode;
38
+ let explicitConfirmation;
39
+ if (input.commandEffects) {
40
+ const ce = input.commandEffects;
41
+ riskLevels.push(ce.riskLevel ?? "low");
42
+ if (ce.writes) {
43
+ sideEffects.add("file_write");
44
+ for (const w of ce.writes) {
45
+ writes.push({
46
+ kind: "semantic",
47
+ target: w.target,
48
+ description: w.description,
49
+ overwrite: w.overwrite,
50
+ destructive: w.destructive,
51
+ ...(w.idempotent !== undefined ? { idempotent: w.idempotent } : {}),
52
+ ...(w.idempotencyKey ? { idempotencyKey: w.idempotencyKey } : {}),
53
+ ...(w.idempotentNote ? { idempotentNote: w.idempotentNote } : {}),
54
+ source: `command:${input.commandId}`,
55
+ });
56
+ }
57
+ }
58
+ if (ce.reads) {
59
+ for (const r of ce.reads) {
60
+ reads.push({
61
+ kind: "semantic",
62
+ target: r.target,
63
+ description: r.description,
64
+ source: `command:${input.commandId}`,
65
+ });
66
+ }
67
+ }
68
+ if (ce.network) {
69
+ sideEffects.add("network");
70
+ if (typeof ce.network === "object") {
71
+ networkEffects.push({
72
+ ...(ce.network.description ? { description: ce.network.description } : {}),
73
+ ...(ce.network.domains ? { domains: ce.network.domains } : {}),
74
+ ...(ce.network.idempotent !== undefined ? { idempotent: ce.network.idempotent } : {}),
75
+ ...(ce.network.idempotencyKey ? { idempotencyKey: ce.network.idempotencyKey } : {}),
76
+ ...(ce.network.idempotentNote ? { idempotentNote: ce.network.idempotentNote } : {}),
77
+ source: `command:${input.commandId}`,
78
+ });
79
+ }
80
+ }
81
+ if (ce.executionMode) {
82
+ executionMode = ce.executionMode;
83
+ }
84
+ if (ce.requiresConfirmation !== undefined) {
85
+ explicitConfirmation = ce.requiresConfirmation;
86
+ }
87
+ }
88
+ for (const [optName, optInput] of Object.entries(input.options)) {
89
+ const { definition, value, specified } = optInput;
90
+ const active = isOptionActive(definition, value, specified);
91
+ if (!active)
92
+ continue;
93
+ if (definition.file) {
94
+ const filePath = typeof value === "string" ? value : undefined;
95
+ const mode = definition.file.mode;
96
+ if (mode === "read" || mode === "readWrite") {
97
+ reads.push({
98
+ kind: "option-file",
99
+ option: optName,
100
+ path: filePath,
101
+ source: `option:${optName}`,
102
+ });
103
+ }
104
+ if (mode === "write" || mode === "append" || mode === "readWrite") {
105
+ sideEffects.add("file_write");
106
+ writes.push({
107
+ kind: "option-file",
108
+ option: optName,
109
+ path: filePath,
110
+ mode,
111
+ source: `option:${optName}`,
112
+ });
113
+ }
114
+ }
115
+ if (definition.effects) {
116
+ const eff = definition.effects;
117
+ riskLevels.push(eff.riskLevel ?? "low");
118
+ if (eff.writes) {
119
+ sideEffects.add("file_write");
120
+ for (const w of eff.writes) {
121
+ writes.push({
122
+ kind: "semantic",
123
+ target: w.target,
124
+ description: w.description,
125
+ overwrite: w.overwrite,
126
+ destructive: w.destructive,
127
+ ...(w.idempotent !== undefined ? { idempotent: w.idempotent } : {}),
128
+ ...(w.idempotencyKey ? { idempotencyKey: w.idempotencyKey } : {}),
129
+ ...(w.idempotentNote ? { idempotentNote: w.idempotentNote } : {}),
130
+ source: `option:${optName}`,
131
+ });
132
+ }
133
+ }
134
+ if (eff.reads) {
135
+ for (const r of eff.reads) {
136
+ reads.push({
137
+ kind: "semantic",
138
+ target: r.target,
139
+ description: r.description,
140
+ source: `option:${optName}`,
141
+ });
142
+ }
143
+ }
144
+ if (eff.network) {
145
+ sideEffects.add("network");
146
+ if (typeof eff.network === "object") {
147
+ networkEffects.push({
148
+ ...(eff.network.description ? { description: eff.network.description } : {}),
149
+ ...(eff.network.domains ? { domains: eff.network.domains } : {}),
150
+ ...(eff.network.idempotent !== undefined ? { idempotent: eff.network.idempotent } : {}),
151
+ ...(eff.network.idempotencyKey ? { idempotencyKey: eff.network.idempotencyKey } : {}),
152
+ ...(eff.network.idempotentNote ? { idempotentNote: eff.network.idempotentNote } : {}),
153
+ source: `option:${optName}`,
154
+ });
155
+ }
156
+ }
157
+ if (eff.executionMode && !executionMode) {
158
+ executionMode = eff.executionMode;
159
+ }
160
+ if (eff.requiresConfirmation !== undefined && explicitConfirmation === undefined) {
161
+ explicitConfirmation = eff.requiresConfirmation;
162
+ }
163
+ }
164
+ }
165
+ const finalRiskLevel = riskLevels.length > 0 ? maxRiskLevel(...riskLevels) : "low";
166
+ const requiresConfirmation = explicitConfirmation ??
167
+ (finalRiskLevel === "high" || finalRiskLevel === "critical");
168
+ let requiresSecrets;
169
+ if (input.env) {
170
+ const secrets = [];
171
+ for (const [envName, envVar] of Object.entries(input.env)) {
172
+ if (envVar.sensitive) {
173
+ secrets.push(envName);
174
+ }
175
+ }
176
+ if (secrets.length > 0) {
177
+ requiresSecrets = secrets;
178
+ }
179
+ }
180
+ const semanticWrites = writes.filter((w) => w.kind === "semantic");
181
+ const idempotent = semanticWrites.every((w) => w.idempotent === true) &&
182
+ networkEffects.every((n) => n.idempotent === true);
183
+ return {
184
+ riskLevel: finalRiskLevel,
185
+ requiresConfirmation,
186
+ idempotent,
187
+ sideEffects: [...sideEffects],
188
+ reads,
189
+ writes,
190
+ ...(networkEffects.length > 0 ? { network: networkEffects } : {}),
191
+ ...(executionMode ? { executionMode } : {}),
192
+ ...(requiresSecrets ? { requiresSecrets } : {}),
193
+ };
194
+ }
195
+ //# sourceMappingURL=policy-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-runtime.js","sourceRoot":"","sources":["../../src/generated/policy-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ import type { DerivedPolicy, IntrospectionResult } from "./policy-runtime.js";
2
+ export type { DerivedPolicy, IntrospectionResult };
3
+ export declare const commandDefinitions: {
4
+ readonly validate: {
5
+ readonly effects: {
6
+ readonly riskLevel: "low";
7
+ readonly reads: readonly [{
8
+ readonly target: "artifact-definitions";
9
+ readonly description: "artifact-contracts.yaml and config";
10
+ }, {
11
+ readonly target: "repository-files";
12
+ readonly description: "All tracked files via git ls-files. Only read when --check-files is specified.";
13
+ }];
14
+ readonly executionMode: "normal";
15
+ };
16
+ readonly options: readonly [{
17
+ readonly name: "config";
18
+ }, {
19
+ readonly name: "check-files";
20
+ readonly schema: {
21
+ readonly type: "boolean";
22
+ };
23
+ }];
24
+ };
25
+ readonly resolve: {
26
+ readonly effects: {
27
+ readonly riskLevel: "low";
28
+ readonly reads: readonly [{
29
+ readonly target: "artifact-definitions";
30
+ readonly description: "artifact-contracts.yaml and config";
31
+ }];
32
+ readonly executionMode: "normal";
33
+ };
34
+ readonly options: readonly [{
35
+ readonly name: "config";
36
+ }, {
37
+ readonly name: "format";
38
+ readonly schema: {
39
+ readonly type: "string";
40
+ readonly enum: readonly ["yaml", "json"];
41
+ };
42
+ }];
43
+ };
44
+ readonly list: {
45
+ readonly effects: {
46
+ readonly riskLevel: "low";
47
+ readonly reads: readonly [{
48
+ readonly target: "artifact-definitions";
49
+ readonly description: "artifact-contracts.yaml and config";
50
+ }];
51
+ readonly executionMode: "normal";
52
+ };
53
+ readonly options: readonly [{
54
+ readonly name: "config";
55
+ }, {
56
+ readonly name: "authority";
57
+ readonly schema: {
58
+ readonly type: "string";
59
+ readonly enum: readonly ["canonical", "derived", "generated", "control"];
60
+ };
61
+ }, {
62
+ readonly name: "path";
63
+ }, {
64
+ readonly name: "format";
65
+ readonly schema: {
66
+ readonly type: "string";
67
+ readonly enum: readonly ["text", "json", "yaml"];
68
+ };
69
+ }];
70
+ };
71
+ readonly explain: {
72
+ readonly effects: {
73
+ readonly riskLevel: "low";
74
+ readonly reads: readonly [{
75
+ readonly target: "artifact-definitions";
76
+ readonly description: "artifact-contracts.yaml and config";
77
+ }];
78
+ readonly executionMode: "normal";
79
+ };
80
+ readonly options: readonly [{
81
+ readonly name: "config";
82
+ }, {
83
+ readonly name: "format";
84
+ readonly schema: {
85
+ readonly type: "string";
86
+ readonly enum: readonly ["text", "json", "yaml"];
87
+ };
88
+ }];
89
+ };
90
+ readonly audit: {
91
+ readonly effects: {
92
+ readonly riskLevel: "medium";
93
+ readonly reads: readonly [{
94
+ readonly target: "artifact-definitions";
95
+ readonly description: "artifact-contracts.yaml and config";
96
+ }];
97
+ readonly writes: readonly [{
98
+ readonly target: "output-file";
99
+ readonly description: "Written only when --output is specified";
100
+ readonly overwrite: true;
101
+ }];
102
+ readonly network: {
103
+ readonly description: "LLM API calls to configured provider";
104
+ readonly idempotent: false;
105
+ };
106
+ readonly executionMode: "normal";
107
+ };
108
+ readonly options: readonly [{
109
+ readonly name: "config";
110
+ }, {
111
+ readonly name: "adapter";
112
+ readonly schema: {
113
+ readonly type: "string";
114
+ readonly enum: readonly ["mock", "cursor", "openai", "claude", "gemini"];
115
+ };
116
+ }, {
117
+ readonly name: "model";
118
+ }, {
119
+ readonly name: "show-prompt";
120
+ readonly schema: {
121
+ readonly type: "boolean";
122
+ };
123
+ }, {
124
+ readonly name: "dry-run";
125
+ readonly schema: {
126
+ readonly type: "boolean";
127
+ };
128
+ }, {
129
+ readonly name: "fail-on";
130
+ readonly schema: {
131
+ readonly type: "string";
132
+ readonly enum: readonly ["info", "warning", "error", "critical"];
133
+ };
134
+ }, {
135
+ readonly name: "output";
136
+ }, {
137
+ readonly name: "report-format";
138
+ readonly schema: {
139
+ readonly type: "string";
140
+ readonly enum: readonly ["text", "json", "yaml"];
141
+ };
142
+ }];
143
+ };
144
+ };
145
+ export declare function deriveCommandPolicy(commandId: string, optionValues: Record<string, unknown>): IntrospectionResult;
146
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/generated/policy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;AAEnD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgNrB,CAAC;AAEX,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,mBAAmB,CA0BrB"}