@enactprotocol/api 2.0.0 → 2.0.2

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.
package/dist/client.js ADDED
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Enact Registry API Client
3
+ * Core HTTP client for interacting with the Enact registry
4
+ */
5
+ /**
6
+ * Default registry URL
7
+ */
8
+ export const DEFAULT_REGISTRY_URL = "https://siikwkfgsmouioodghho.supabase.co/functions/v1";
9
+ /**
10
+ * API request error
11
+ */
12
+ export class ApiRequestError extends Error {
13
+ /** HTTP status code */
14
+ status;
15
+ /** API error code */
16
+ code;
17
+ /** Original error response */
18
+ response;
19
+ constructor(message, status, code, response) {
20
+ super(message);
21
+ this.name = "ApiRequestError";
22
+ this.status = status;
23
+ this.code = code;
24
+ this.response = response;
25
+ }
26
+ }
27
+ /**
28
+ * Parse rate limit headers from response
29
+ */
30
+ function parseRateLimitHeaders(headers) {
31
+ const limit = headers.get("X-RateLimit-Limit");
32
+ const remaining = headers.get("X-RateLimit-Remaining");
33
+ const reset = headers.get("X-RateLimit-Reset");
34
+ if (limit && remaining && reset) {
35
+ return {
36
+ limit: Number.parseInt(limit, 10),
37
+ remaining: Number.parseInt(remaining, 10),
38
+ reset: Number.parseInt(reset, 10),
39
+ };
40
+ }
41
+ return undefined;
42
+ }
43
+ /**
44
+ * Enact Registry API Client
45
+ */
46
+ export class EnactApiClient {
47
+ baseUrl;
48
+ timeout;
49
+ maxRetries;
50
+ userAgent;
51
+ authToken;
52
+ constructor(options = {}) {
53
+ this.baseUrl = options.baseUrl ?? DEFAULT_REGISTRY_URL;
54
+ this.timeout = options.timeout ?? 30000;
55
+ this.maxRetries = options.retries ?? 3;
56
+ this.userAgent = options.userAgent ?? "enact-cli/0.1.0";
57
+ this.authToken = options.authToken;
58
+ }
59
+ /**
60
+ * Set authentication token
61
+ */
62
+ setAuthToken(token) {
63
+ this.authToken = token;
64
+ }
65
+ /**
66
+ * Get current authentication token
67
+ */
68
+ getAuthToken() {
69
+ return this.authToken;
70
+ }
71
+ /**
72
+ * Get the base URL for the registry
73
+ */
74
+ getBaseUrl() {
75
+ return this.baseUrl;
76
+ }
77
+ /**
78
+ * Get the user agent string
79
+ */
80
+ getUserAgent() {
81
+ return this.userAgent;
82
+ }
83
+ /**
84
+ * Check if client is authenticated
85
+ */
86
+ isAuthenticated() {
87
+ return this.authToken !== undefined;
88
+ }
89
+ /**
90
+ * Build headers for a request
91
+ */
92
+ buildHeaders(contentType) {
93
+ const headers = new Headers();
94
+ headers.set("User-Agent", this.userAgent);
95
+ headers.set("Accept", "application/json");
96
+ if (contentType) {
97
+ headers.set("Content-Type", contentType);
98
+ }
99
+ if (this.authToken) {
100
+ headers.set("Authorization", `Bearer ${this.authToken}`);
101
+ // Supabase Edge Functions also need the apikey header
102
+ headers.set("apikey", this.authToken);
103
+ }
104
+ return headers;
105
+ }
106
+ /**
107
+ * Make an HTTP request with retry logic
108
+ */
109
+ async request(method, path, options = {}) {
110
+ const url = `${this.baseUrl}${path}`;
111
+ const retryCount = options.retryCount ?? 0;
112
+ const controller = new AbortController();
113
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
114
+ try {
115
+ const response = await fetch(url, {
116
+ method,
117
+ headers: this.buildHeaders(options.contentType),
118
+ body: options.body ? JSON.stringify(options.body) : undefined,
119
+ signal: controller.signal,
120
+ });
121
+ clearTimeout(timeoutId);
122
+ const rateLimit = parseRateLimitHeaders(response.headers);
123
+ // Handle rate limiting with retry
124
+ if (response.status === 429 && retryCount < this.maxRetries) {
125
+ const retryAfter = response.headers.get("Retry-After");
126
+ const delay = retryAfter ? Number.parseInt(retryAfter, 10) * 1000 : 1000 * (retryCount + 1);
127
+ await new Promise((resolve) => setTimeout(resolve, delay));
128
+ return this.request(method, path, { ...options, retryCount: retryCount + 1 });
129
+ }
130
+ // Handle error responses
131
+ if (!response.ok) {
132
+ let errorData;
133
+ try {
134
+ errorData = (await response.json());
135
+ }
136
+ catch {
137
+ // Response body might not be JSON
138
+ }
139
+ const code = errorData?.error?.code ?? "unknown";
140
+ const message = errorData?.error?.message ?? `HTTP ${response.status}`;
141
+ throw new ApiRequestError(message, response.status, code, errorData);
142
+ }
143
+ // Handle 204 No Content
144
+ if (response.status === 204) {
145
+ return {
146
+ data: undefined,
147
+ status: response.status,
148
+ rateLimit,
149
+ };
150
+ }
151
+ // Parse JSON response
152
+ let data;
153
+ try {
154
+ const text = await response.text();
155
+ if (!text || text.trim() === "") {
156
+ throw new ApiRequestError("Server returned empty response", response.status, "empty_response");
157
+ }
158
+ data = JSON.parse(text);
159
+ }
160
+ catch (parseError) {
161
+ if (parseError instanceof ApiRequestError) {
162
+ throw parseError;
163
+ }
164
+ throw new ApiRequestError("Server returned invalid JSON response", response.status, "invalid_json");
165
+ }
166
+ return { data, status: response.status, rateLimit };
167
+ }
168
+ catch (error) {
169
+ clearTimeout(timeoutId);
170
+ // Handle network errors with retry
171
+ if (error instanceof Error && error.name === "AbortError") {
172
+ if (retryCount < this.maxRetries) {
173
+ const delay = 1000 * (retryCount + 1);
174
+ await new Promise((resolve) => setTimeout(resolve, delay));
175
+ return this.request(method, path, { ...options, retryCount: retryCount + 1 });
176
+ }
177
+ throw new ApiRequestError("Request timeout", 0, "timeout");
178
+ }
179
+ // Re-throw ApiRequestErrors
180
+ if (error instanceof ApiRequestError) {
181
+ throw error;
182
+ }
183
+ // Wrap other errors
184
+ throw new ApiRequestError(error instanceof Error ? error.message : "Unknown error", 0, "network_error");
185
+ }
186
+ }
187
+ /**
188
+ * GET request
189
+ */
190
+ async get(path) {
191
+ return this.request("GET", path);
192
+ }
193
+ /**
194
+ * POST request
195
+ */
196
+ async post(path, body) {
197
+ return this.request("POST", path, {
198
+ body,
199
+ contentType: "application/json",
200
+ });
201
+ }
202
+ /**
203
+ * PUT request
204
+ */
205
+ async put(path, body) {
206
+ return this.request("PUT", path, {
207
+ body,
208
+ contentType: "application/json",
209
+ });
210
+ }
211
+ /**
212
+ * DELETE request
213
+ */
214
+ async delete(path) {
215
+ return this.request("DELETE", path);
216
+ }
217
+ /**
218
+ * Download a file (returns raw response for streaming)
219
+ */
220
+ async download(path) {
221
+ const url = `${this.baseUrl}${path}`;
222
+ const controller = new AbortController();
223
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout * 10); // Longer timeout for downloads
224
+ try {
225
+ const response = await fetch(url, {
226
+ method: "GET",
227
+ headers: this.buildHeaders(),
228
+ signal: controller.signal,
229
+ });
230
+ clearTimeout(timeoutId);
231
+ if (!response.ok) {
232
+ throw new ApiRequestError(`Download failed: HTTP ${response.status}`, response.status, "download_error");
233
+ }
234
+ return response;
235
+ }
236
+ catch (error) {
237
+ clearTimeout(timeoutId);
238
+ if (error instanceof ApiRequestError) {
239
+ throw error;
240
+ }
241
+ throw new ApiRequestError(error instanceof Error ? error.message : "Download failed", 0, "download_error");
242
+ }
243
+ }
244
+ }
245
+ /**
246
+ * Create a new API client instance
247
+ */
248
+ export function createApiClient(options) {
249
+ return new EnactApiClient(options);
250
+ }
251
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Tool download functionality
3
+ * Implements bundle download and tool info retrieval
4
+ */
5
+ import type { EnactApiClient } from "./client";
6
+ /**
7
+ * Download options
8
+ */
9
+ export interface DownloadOptions {
10
+ /** Tool name (e.g., "alice/utils/greeter") */
11
+ name: string;
12
+ /** Tool version (e.g., "1.2.0") */
13
+ version: string;
14
+ /** Verify bundle hash after download */
15
+ verify?: boolean | undefined;
16
+ }
17
+ /**
18
+ * Download result
19
+ */
20
+ export interface DownloadResult {
21
+ /** Downloaded bundle data */
22
+ data: ArrayBuffer;
23
+ /** Bundle hash (sha256) */
24
+ hash: string;
25
+ /** Content length in bytes */
26
+ size: number;
27
+ /** Content type */
28
+ contentType: string;
29
+ }
30
+ /**
31
+ * Tool info (metadata) v2
32
+ */
33
+ export interface ToolInfo {
34
+ /** Tool name */
35
+ name: string;
36
+ /** Tool description */
37
+ description: string;
38
+ /** Tool tags */
39
+ tags: string[];
40
+ /** SPDX license */
41
+ license: string;
42
+ /** Author info */
43
+ author: {
44
+ username: string;
45
+ avatarUrl?: string | undefined;
46
+ };
47
+ /** Repository URL */
48
+ repository?: string | undefined;
49
+ /** Creation timestamp */
50
+ createdAt: Date;
51
+ /** Last update timestamp */
52
+ updatedAt: Date;
53
+ /** Latest version */
54
+ latestVersion: string;
55
+ /** All available versions (paginated) */
56
+ versions: Array<{
57
+ version: string;
58
+ publishedAt: Date;
59
+ downloads: number;
60
+ bundleHash: string;
61
+ yanked: boolean;
62
+ }>;
63
+ /** Total number of versions */
64
+ versionsTotal: number;
65
+ /** Total downloads */
66
+ totalDownloads: number;
67
+ }
68
+ /**
69
+ * Version-specific tool info v2
70
+ */
71
+ export interface ToolVersionInfo {
72
+ /** Tool name */
73
+ name: string;
74
+ /** Version */
75
+ version: string;
76
+ /** Description */
77
+ description: string;
78
+ /** License */
79
+ license: string;
80
+ /** Whether yanked */
81
+ yanked: boolean;
82
+ /** Yank reason */
83
+ yankReason?: string | undefined;
84
+ /** Replacement version */
85
+ yankReplacement?: string | undefined;
86
+ /** Yanked timestamp */
87
+ yankedAt?: Date | undefined;
88
+ /** Full manifest */
89
+ manifest: Record<string, unknown>;
90
+ /** Bundle info */
91
+ bundle: {
92
+ hash: string;
93
+ size: number;
94
+ downloadUrl: string;
95
+ };
96
+ /** Attestations */
97
+ attestations: Array<{
98
+ auditor: string;
99
+ auditorProvider: string;
100
+ signedAt: Date;
101
+ rekorLogId: string;
102
+ verified: boolean;
103
+ }>;
104
+ /** Published by */
105
+ publishedBy: {
106
+ username: string;
107
+ avatarUrl?: string | undefined;
108
+ };
109
+ /** Publication timestamp */
110
+ publishedAt: Date;
111
+ /** Download count */
112
+ downloads: number;
113
+ }
114
+ /**
115
+ * Get tool metadata
116
+ *
117
+ * @param client - API client instance
118
+ * @param name - Tool name (e.g., "alice/utils/greeter")
119
+ * @returns Tool metadata
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * const info = await getToolInfo(client, "alice/utils/greeter");
124
+ * console.log(info.latestVersion);
125
+ * ```
126
+ */
127
+ export declare function getToolInfo(client: EnactApiClient, name: string): Promise<ToolInfo>;
128
+ /**
129
+ * Get version-specific tool information
130
+ *
131
+ * @param client - API client instance
132
+ * @param name - Tool name
133
+ * @param version - Tool version
134
+ * @returns Version-specific tool info
135
+ */
136
+ export declare function getToolVersion(client: EnactApiClient, name: string, version: string): Promise<ToolVersionInfo>;
137
+ /**
138
+ * Get attestations for a tool version
139
+ *
140
+ * @param client - API client instance
141
+ * @param name - Tool name
142
+ * @param version - Tool version
143
+ * @returns Attestation list
144
+ */
145
+ export declare function getAttestations(client: EnactApiClient, name: string, version: string): Promise<Array<{
146
+ auditor: string;
147
+ auditorProvider: string;
148
+ signedAt: Date;
149
+ rekorLogId: string;
150
+ verified: boolean;
151
+ }>>;
152
+ /**
153
+ * Download a tool bundle (v2 with yank handling)
154
+ *
155
+ * @param client - API client instance
156
+ * @param options - Download options
157
+ * @returns Downloaded bundle data with metadata
158
+ *
159
+ * @example
160
+ * ```ts
161
+ * const result = await downloadBundle(client, {
162
+ * name: "alice/utils/greeter",
163
+ * version: "1.2.0",
164
+ * verify: true
165
+ * });
166
+ * await Bun.write("bundle.tar.gz", result.data);
167
+ * ```
168
+ */
169
+ export declare function downloadBundle(client: EnactApiClient, options: DownloadOptions & {
170
+ acknowledgeYanked?: boolean;
171
+ }): Promise<DownloadResult>;
172
+ //# sourceMappingURL=download.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Tool download functionality
3
+ * Implements bundle download and tool info retrieval
4
+ */
5
+ /**
6
+ * Convert raw tool metadata to ToolInfo
7
+ */
8
+ function toToolInfo(raw) {
9
+ return {
10
+ name: raw.name,
11
+ description: raw.description,
12
+ tags: raw.tags,
13
+ license: raw.license,
14
+ author: {
15
+ username: raw.author.username,
16
+ avatarUrl: raw.author.avatar_url,
17
+ },
18
+ repository: raw.repository,
19
+ createdAt: new Date(raw.created_at),
20
+ updatedAt: new Date(raw.updated_at),
21
+ latestVersion: raw.latest_version,
22
+ versions: raw.versions.map((v) => ({
23
+ version: v.version,
24
+ publishedAt: new Date(v.published_at),
25
+ downloads: v.downloads,
26
+ bundleHash: v.bundle_hash,
27
+ yanked: v.yanked,
28
+ })),
29
+ versionsTotal: raw.versions_total,
30
+ totalDownloads: raw.total_downloads,
31
+ };
32
+ }
33
+ /**
34
+ * Convert raw version details to ToolVersionInfo
35
+ */
36
+ function toToolVersionInfo(raw) {
37
+ return {
38
+ name: raw.name,
39
+ version: raw.version,
40
+ description: raw.description,
41
+ license: raw.license,
42
+ yanked: raw.yanked,
43
+ yankReason: raw.yank_reason,
44
+ yankReplacement: raw.yank_replacement,
45
+ yankedAt: raw.yanked_at ? new Date(raw.yanked_at) : undefined,
46
+ manifest: raw.manifest,
47
+ bundle: {
48
+ hash: raw.bundle.hash,
49
+ size: raw.bundle.size,
50
+ downloadUrl: raw.bundle.download_url,
51
+ },
52
+ attestations: raw.attestations.map((a) => ({
53
+ auditor: a.auditor,
54
+ auditorProvider: a.auditor_provider,
55
+ signedAt: new Date(a.signed_at),
56
+ rekorLogId: a.rekor_log_id,
57
+ verified: a.verification?.verified ?? false,
58
+ })),
59
+ publishedBy: {
60
+ username: raw.published_by.username,
61
+ avatarUrl: raw.published_by.avatar_url,
62
+ },
63
+ publishedAt: new Date(raw.published_at),
64
+ downloads: raw.downloads,
65
+ };
66
+ }
67
+ /**
68
+ * Get tool metadata
69
+ *
70
+ * @param client - API client instance
71
+ * @param name - Tool name (e.g., "alice/utils/greeter")
72
+ * @returns Tool metadata
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * const info = await getToolInfo(client, "alice/utils/greeter");
77
+ * console.log(info.latestVersion);
78
+ * ```
79
+ */
80
+ export async function getToolInfo(client, name) {
81
+ const response = await client.get(`/tools/${name}`);
82
+ return toToolInfo(response.data);
83
+ }
84
+ /**
85
+ * Get version-specific tool information
86
+ *
87
+ * @param client - API client instance
88
+ * @param name - Tool name
89
+ * @param version - Tool version
90
+ * @returns Version-specific tool info
91
+ */
92
+ export async function getToolVersion(client, name, version) {
93
+ const response = await client.get(`/tools/${name}/versions/${version}`);
94
+ return toToolVersionInfo(response.data);
95
+ }
96
+ /**
97
+ * Get attestations for a tool version
98
+ *
99
+ * @param client - API client instance
100
+ * @param name - Tool name
101
+ * @param version - Tool version
102
+ * @returns Attestation list
103
+ */
104
+ export async function getAttestations(client, name, version) {
105
+ const response = await client.get(`/tools/${name}/versions/${version}`);
106
+ return response.data.attestations.map((a) => ({
107
+ auditor: a.auditor,
108
+ auditorProvider: a.auditor_provider,
109
+ signedAt: new Date(a.signed_at),
110
+ rekorLogId: a.rekor_log_id,
111
+ verified: a.verification?.verified ?? false,
112
+ }));
113
+ }
114
+ /**
115
+ * Download a tool bundle (v2 with yank handling)
116
+ *
117
+ * @param client - API client instance
118
+ * @param options - Download options
119
+ * @returns Downloaded bundle data with metadata
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * const result = await downloadBundle(client, {
124
+ * name: "alice/utils/greeter",
125
+ * version: "1.2.0",
126
+ * verify: true
127
+ * });
128
+ * await Bun.write("bundle.tar.gz", result.data);
129
+ * ```
130
+ */
131
+ export async function downloadBundle(client, options) {
132
+ const { name, version, acknowledgeYanked } = options;
133
+ // Build query params for yanked version acknowledgment
134
+ const params = acknowledgeYanked ? "?acknowledge_yanked=true" : "";
135
+ const response = await client.download(`/tools/${name}/versions/${version}/download${params}`);
136
+ const data = await response.arrayBuffer();
137
+ const contentType = response.headers.get("Content-Type") ?? "application/gzip";
138
+ const size = data.byteLength;
139
+ // Extract hash from ETag or compute it
140
+ let hash = response.headers.get("ETag")?.replace(/"/g, "") ?? "";
141
+ // If verify is true and we need to compute hash, do it
142
+ if (options.verify && !hash.startsWith("sha256:")) {
143
+ const hashBuffer = await crypto.subtle.digest("SHA-256", data);
144
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
145
+ hash = `sha256:${hashArray.map((b) => b.toString(16).padStart(2, "0")).join("")}`;
146
+ }
147
+ return {
148
+ data,
149
+ hash,
150
+ size,
151
+ contentType,
152
+ };
153
+ }
154
+ //# sourceMappingURL=download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @enactprotocol/api - Registry API client for Enact tools (v2)
3
+ *
4
+ * This package provides HTTP client functionality for interacting with
5
+ * the Enact registry v2, including:
6
+ * - OAuth authentication
7
+ * - Tool search and discovery
8
+ * - Bundle download with yank handling
9
+ * - Tool publishing (multipart upload)
10
+ * - Attestation management
11
+ * - Trust configuration
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ export declare const VERSION = "0.2.0";
16
+ export * from "./types";
17
+ export { EnactApiClient, createApiClient } from "./client";
18
+ export type { ApiClientOptions } from "./client";
19
+ export { searchTools } from "./search";
20
+ export type { SearchOptions, SearchResult, SearchResponse } from "./search";
21
+ export { downloadBundle, getToolInfo, getToolVersion, getAttestations } from "./download";
22
+ export type { DownloadOptions, DownloadResult, ToolInfo, ToolVersionInfo } from "./download";
23
+ export { publishTool, createBundle, submitAttestation, yankVersion, unyankVersion, deleteTool, } from "./publish";
24
+ export type { PublishOptions, PublishResult, BundleInfo, SubmitAttestationOptions, AttestationResult, } from "./publish";
25
+ export { initiateLogin, exchangeCodeForToken, refreshAccessToken, getCurrentUser, authenticate, logout, getAuthStatus, getUserProfile, submitFeedback, } from "./auth";
26
+ export type { AuthResult, AuthStatus } from "./auth";
27
+ export { getAttestations as getAttestationList, submitAttestation as submitAttestationToRegistry, revokeAttestation, hasAttestation, getAttestationBundle, verifyAttestationLocally, verifyAllAttestations, hasTrustedAttestation, } from "./attestations";
28
+ export type { AttestationListResponse, VerifiedAuditor } from "./attestations";
29
+ export { getUserTrust, updateMyTrust, addTrustedAuditor, removeTrustedAuditor, userTrustsAuditor, getMyTrustedAuditors, } from "./trust";
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAM/B,cAAc,SAAS,CAAC;AAMxB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAMjD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM5E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1F,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAM7F,OAAO,EACL,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAMnB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,MAAM,EACN,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,QAAQ,CAAC;AAChB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAMrD,OAAO,EACL,eAAe,IAAI,kBAAkB,EACrC,iBAAiB,IAAI,2BAA2B,EAChD,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAM/E,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,SAAS,CAAC"}