baileys-joss 1.0.1 → 1.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.
Files changed (125) hide show
  1. package/README.md +1983 -79
  2. package/lib/Socket/business.d.ts +4 -0
  3. package/lib/Socket/business.d.ts.map +1 -1
  4. package/lib/Socket/chats.d.ts +4 -0
  5. package/lib/Socket/chats.d.ts.map +1 -1
  6. package/lib/Socket/chats.js +44 -1
  7. package/lib/Socket/chats.js.map +1 -1
  8. package/lib/Socket/communities.d.ts +4 -0
  9. package/lib/Socket/communities.d.ts.map +1 -1
  10. package/lib/Socket/groups.d.ts +4 -0
  11. package/lib/Socket/groups.d.ts.map +1 -1
  12. package/lib/Socket/index.d.ts +4 -0
  13. package/lib/Socket/index.d.ts.map +1 -1
  14. package/lib/Socket/messages-recv.d.ts +4 -0
  15. package/lib/Socket/messages-recv.d.ts.map +1 -1
  16. package/lib/Socket/messages-send.d.ts +4 -0
  17. package/lib/Socket/messages-send.d.ts.map +1 -1
  18. package/lib/Socket/newsletter.d.ts +4 -0
  19. package/lib/Socket/newsletter.d.ts.map +1 -1
  20. package/lib/Types/Message.d.ts +4 -0
  21. package/lib/Types/Message.d.ts.map +1 -1
  22. package/lib/Utils/activity-logger.d.ts +189 -0
  23. package/lib/Utils/activity-logger.d.ts.map +1 -0
  24. package/lib/Utils/activity-logger.js +418 -0
  25. package/lib/Utils/activity-logger.js.map +1 -0
  26. package/lib/Utils/anti-spam.d.ts +145 -0
  27. package/lib/Utils/anti-spam.d.ts.map +1 -0
  28. package/lib/Utils/anti-spam.js +398 -0
  29. package/lib/Utils/anti-spam.js.map +1 -0
  30. package/lib/Utils/auto-reply.d.ts +123 -0
  31. package/lib/Utils/auto-reply.d.ts.map +1 -0
  32. package/lib/Utils/auto-reply.js +234 -0
  33. package/lib/Utils/auto-reply.js.map +1 -0
  34. package/lib/Utils/broadcast.d.ts +121 -0
  35. package/lib/Utils/broadcast.d.ts.map +1 -0
  36. package/lib/Utils/broadcast.js +223 -0
  37. package/lib/Utils/broadcast.js.map +1 -0
  38. package/lib/Utils/bulk-messaging.d.ts +79 -0
  39. package/lib/Utils/bulk-messaging.d.ts.map +1 -0
  40. package/lib/Utils/bulk-messaging.js +148 -0
  41. package/lib/Utils/bulk-messaging.js.map +1 -0
  42. package/lib/Utils/chat-analytics.d.ts +92 -0
  43. package/lib/Utils/chat-analytics.d.ts.map +1 -0
  44. package/lib/Utils/chat-analytics.js +337 -0
  45. package/lib/Utils/chat-analytics.js.map +1 -0
  46. package/lib/Utils/chat-control.d.ts +156 -0
  47. package/lib/Utils/chat-control.d.ts.map +1 -0
  48. package/lib/Utils/chat-control.js +224 -0
  49. package/lib/Utils/chat-control.js.map +1 -0
  50. package/lib/Utils/chat-export.d.ts +75 -0
  51. package/lib/Utils/chat-export.d.ts.map +1 -0
  52. package/lib/Utils/chat-export.js +309 -0
  53. package/lib/Utils/chat-export.js.map +1 -0
  54. package/lib/Utils/content-detector.d.ts +199 -0
  55. package/lib/Utils/content-detector.d.ts.map +1 -0
  56. package/lib/Utils/content-detector.js +442 -0
  57. package/lib/Utils/content-detector.js.map +1 -0
  58. package/lib/Utils/index.d.ts +23 -0
  59. package/lib/Utils/index.d.ts.map +1 -1
  60. package/lib/Utils/index.js +52 -0
  61. package/lib/Utils/index.js.map +1 -1
  62. package/lib/Utils/link-scanner.d.ts +112 -0
  63. package/lib/Utils/link-scanner.d.ts.map +1 -0
  64. package/lib/Utils/link-scanner.js +433 -0
  65. package/lib/Utils/link-scanner.js.map +1 -0
  66. package/lib/Utils/media-downloader.d.ts +86 -0
  67. package/lib/Utils/media-downloader.d.ts.map +1 -0
  68. package/lib/Utils/media-downloader.js +269 -0
  69. package/lib/Utils/media-downloader.js.map +1 -0
  70. package/lib/Utils/meme-generator.d.ts +96 -0
  71. package/lib/Utils/meme-generator.d.ts.map +1 -0
  72. package/lib/Utils/meme-generator.js +368 -0
  73. package/lib/Utils/meme-generator.js.map +1 -0
  74. package/lib/Utils/message-search.d.ts +96 -0
  75. package/lib/Utils/message-search.d.ts.map +1 -0
  76. package/lib/Utils/message-search.js +261 -0
  77. package/lib/Utils/message-search.js.map +1 -0
  78. package/lib/Utils/messages-media.d.ts +20 -1
  79. package/lib/Utils/messages-media.d.ts.map +1 -1
  80. package/lib/Utils/messages-media.js +100 -5
  81. package/lib/Utils/messages-media.js.map +1 -1
  82. package/lib/Utils/messages.d.ts.map +1 -1
  83. package/lib/Utils/messages.js +9 -2
  84. package/lib/Utils/messages.js.map +1 -1
  85. package/lib/Utils/mini-games.d.ts +155 -0
  86. package/lib/Utils/mini-games.d.ts.map +1 -0
  87. package/lib/Utils/mini-games.js +445 -0
  88. package/lib/Utils/mini-games.js.map +1 -0
  89. package/lib/Utils/pomodoro.d.ts +139 -0
  90. package/lib/Utils/pomodoro.d.ts.map +1 -0
  91. package/lib/Utils/pomodoro.js +434 -0
  92. package/lib/Utils/pomodoro.js.map +1 -0
  93. package/lib/Utils/qr-generator.d.ts +95 -0
  94. package/lib/Utils/qr-generator.d.ts.map +1 -0
  95. package/lib/Utils/qr-generator.js +226 -0
  96. package/lib/Utils/qr-generator.js.map +1 -0
  97. package/lib/Utils/quotes.d.ts +110 -0
  98. package/lib/Utils/quotes.d.ts.map +1 -0
  99. package/lib/Utils/quotes.js +325 -0
  100. package/lib/Utils/quotes.js.map +1 -0
  101. package/lib/Utils/scheduling.d.ts +88 -0
  102. package/lib/Utils/scheduling.d.ts.map +1 -0
  103. package/lib/Utils/scheduling.js +163 -0
  104. package/lib/Utils/scheduling.js.map +1 -0
  105. package/lib/Utils/status-posting.d.ts +151 -0
  106. package/lib/Utils/status-posting.d.ts.map +1 -0
  107. package/lib/Utils/status-posting.js +162 -0
  108. package/lib/Utils/status-posting.js.map +1 -0
  109. package/lib/Utils/templates.d.ts +154 -0
  110. package/lib/Utils/templates.d.ts.map +1 -0
  111. package/lib/Utils/templates.js +368 -0
  112. package/lib/Utils/templates.js.map +1 -0
  113. package/lib/Utils/vcard.d.ts +86 -0
  114. package/lib/Utils/vcard.d.ts.map +1 -0
  115. package/lib/Utils/vcard.js +195 -0
  116. package/lib/Utils/vcard.js.map +1 -0
  117. package/lib/Utils/voice-note.d.ts +115 -0
  118. package/lib/Utils/voice-note.d.ts.map +1 -0
  119. package/lib/Utils/voice-note.js +212 -0
  120. package/lib/Utils/voice-note.js.map +1 -0
  121. package/lib/Utils/weather.d.ts +118 -0
  122. package/lib/Utils/weather.d.ts.map +1 -0
  123. package/lib/Utils/weather.js +362 -0
  124. package/lib/Utils/weather.js.map +1 -0
  125. package/package.json +6 -3
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Baileys-Joss: Chat Control Utilities
3
+ *
4
+ * Fitur untuk Read Receipt, Typing Indicator, Pinned Messages, Disappearing Messages
5
+ */
6
+ export interface TypingOptions {
7
+ /** Duration in milliseconds before auto-pause */
8
+ duration?: number;
9
+ /** Auto pause after duration */
10
+ autoPause?: boolean;
11
+ }
12
+ export interface DisappearingOptions {
13
+ /** Duration in seconds (0 = off, 86400 = 24h, 604800 = 7 days, 7776000 = 90 days) */
14
+ duration: number;
15
+ }
16
+ /**
17
+ * Disappearing message durations
18
+ */
19
+ export declare const DISAPPEARING_DURATIONS: {
20
+ readonly OFF: 0;
21
+ readonly HOURS_24: 86400;
22
+ readonly DAYS_7: 604800;
23
+ readonly DAYS_90: 7776000;
24
+ };
25
+ /**
26
+ * Typing indicator helper
27
+ */
28
+ export declare class TypingIndicator {
29
+ private intervals;
30
+ private sendPresence;
31
+ constructor(sendPresence: (jid: string, presence: 'composing' | 'paused' | 'recording') => Promise<void>);
32
+ /**
33
+ * Start typing indicator
34
+ */
35
+ startTyping(jid: string, options?: TypingOptions): Promise<void>;
36
+ /**
37
+ * Start recording indicator (for voice notes)
38
+ */
39
+ startRecording(jid: string, options?: TypingOptions): Promise<void>;
40
+ /**
41
+ * Stop typing/recording indicator
42
+ */
43
+ stopTyping(jid: string): Promise<void>;
44
+ /**
45
+ * Stop all typing indicators
46
+ */
47
+ stopAll(): Promise<void>;
48
+ /**
49
+ * Simulate typing for a duration then execute callback
50
+ */
51
+ simulateTyping<T>(jid: string, duration: number, callback: () => Promise<T>): Promise<T>;
52
+ }
53
+ /**
54
+ * Read Receipt controller
55
+ */
56
+ export interface ReadReceiptConfig {
57
+ /** Enable read receipts (blue ticks) */
58
+ enabled: boolean;
59
+ /** Auto-read messages */
60
+ autoRead?: boolean;
61
+ /** Delay before marking as read (ms) */
62
+ readDelay?: number;
63
+ /** Excluded JIDs */
64
+ excludeJids?: string[];
65
+ }
66
+ /**
67
+ * Create read receipt controller
68
+ */
69
+ export declare const createReadReceiptController: (sendReadReceipt: (jid: string, participant: string | undefined, messageIds: string[]) => Promise<void>, config?: ReadReceiptConfig) => {
70
+ /**
71
+ * Update config
72
+ */
73
+ setConfig(newConfig: Partial<ReadReceiptConfig>): void;
74
+ /**
75
+ * Get current config
76
+ */
77
+ getConfig(): {
78
+ /** Enable read receipts (blue ticks) */
79
+ enabled: boolean;
80
+ /** Auto-read messages */
81
+ autoRead?: boolean;
82
+ /** Delay before marking as read (ms) */
83
+ readDelay?: number;
84
+ /** Excluded JIDs */
85
+ excludeJids?: string[];
86
+ };
87
+ /**
88
+ * Enable read receipts
89
+ */
90
+ enable(): void;
91
+ /**
92
+ * Disable read receipts
93
+ */
94
+ disable(): void;
95
+ /**
96
+ * Check if enabled
97
+ */
98
+ isEnabled(): boolean;
99
+ /**
100
+ * Mark messages as read (respects config)
101
+ */
102
+ markRead(jid: string, participant: string | undefined, messageIds: string[]): Promise<void>;
103
+ /**
104
+ * Force mark as read (ignores config)
105
+ */
106
+ forceMarkRead(jid: string, participant: string | undefined, messageIds: string[]): Promise<void>;
107
+ };
108
+ /**
109
+ * Pinned message interface
110
+ */
111
+ export interface PinnedMessage {
112
+ messageId: string;
113
+ jid: string;
114
+ pinnedAt: Date;
115
+ pinnedBy?: string;
116
+ expiresAt?: Date;
117
+ }
118
+ /**
119
+ * Pinned messages manager (client-side tracking)
120
+ */
121
+ export declare class PinnedMessagesManager {
122
+ private pinnedMessages;
123
+ /**
124
+ * Add pinned message
125
+ */
126
+ pin(jid: string, messageId: string, pinnedBy?: string, expiresAt?: Date): PinnedMessage;
127
+ /**
128
+ * Remove pinned message
129
+ */
130
+ unpin(jid: string, messageId: string): boolean;
131
+ /**
132
+ * Get pinned messages for a chat
133
+ */
134
+ getPinned(jid: string): PinnedMessage[];
135
+ /**
136
+ * Check if message is pinned
137
+ */
138
+ isPinned(jid: string, messageId: string): boolean;
139
+ /**
140
+ * Clear all pins for a chat
141
+ */
142
+ clearPins(jid: string): void;
143
+ /**
144
+ * Clear expired pins
145
+ */
146
+ clearExpired(): number;
147
+ }
148
+ /**
149
+ * Create typing indicator helper
150
+ */
151
+ export declare const createTypingIndicator: (sendPresence: (jid: string, presence: "composing" | "paused" | "recording") => Promise<void>) => TypingIndicator;
152
+ /**
153
+ * Create pinned messages manager
154
+ */
155
+ export declare const createPinnedMessagesManager: () => PinnedMessagesManager;
156
+ //# sourceMappingURL=chat-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-control.d.ts","sourceRoot":"","sources":["../../src/Utils/chat-control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Baileys-Joss: Chat Control Utilities
3
+ *
4
+ * Fitur untuk Read Receipt, Typing Indicator, Pinned Messages, Disappearing Messages
5
+ */
6
+ /**
7
+ * Disappearing message durations
8
+ */
9
+ export const DISAPPEARING_DURATIONS = {
10
+ OFF: 0,
11
+ HOURS_24: 86400,
12
+ DAYS_7: 604800,
13
+ DAYS_90: 7776000
14
+ };
15
+ /**
16
+ * Typing indicator helper
17
+ */
18
+ export class TypingIndicator {
19
+ constructor(sendPresence) {
20
+ this.intervals = new Map();
21
+ this.sendPresence = sendPresence;
22
+ }
23
+ /**
24
+ * Start typing indicator
25
+ */
26
+ async startTyping(jid, options = {}) {
27
+ // Stop existing typing for this jid
28
+ this.stopTyping(jid);
29
+ await this.sendPresence(jid, 'composing');
30
+ if (options.autoPause !== false && options.duration) {
31
+ const timeout = setTimeout(() => {
32
+ this.stopTyping(jid);
33
+ }, options.duration);
34
+ this.intervals.set(jid, timeout);
35
+ }
36
+ }
37
+ /**
38
+ * Start recording indicator (for voice notes)
39
+ */
40
+ async startRecording(jid, options = {}) {
41
+ this.stopTyping(jid);
42
+ await this.sendPresence(jid, 'recording');
43
+ if (options.autoPause !== false && options.duration) {
44
+ const timeout = setTimeout(() => {
45
+ this.stopTyping(jid);
46
+ }, options.duration);
47
+ this.intervals.set(jid, timeout);
48
+ }
49
+ }
50
+ /**
51
+ * Stop typing/recording indicator
52
+ */
53
+ async stopTyping(jid) {
54
+ const existing = this.intervals.get(jid);
55
+ if (existing) {
56
+ clearTimeout(existing);
57
+ this.intervals.delete(jid);
58
+ }
59
+ try {
60
+ await this.sendPresence(jid, 'paused');
61
+ }
62
+ catch { }
63
+ }
64
+ /**
65
+ * Stop all typing indicators
66
+ */
67
+ async stopAll() {
68
+ for (const [jid] of this.intervals) {
69
+ await this.stopTyping(jid);
70
+ }
71
+ }
72
+ /**
73
+ * Simulate typing for a duration then execute callback
74
+ */
75
+ async simulateTyping(jid, duration, callback) {
76
+ await this.startTyping(jid);
77
+ await new Promise(r => setTimeout(r, duration));
78
+ await this.stopTyping(jid);
79
+ return callback();
80
+ }
81
+ }
82
+ /**
83
+ * Create read receipt controller
84
+ */
85
+ export const createReadReceiptController = (sendReadReceipt, config = { enabled: true }) => {
86
+ let currentConfig = { ...config };
87
+ return {
88
+ /**
89
+ * Update config
90
+ */
91
+ setConfig(newConfig) {
92
+ currentConfig = { ...currentConfig, ...newConfig };
93
+ },
94
+ /**
95
+ * Get current config
96
+ */
97
+ getConfig() {
98
+ return { ...currentConfig };
99
+ },
100
+ /**
101
+ * Enable read receipts
102
+ */
103
+ enable() {
104
+ currentConfig.enabled = true;
105
+ },
106
+ /**
107
+ * Disable read receipts
108
+ */
109
+ disable() {
110
+ currentConfig.enabled = false;
111
+ },
112
+ /**
113
+ * Check if enabled
114
+ */
115
+ isEnabled() {
116
+ return currentConfig.enabled;
117
+ },
118
+ /**
119
+ * Mark messages as read (respects config)
120
+ */
121
+ async markRead(jid, participant, messageIds) {
122
+ if (!currentConfig.enabled)
123
+ return;
124
+ if (currentConfig.excludeJids?.includes(jid))
125
+ return;
126
+ if (currentConfig.readDelay) {
127
+ await new Promise(r => setTimeout(r, currentConfig.readDelay));
128
+ }
129
+ await sendReadReceipt(jid, participant, messageIds);
130
+ },
131
+ /**
132
+ * Force mark as read (ignores config)
133
+ */
134
+ async forceMarkRead(jid, participant, messageIds) {
135
+ await sendReadReceipt(jid, participant, messageIds);
136
+ }
137
+ };
138
+ };
139
+ /**
140
+ * Pinned messages manager (client-side tracking)
141
+ */
142
+ export class PinnedMessagesManager {
143
+ constructor() {
144
+ this.pinnedMessages = new Map();
145
+ }
146
+ /**
147
+ * Add pinned message
148
+ */
149
+ pin(jid, messageId, pinnedBy, expiresAt) {
150
+ const pinned = {
151
+ messageId,
152
+ jid,
153
+ pinnedAt: new Date(),
154
+ pinnedBy,
155
+ expiresAt
156
+ };
157
+ const existing = this.pinnedMessages.get(jid) || [];
158
+ // Remove if already pinned
159
+ const filtered = existing.filter(p => p.messageId !== messageId);
160
+ filtered.push(pinned);
161
+ this.pinnedMessages.set(jid, filtered);
162
+ return pinned;
163
+ }
164
+ /**
165
+ * Remove pinned message
166
+ */
167
+ unpin(jid, messageId) {
168
+ const existing = this.pinnedMessages.get(jid);
169
+ if (!existing)
170
+ return false;
171
+ const filtered = existing.filter(p => p.messageId !== messageId);
172
+ if (filtered.length === existing.length)
173
+ return false;
174
+ this.pinnedMessages.set(jid, filtered);
175
+ return true;
176
+ }
177
+ /**
178
+ * Get pinned messages for a chat
179
+ */
180
+ getPinned(jid) {
181
+ return this.pinnedMessages.get(jid) || [];
182
+ }
183
+ /**
184
+ * Check if message is pinned
185
+ */
186
+ isPinned(jid, messageId) {
187
+ const existing = this.pinnedMessages.get(jid) || [];
188
+ return existing.some(p => p.messageId === messageId);
189
+ }
190
+ /**
191
+ * Clear all pins for a chat
192
+ */
193
+ clearPins(jid) {
194
+ this.pinnedMessages.delete(jid);
195
+ }
196
+ /**
197
+ * Clear expired pins
198
+ */
199
+ clearExpired() {
200
+ let cleared = 0;
201
+ const now = Date.now();
202
+ for (const [jid, pins] of this.pinnedMessages) {
203
+ const valid = pins.filter(p => !p.expiresAt || p.expiresAt.getTime() > now);
204
+ if (valid.length < pins.length) {
205
+ cleared += pins.length - valid.length;
206
+ this.pinnedMessages.set(jid, valid);
207
+ }
208
+ }
209
+ return cleared;
210
+ }
211
+ }
212
+ /**
213
+ * Create typing indicator helper
214
+ */
215
+ export const createTypingIndicator = (sendPresence) => {
216
+ return new TypingIndicator(sendPresence);
217
+ };
218
+ /**
219
+ * Create pinned messages manager
220
+ */
221
+ export const createPinnedMessagesManager = () => {
222
+ return new PinnedMessagesManager();
223
+ };
224
+ //# sourceMappingURL=chat-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-control.js","sourceRoot":"","sources":["../../src/Utils/chat-control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Baileys-Joss: Chat Export
3
+ *
4
+ * Export chat ke JSON, HTML, atau TXT
5
+ */
6
+ import type { WAMessage } from '../Types/index.js';
7
+ export type ExportFormat = 'json' | 'html' | 'txt' | 'csv';
8
+ export interface ExportOptions {
9
+ /** Export format */
10
+ format: ExportFormat;
11
+ /** Include media info (not actual media) */
12
+ includeMediaInfo?: boolean;
13
+ /** Include message metadata */
14
+ includeMetadata?: boolean;
15
+ /** Date format string */
16
+ dateFormat?: string;
17
+ /** Title for HTML export */
18
+ title?: string;
19
+ /** Custom CSS for HTML export */
20
+ customCss?: string;
21
+ /** Filter messages by date range */
22
+ dateRange?: {
23
+ start: Date;
24
+ end: Date;
25
+ };
26
+ /** Filter by sender */
27
+ fromSender?: string;
28
+ /** Only messages from me */
29
+ fromMe?: boolean;
30
+ }
31
+ export interface ExportResult {
32
+ content: string;
33
+ format: ExportFormat;
34
+ messageCount: number;
35
+ exportedAt: Date;
36
+ filename: string;
37
+ }
38
+ /**
39
+ * Export chat messages
40
+ */
41
+ export declare const exportChat: (messages: WAMessage[], jid: string, options: ExportOptions) => ExportResult;
42
+ /**
43
+ * Chat Export Manager
44
+ */
45
+ export declare class ChatExporter {
46
+ private messages;
47
+ /**
48
+ * Add messages for export
49
+ */
50
+ addMessages(jid: string, messages: WAMessage[]): void;
51
+ /**
52
+ * Export a specific chat
53
+ */
54
+ export(jid: string, options: ExportOptions): ExportResult | null;
55
+ /**
56
+ * Export all chats
57
+ */
58
+ exportAll(options: ExportOptions): ExportResult[];
59
+ /**
60
+ * Get available chats for export
61
+ */
62
+ getAvailableChats(): Array<{
63
+ jid: string;
64
+ messageCount: number;
65
+ }>;
66
+ /**
67
+ * Clear messages
68
+ */
69
+ clear(jid?: string): void;
70
+ }
71
+ /**
72
+ * Create chat exporter
73
+ */
74
+ export declare const createChatExporter: () => ChatExporter;
75
+ //# sourceMappingURL=chat-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-export.d.ts","sourceRoot":"","sources":["../../src/Utils/chat-export.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;AAE1D,MAAM,WAAW,aAAa;IAC7B,oBAAoB;IACpB,MAAM,EAAE,YAAY,CAAA;IACpB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,+BAA+B;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oCAAoC;IACpC,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,CAAA;IACtC,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,IAAI,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CAChB;AAmOD;;GAEG;AACH,eAAO,MAAM,UAAU,GACtB,UAAU,SAAS,EAAE,EACrB,KAAK,MAAM,EACX,SAAS,aAAa,KACpB,YA+BF,CAAA;AAED;;GAEG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAsC;IAEtD;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI;IAKrD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY,GAAG,IAAI;IAMhE;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,EAAE;IAQjD;;OAEG;IACH,iBAAiB,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAOjE;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;CAOzB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,YAErC,CAAA"}