@autonomaai/conversation-tracker 1.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationService.d.ts","sourceRoot":"","sources":["../src/conversationService.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EAGnB,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,aAAa,EACb,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAEjB,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAA4B;gBAE/B,MAAM,EAAE,yBAAyB;IAsBvC,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;IAuCZ,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC5C,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC;IAoDV,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA2B3B,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAqBtE,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0D9F,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;YA2B7E,UAAU;YAsBV,eAAe;IAkB7B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;IAalB,kBAAkB,CAAC,OAAO,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAyBhE"}
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ConversationTrackingService = void 0;
7
+ const supabase_js_1 = require("@supabase/supabase-js");
8
+ const winston_1 = __importDefault(require("winston"));
9
+ class ConversationTrackingService {
10
+ supabase;
11
+ logger;
12
+ _config;
13
+ constructor(config) {
14
+ this._config = config;
15
+ this.supabase = (0, supabase_js_1.createClient)(config.supabaseUrl, config.supabaseKey);
16
+ this.logger = winston_1.default.createLogger({
17
+ level: 'info',
18
+ format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.errors({ stack: true }), winston_1.default.format.json()),
19
+ defaultMeta: { service: 'conversation-tracker' },
20
+ transports: [
21
+ new winston_1.default.transports.Console({
22
+ format: winston_1.default.format.simple()
23
+ })
24
+ ],
25
+ silent: !config.enableLogging
26
+ });
27
+ }
28
+ // Session management
29
+ async startSession(userId, agentType, metadata, userAgent, ipAddress) {
30
+ try {
31
+ const sessionData = {
32
+ user_id: userId,
33
+ agent_type: agentType,
34
+ metadata: metadata || {},
35
+ user_agent: userAgent || '',
36
+ ip_address: ipAddress || ''
37
+ };
38
+ const { data, error } = await this.supabase
39
+ .from('conversation_sessions')
40
+ .insert([{
41
+ ...sessionData,
42
+ session_start: new Date().toISOString(),
43
+ total_messages: 0,
44
+ is_active: true
45
+ }])
46
+ .select()
47
+ .single();
48
+ if (error) {
49
+ this.logger.error('Failed to start session', { error, userId, agentType });
50
+ throw new Error(`Failed to start session: ${error.message}`);
51
+ }
52
+ this.logger.info('Session started', {
53
+ sessionId: data.id,
54
+ userId,
55
+ agentType
56
+ });
57
+ return data.id;
58
+ }
59
+ catch (error) {
60
+ this.logger.error('Error starting session', { error, userId, agentType });
61
+ throw error;
62
+ }
63
+ }
64
+ async endSession(sessionId) {
65
+ try {
66
+ const session = await this.getSession(sessionId);
67
+ if (!session) {
68
+ this.logger.warn('Session not found for ending', { sessionId });
69
+ return;
70
+ }
71
+ const duration = session.session_start
72
+ ? Math.floor((Date.now() - new Date(session.session_start).getTime()) / 1000)
73
+ : null;
74
+ const { error } = await this.supabase
75
+ .from('conversation_sessions')
76
+ .update({
77
+ session_end: new Date().toISOString(),
78
+ session_duration_seconds: duration,
79
+ is_active: false
80
+ })
81
+ .eq('id', sessionId);
82
+ if (error) {
83
+ this.logger.error('Failed to end session', { error, sessionId });
84
+ throw new Error(`Failed to end session: ${error.message}`);
85
+ }
86
+ this.logger.info('Session ended', { sessionId, duration });
87
+ }
88
+ catch (error) {
89
+ this.logger.error('Error ending session', { error, sessionId });
90
+ throw error;
91
+ }
92
+ }
93
+ // Message tracking
94
+ async logMessage(sessionId, sender, content, metadata) {
95
+ try {
96
+ const messageCount = await this.getMessageCount(sessionId);
97
+ const messageData = {
98
+ session_id: sessionId,
99
+ message_sequence: messageCount + 1,
100
+ sender,
101
+ content,
102
+ content_type: 'text',
103
+ response_time_ms: metadata?.responseTimeMs || 0,
104
+ token_count: metadata?.tokenCount || 0,
105
+ cost_usd: metadata?.costUsd || 0,
106
+ agent_tools_used: metadata?.toolsUsed || [],
107
+ error_message: metadata?.error?.message || '',
108
+ metadata: metadata || {}
109
+ };
110
+ const { error } = await this.supabase
111
+ .from('conversation_messages')
112
+ .insert([{
113
+ ...messageData,
114
+ timestamp: new Date().toISOString(),
115
+ error_occurred: metadata?.error?.occurred || false
116
+ }]);
117
+ if (error) {
118
+ this.logger.error('Failed to log message', { error, sessionId, sender });
119
+ throw new Error(`Failed to log message: ${error.message}`);
120
+ }
121
+ // Update session message count
122
+ await this.supabase
123
+ .from('conversation_sessions')
124
+ .update({
125
+ total_messages: messageCount + 1
126
+ })
127
+ .eq('id', sessionId);
128
+ this.logger.debug('Message logged', {
129
+ sessionId,
130
+ sender,
131
+ sequence: messageCount + 1,
132
+ contentLength: content.length
133
+ });
134
+ }
135
+ catch (error) {
136
+ this.logger.error('Error logging message', { error, sessionId, sender });
137
+ throw error;
138
+ }
139
+ }
140
+ // Analytics methods for BFF
141
+ async getConversationHistory(userId, agentType, limit = 50) {
142
+ try {
143
+ let query = this.supabase
144
+ .from('conversation_sessions')
145
+ .select('*')
146
+ .eq('user_id', userId)
147
+ .order('session_start', { ascending: false })
148
+ .limit(limit);
149
+ if (agentType) {
150
+ query = query.eq('agent_type', agentType);
151
+ }
152
+ const { data, error } = await query;
153
+ if (error) {
154
+ this.logger.error('Failed to get conversation history', { error, userId, agentType });
155
+ throw new Error(`Failed to get conversation history: ${error.message}`);
156
+ }
157
+ return data || [];
158
+ }
159
+ catch (error) {
160
+ this.logger.error('Error getting conversation history', { error, userId, agentType });
161
+ throw error;
162
+ }
163
+ }
164
+ async getActiveConversations(userId) {
165
+ try {
166
+ const { data, error } = await this.supabase
167
+ .from('conversation_sessions')
168
+ .select('*')
169
+ .eq('user_id', userId)
170
+ .eq('is_active', true)
171
+ .order('session_start', { ascending: false });
172
+ if (error) {
173
+ this.logger.error('Failed to get active conversations', { error, userId });
174
+ throw new Error(`Failed to get active conversations: ${error.message}`);
175
+ }
176
+ return data || [];
177
+ }
178
+ catch (error) {
179
+ this.logger.error('Error getting active conversations', { error, userId });
180
+ throw error;
181
+ }
182
+ }
183
+ async getConversationMetrics(userId, timeframe = '7d') {
184
+ try {
185
+ const hours = this.parseTimeframe(timeframe);
186
+ const since = new Date(Date.now() - hours * 60 * 60 * 1000);
187
+ const { data: sessions, error: sessionsError } = await this.supabase
188
+ .from('conversation_sessions')
189
+ .select('*')
190
+ .eq('user_id', userId)
191
+ .gte('session_start', since.toISOString());
192
+ if (sessionsError) {
193
+ throw new Error(`Failed to get sessions: ${sessionsError.message}`);
194
+ }
195
+ const sessionIds = (sessions || []).map((s) => s.id);
196
+ let messages = [];
197
+ if (sessionIds.length > 0) {
198
+ const { data: messagesData, error: messagesError } = await this.supabase
199
+ .from('conversation_messages')
200
+ .select('*')
201
+ .in('session_id', sessionIds);
202
+ if (messagesError) {
203
+ throw new Error(`Failed to get messages: ${messagesError.message}`);
204
+ }
205
+ messages = messagesData || [];
206
+ }
207
+ const totalSessions = sessions?.length || 0;
208
+ const totalMessages = messages.length;
209
+ const avgSessionDuration = sessions && sessions.length > 0
210
+ ? sessions
211
+ .filter((s) => s.session_duration_seconds)
212
+ .reduce((sum, s) => sum + (s.session_duration_seconds || 0), 0) / sessions.length
213
+ : 0;
214
+ const mostUsedAgent = this.getMostUsedAgent(sessions || []);
215
+ const successRate = messages.length > 0
216
+ ? messages.filter(m => !m.error_occurred).length / messages.length
217
+ : 0;
218
+ return {
219
+ total_sessions: totalSessions,
220
+ total_messages: totalMessages,
221
+ avg_session_duration: avgSessionDuration,
222
+ most_used_agent: mostUsedAgent,
223
+ success_rate: successRate,
224
+ timeframe
225
+ };
226
+ }
227
+ catch (error) {
228
+ this.logger.error('Error getting conversation metrics', { error, userId, timeframe });
229
+ throw error;
230
+ }
231
+ }
232
+ async getSessionMessages(sessionId, limit) {
233
+ try {
234
+ let query = this.supabase
235
+ .from('conversation_messages')
236
+ .select('*')
237
+ .eq('session_id', sessionId)
238
+ .order('message_sequence', { ascending: true });
239
+ if (limit) {
240
+ query = query.limit(limit);
241
+ }
242
+ const { data, error } = await query;
243
+ if (error) {
244
+ this.logger.error('Failed to get session messages', { error, sessionId });
245
+ throw new Error(`Failed to get session messages: ${error.message}`);
246
+ }
247
+ return data || [];
248
+ }
249
+ catch (error) {
250
+ this.logger.error('Error getting session messages', { error, sessionId });
251
+ throw error;
252
+ }
253
+ }
254
+ // Private helper methods
255
+ async getSession(sessionId) {
256
+ try {
257
+ const { data, error } = await this.supabase
258
+ .from('conversation_sessions')
259
+ .select('*')
260
+ .eq('id', sessionId)
261
+ .single();
262
+ if (error) {
263
+ if (error.code === 'PGRST116') { // No rows returned
264
+ return null;
265
+ }
266
+ throw error;
267
+ }
268
+ return data;
269
+ }
270
+ catch (error) {
271
+ this.logger.error('Error getting session', { error, sessionId });
272
+ throw error;
273
+ }
274
+ }
275
+ async getMessageCount(sessionId) {
276
+ try {
277
+ const { count, error } = await this.supabase
278
+ .from('conversation_messages')
279
+ .select('*', { count: 'exact', head: true })
280
+ .eq('session_id', sessionId);
281
+ if (error) {
282
+ throw error;
283
+ }
284
+ return count || 0;
285
+ }
286
+ catch (error) {
287
+ this.logger.error('Error getting message count', { error, sessionId });
288
+ throw error;
289
+ }
290
+ }
291
+ parseTimeframe(timeframe) {
292
+ const timeMap = {
293
+ '1h': 1,
294
+ '24h': 24,
295
+ '7d': 168,
296
+ '30d': 720,
297
+ '90d': 2160
298
+ };
299
+ return timeMap[timeframe] || 168; // Default to 7 days
300
+ }
301
+ getMostUsedAgent(sessions) {
302
+ if (sessions.length === 0)
303
+ return 'market_maker';
304
+ const agentCounts = sessions.reduce((acc, session) => {
305
+ acc[session.agent_type] = (acc[session.agent_type] || 0) + 1;
306
+ return acc;
307
+ }, {});
308
+ return Object.entries(agentCounts)
309
+ .sort(([, a], [, b]) => b - a)[0]?.[0] || 'market_maker';
310
+ }
311
+ // Cleanup and maintenance
312
+ async cleanupOldSessions(daysOld = 90) {
313
+ try {
314
+ const cutoffDate = new Date(Date.now() - daysOld * 24 * 60 * 60 * 1000);
315
+ const { data, error } = await this.supabase
316
+ .from('conversation_sessions')
317
+ .delete()
318
+ .lt('session_start', cutoffDate.toISOString())
319
+ .eq('is_active', false)
320
+ .select('id');
321
+ if (error) {
322
+ this.logger.error('Failed to cleanup old sessions', { error, daysOld });
323
+ throw new Error(`Failed to cleanup old sessions: ${error.message}`);
324
+ }
325
+ const deletedCount = data?.length || 0;
326
+ this.logger.info('Cleaned up old sessions', { deletedCount, daysOld });
327
+ return deletedCount;
328
+ }
329
+ catch (error) {
330
+ this.logger.error('Error cleaning up old sessions', { error, daysOld });
331
+ throw error;
332
+ }
333
+ }
334
+ }
335
+ exports.ConversationTrackingService = ConversationTrackingService;
336
+ //# sourceMappingURL=conversationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationService.js","sourceRoot":"","sources":["../src/conversationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export { ConversationTrackingService } from './conversationService';
2
+ export { OperationsTrackingService } from './operationsService';
3
+ export { BFFDataService } from './bffDataService';
4
+ export { AgentTrackingMiddleware, createAgentTracker, trackAgentCall } from './agentMiddleware';
5
+ export type { ConversationTrackerConfig, ConversationSession, ConversationMessage, MessageSender, ContentType, AgentType, ConversationSessionInput, ConversationMessageInput, MessageMetadata } from './types';
6
+ import type { ConversationTrackerConfig } from './types';
7
+ import { ConversationTrackingService } from './conversationService';
8
+ import { OperationsTrackingService } from './operationsService';
9
+ import { BFFDataService } from './bffDataService';
10
+ import { AgentTrackingMiddleware } from './agentMiddleware';
11
+ export declare function createConversationTracker(config: ConversationTrackerConfig): {
12
+ conversation: ConversationTrackingService;
13
+ operations: OperationsTrackingService;
14
+ bff: BFFDataService;
15
+ middleware: AgentTrackingMiddleware;
16
+ };
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGhG,YAAY,EACV,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,SAAS,EACT,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EAChB,MAAM,SAAS,CAAC;AAGjB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB;;;;;EAY1E"}
package/dist/index.js ADDED
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.trackAgentCall = exports.createAgentTracker = exports.AgentTrackingMiddleware = exports.BFFDataService = exports.OperationsTrackingService = exports.ConversationTrackingService = void 0;
4
+ exports.createConversationTracker = createConversationTracker;
5
+ // Main exports for the Conversation Operations Tracking System
6
+ var conversationService_1 = require("./conversationService");
7
+ Object.defineProperty(exports, "ConversationTrackingService", { enumerable: true, get: function () { return conversationService_1.ConversationTrackingService; } });
8
+ var operationsService_1 = require("./operationsService");
9
+ Object.defineProperty(exports, "OperationsTrackingService", { enumerable: true, get: function () { return operationsService_1.OperationsTrackingService; } });
10
+ var bffDataService_1 = require("./bffDataService");
11
+ Object.defineProperty(exports, "BFFDataService", { enumerable: true, get: function () { return bffDataService_1.BFFDataService; } });
12
+ var agentMiddleware_1 = require("./agentMiddleware");
13
+ Object.defineProperty(exports, "AgentTrackingMiddleware", { enumerable: true, get: function () { return agentMiddleware_1.AgentTrackingMiddleware; } });
14
+ Object.defineProperty(exports, "createAgentTracker", { enumerable: true, get: function () { return agentMiddleware_1.createAgentTracker; } });
15
+ Object.defineProperty(exports, "trackAgentCall", { enumerable: true, get: function () { return agentMiddleware_1.trackAgentCall; } });
16
+ const conversationService_2 = require("./conversationService");
17
+ const operationsService_2 = require("./operationsService");
18
+ const bffDataService_2 = require("./bffDataService");
19
+ const agentMiddleware_2 = require("./agentMiddleware");
20
+ function createConversationTracker(config) {
21
+ const conversationService = new conversationService_2.ConversationTrackingService(config);
22
+ const operationsService = new operationsService_2.OperationsTrackingService(config);
23
+ const bffDataService = new bffDataService_2.BFFDataService(config);
24
+ const agentMiddleware = new agentMiddleware_2.AgentTrackingMiddleware(config);
25
+ return {
26
+ conversation: conversationService,
27
+ operations: operationsService,
28
+ bff: bffDataService,
29
+ middleware: agentMiddleware
30
+ };
31
+ }
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA0BA,8DAYC;AAtCD,+DAA+D;AAC/D,6DAAoE;AAA3D,kIAAA,2BAA2B,OAAA;AACpC,yDAAgE;AAAvD,8HAAA,yBAAyB,OAAA;AAClC,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,qDAAgG;AAAvF,0HAAA,uBAAuB,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAAE,iHAAA,cAAc,OAAA;AAiBpE,+DAAoE;AACpE,2DAAgE;AAChE,qDAAkD;AAClD,uDAA4D;AAE5D,SAAgB,yBAAyB,CAAC,MAAiC;IACzE,MAAM,mBAAmB,GAAG,IAAI,iDAA2B,CAAC,MAAM,CAAC,CAAC;IACpE,MAAM,iBAAiB,GAAG,IAAI,6CAAyB,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,IAAI,yCAAuB,CAAC,MAAM,CAAC,CAAC;IAE5D,OAAO;QACL,YAAY,EAAE,mBAAmB;QACjC,UAAU,EAAE,iBAAiB;QAC7B,GAAG,EAAE,cAAc;QACnB,UAAU,EAAE,eAAe;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { TradingOperationInput, PortfolioSnapshot, PortfolioSnapshotInput, WalletOperationInput, TradingPerformance, PortfolioHistory, AgentPerformanceMetrics, ConversationTrackerConfig } from './types';
2
+ export declare class OperationsTrackingService {
3
+ private supabase;
4
+ private logger;
5
+ private _config;
6
+ constructor(config: ConversationTrackerConfig);
7
+ logTradingOperation(operation: TradingOperationInput): Promise<string>;
8
+ updateTradingOperation(operationId: string, updates: Partial<TradingOperationInput>): Promise<void>;
9
+ savePortfolioSnapshot(snapshot: PortfolioSnapshotInput): Promise<string>;
10
+ getLatestPortfolioSnapshot(userId: string): Promise<PortfolioSnapshot | null>;
11
+ logWalletOperation(operation: WalletOperationInput): Promise<string>;
12
+ updateWalletOperation(operationId: string, updates: Partial<WalletOperationInput>): Promise<void>;
13
+ getTradingPerformance(userId: string, timeframe?: string): Promise<TradingPerformance>;
14
+ getPortfolioHistory(userId: string, timeframe?: string): Promise<PortfolioHistory[]>;
15
+ getAgentPerformanceMetrics(userId: string, agentType?: string): Promise<AgentPerformanceMetrics[]>;
16
+ trackHummingbotOperation(executorData: any, userId: string): Promise<string>;
17
+ calculateMaxDrawdown(history: PortfolioHistory[]): number;
18
+ createAutomaticPortfolioSnapshot(userId: string, portfolioData: Omit<PortfolioSnapshotInput, 'user_id' | 'snapshot_type'>): Promise<string>;
19
+ private parseTimeframe;
20
+ private mapHummingbotStatus;
21
+ cleanupOldOperations(daysOld?: number): Promise<{
22
+ trading: number;
23
+ wallet: number;
24
+ snapshots: number;
25
+ }>;
26
+ }
27
+ //# sourceMappingURL=operationsService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operationsService.d.ts","sourceRoot":"","sources":["../src/operationsService.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAEjB,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAA4B;gBAE/B,MAAM,EAAE,yBAAyB;IAsBvC,mBAAmB,CAAC,SAAS,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BtE,sBAAsB,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC;IAyBV,qBAAqB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BxE,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA0B7E,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IA8BpE,qBAAqB,CACzB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC;IAyBV,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuC7F,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA6B3F,0BAA0B,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,uBAAuB,EAAE,CAAC;IA4B/B,wBAAwB,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBlF,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM;IAqBnD,gCAAgC,CACpC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,eAAe,CAAC,GACvE,OAAO,CAAC,MAAM,CAAC;IAgBlB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IAYrB,oBAAoB,CAAC,OAAO,GAAE,MAAY,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAsDnH"}