@queenanya/baileys 9.5.2 → 9.5.3-beta.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 (154) hide show
  1. package/README.md +614 -0
  2. package/lib/Defaults/index.d.ts +5 -0
  3. package/lib/Defaults/index.d.ts.map +1 -1
  4. package/lib/Defaults/index.js +32 -3
  5. package/lib/Defaults/index.js.map +1 -1
  6. package/lib/Socket/business.d.ts +35 -2
  7. package/lib/Socket/business.d.ts.map +1 -1
  8. package/lib/Socket/chats.d.ts +3 -1
  9. package/lib/Socket/chats.d.ts.map +1 -1
  10. package/lib/Socket/chats.js +49 -4
  11. package/lib/Socket/chats.js.map +1 -1
  12. package/lib/Socket/communities.d.ts +35 -2
  13. package/lib/Socket/communities.d.ts.map +1 -1
  14. package/lib/Socket/groups.d.ts +1 -0
  15. package/lib/Socket/groups.d.ts.map +1 -1
  16. package/lib/Socket/index.d.ts +35 -2
  17. package/lib/Socket/index.d.ts.map +1 -1
  18. package/lib/Socket/messages-recv.d.ts +36 -3
  19. package/lib/Socket/messages-recv.d.ts.map +1 -1
  20. package/lib/Socket/messages-recv.js +61 -44
  21. package/lib/Socket/messages-recv.js.map +1 -1
  22. package/lib/Socket/messages-send.d.ts +11 -5
  23. package/lib/Socket/messages-send.d.ts.map +1 -1
  24. package/lib/Socket/messages-send.js +110 -78
  25. package/lib/Socket/messages-send.js.map +1 -1
  26. package/lib/Socket/newsletter.d.ts +1 -0
  27. package/lib/Socket/newsletter.d.ts.map +1 -1
  28. package/lib/Socket/newsletter.js +2 -2
  29. package/lib/Socket/newsletter.js.map +1 -1
  30. package/lib/Socket/socket.d.ts.map +1 -1
  31. package/lib/Socket/socket.js +77 -11
  32. package/lib/Socket/socket.js.map +1 -1
  33. package/lib/Types/Call.d.ts +8 -0
  34. package/lib/Types/Call.d.ts.map +1 -1
  35. package/lib/Types/Events.d.ts +2 -0
  36. package/lib/Types/Events.d.ts.map +1 -1
  37. package/lib/Types/Message.d.ts +161 -12
  38. package/lib/Types/Message.d.ts.map +1 -1
  39. package/lib/Types/index.d.ts +9 -0
  40. package/lib/Types/index.d.ts.map +1 -1
  41. package/lib/Types/index.js.map +1 -1
  42. package/lib/Utils/browser-utils.d.ts +13 -0
  43. package/lib/Utils/browser-utils.d.ts.map +1 -1
  44. package/lib/Utils/browser-utils.js +90 -10
  45. package/lib/Utils/browser-utils.js.map +1 -1
  46. package/lib/Utils/event-buffer.js +8 -1
  47. package/lib/Utils/event-buffer.js.map +1 -1
  48. package/lib/Utils/history.d.ts +2 -0
  49. package/lib/Utils/history.d.ts.map +1 -1
  50. package/lib/Utils/history.js +2 -1
  51. package/lib/Utils/history.js.map +1 -1
  52. package/lib/Utils/index.d.ts +2 -0
  53. package/lib/Utils/index.d.ts.map +1 -1
  54. package/lib/Utils/index.js +2 -0
  55. package/lib/Utils/index.js.map +1 -1
  56. package/lib/Utils/interactive-message.d.ts +201 -0
  57. package/lib/Utils/interactive-message.d.ts.map +1 -0
  58. package/lib/Utils/interactive-message.js +256 -0
  59. package/lib/Utils/interactive-message.js.map +1 -0
  60. package/lib/Utils/messages-media.d.ts +16 -2
  61. package/lib/Utils/messages-media.d.ts.map +1 -1
  62. package/lib/Utils/messages-media.js +19 -10
  63. package/lib/Utils/messages-media.js.map +1 -1
  64. package/lib/Utils/messages.d.ts.map +1 -1
  65. package/lib/Utils/messages.js +408 -11
  66. package/lib/Utils/messages.js.map +1 -1
  67. package/lib/Utils/offline-node-processor.d.ts +17 -0
  68. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  69. package/lib/Utils/offline-node-processor.js +40 -0
  70. package/lib/Utils/offline-node-processor.js.map +1 -0
  71. package/lib/Utils/stanza-ack.d.ts +11 -0
  72. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  73. package/lib/Utils/stanza-ack.js +38 -0
  74. package/lib/Utils/stanza-ack.js.map +1 -0
  75. package/lib/Utils/use-mongo-file-auth-state.d.ts +16 -0
  76. package/lib/Utils/use-mongo-file-auth-state.d.ts.map +1 -0
  77. package/lib/Utils/use-mongo-file-auth-state.js +60 -0
  78. package/lib/Utils/use-mongo-file-auth-state.js.map +1 -0
  79. package/lib/Utils/validate-connection.d.ts.map +1 -1
  80. package/lib/Utils/validate-connection.js +15 -2
  81. package/lib/Utils/validate-connection.js.map +1 -1
  82. package/lib/WABinary/generic-utils.d.ts +9 -0
  83. package/lib/WABinary/generic-utils.d.ts.map +1 -1
  84. package/lib/WABinary/generic-utils.js +23 -0
  85. package/lib/WABinary/generic-utils.js.map +1 -1
  86. package/lib/addons/anti-delete.d.ts +72 -0
  87. package/lib/addons/anti-delete.d.ts.map +1 -0
  88. package/lib/addons/anti-delete.js +165 -0
  89. package/lib/addons/anti-delete.js.map +1 -0
  90. package/lib/addons/auto-reply.d.ts +67 -0
  91. package/lib/addons/auto-reply.d.ts.map +1 -0
  92. package/lib/addons/auto-reply.js +145 -0
  93. package/lib/addons/auto-reply.js.map +1 -0
  94. package/lib/addons/chat-control.d.ts +57 -0
  95. package/lib/addons/chat-control.d.ts.map +1 -0
  96. package/lib/addons/chat-control.js +128 -0
  97. package/lib/addons/chat-control.js.map +1 -0
  98. package/lib/addons/from-chats.d.ts +30 -0
  99. package/lib/addons/from-chats.d.ts.map +1 -0
  100. package/lib/addons/from-chats.js +38 -0
  101. package/lib/addons/from-chats.js.map +1 -0
  102. package/lib/addons/from-messages-recv.d.ts +59 -0
  103. package/lib/addons/from-messages-recv.d.ts.map +1 -0
  104. package/lib/addons/from-messages-recv.js +326 -0
  105. package/lib/addons/from-messages-recv.js.map +1 -0
  106. package/lib/addons/from-messages-send.d.ts +50 -0
  107. package/lib/addons/from-messages-send.d.ts.map +1 -0
  108. package/lib/addons/from-messages-send.js +148 -0
  109. package/lib/addons/from-messages-send.js.map +1 -0
  110. package/lib/addons/from-messages.d.ts +52 -0
  111. package/lib/addons/from-messages.d.ts.map +1 -0
  112. package/lib/addons/from-messages.js +305 -0
  113. package/lib/addons/from-messages.js.map +1 -0
  114. package/lib/addons/index.d.ts +28 -0
  115. package/lib/addons/index.d.ts.map +1 -0
  116. package/lib/addons/index.js +44 -0
  117. package/lib/addons/index.js.map +1 -0
  118. package/lib/addons/interactive-message.d.ts +201 -0
  119. package/lib/addons/interactive-message.d.ts.map +1 -0
  120. package/lib/addons/interactive-message.js +256 -0
  121. package/lib/addons/interactive-message.js.map +1 -0
  122. package/lib/addons/jid-plotting.d.ts +53 -0
  123. package/lib/addons/jid-plotting.d.ts.map +1 -0
  124. package/lib/addons/jid-plotting.js +150 -0
  125. package/lib/addons/jid-plotting.js.map +1 -0
  126. package/lib/addons/message-search.d.ts +38 -0
  127. package/lib/addons/message-search.d.ts.map +1 -0
  128. package/lib/addons/message-search.js +171 -0
  129. package/lib/addons/message-search.js.map +1 -0
  130. package/lib/addons/message-utils.d.ts +14 -0
  131. package/lib/addons/message-utils.d.ts.map +1 -0
  132. package/lib/addons/message-utils.js +174 -0
  133. package/lib/addons/message-utils.js.map +1 -0
  134. package/lib/addons/scheduling.d.ts +40 -0
  135. package/lib/addons/scheduling.d.ts.map +1 -0
  136. package/lib/addons/scheduling.js +110 -0
  137. package/lib/addons/scheduling.js.map +1 -0
  138. package/lib/addons/status-posting.d.ts +120 -0
  139. package/lib/addons/status-posting.d.ts.map +1 -0
  140. package/lib/addons/status-posting.js +94 -0
  141. package/lib/addons/status-posting.js.map +1 -0
  142. package/lib/addons/templates.d.ts +72 -0
  143. package/lib/addons/templates.d.ts.map +1 -0
  144. package/lib/addons/templates.js +145 -0
  145. package/lib/addons/templates.js.map +1 -0
  146. package/lib/addons/vcard.d.ts +57 -0
  147. package/lib/addons/vcard.d.ts.map +1 -0
  148. package/lib/addons/vcard.js +88 -0
  149. package/lib/addons/vcard.js.map +1 -0
  150. package/lib/index.d.ts +1 -0
  151. package/lib/index.d.ts.map +1 -1
  152. package/lib/index.js +1 -0
  153. package/lib/index.js.map +1 -1
  154. package/package.json +2 -1
@@ -0,0 +1,128 @@
1
+ export const DISAPPEARING_DURATIONS = {
2
+ OFF: 0,
3
+ HOURS_24: 86400,
4
+ DAYS_7: 604800,
5
+ DAYS_90: 7776000
6
+ };
7
+ export class TypingIndicator {
8
+ constructor(sendPresence) {
9
+ this.intervals = new Map();
10
+ this.sendPresence = sendPresence;
11
+ }
12
+ async startTyping(jid, options = {}) {
13
+ this.stopTyping(jid);
14
+ await this.sendPresence(jid, 'composing');
15
+ if (options.autoPause !== false && options.duration) {
16
+ const t = setTimeout(() => this.stopTyping(jid), options.duration);
17
+ this.intervals.set(jid, t);
18
+ }
19
+ }
20
+ async startRecording(jid, options = {}) {
21
+ this.stopTyping(jid);
22
+ await this.sendPresence(jid, 'recording');
23
+ if (options.autoPause !== false && options.duration) {
24
+ const t = setTimeout(() => this.stopTyping(jid), options.duration);
25
+ this.intervals.set(jid, t);
26
+ }
27
+ }
28
+ async stopTyping(jid) {
29
+ const existing = this.intervals.get(jid);
30
+ if (existing) {
31
+ clearTimeout(existing);
32
+ this.intervals.delete(jid);
33
+ }
34
+ try {
35
+ await this.sendPresence(jid, 'paused');
36
+ }
37
+ catch { }
38
+ }
39
+ async stopAll() {
40
+ for (const [jid] of this.intervals)
41
+ await this.stopTyping(jid);
42
+ }
43
+ async simulateTyping(jid, duration, callback) {
44
+ await this.startTyping(jid);
45
+ await new Promise(r => setTimeout(r, duration));
46
+ await this.stopTyping(jid);
47
+ return callback();
48
+ }
49
+ }
50
+ export class PinnedMessagesManager {
51
+ constructor() {
52
+ this.pinnedMessages = new Map();
53
+ }
54
+ pin(jid, messageId, pinnedBy, expiresAt) {
55
+ const pinned = { messageId, jid, pinnedAt: new Date(), pinnedBy, expiresAt };
56
+ const existing = this.pinnedMessages.get(jid) || [];
57
+ const filtered = existing.filter(p => p.messageId !== messageId);
58
+ filtered.push(pinned);
59
+ this.pinnedMessages.set(jid, filtered);
60
+ return pinned;
61
+ }
62
+ unpin(jid, messageId) {
63
+ const existing = this.pinnedMessages.get(jid);
64
+ if (!existing)
65
+ return false;
66
+ const filtered = existing.filter(p => p.messageId !== messageId);
67
+ if (filtered.length === existing.length)
68
+ return false;
69
+ this.pinnedMessages.set(jid, filtered);
70
+ return true;
71
+ }
72
+ getPinned(jid) {
73
+ return this.pinnedMessages.get(jid) || [];
74
+ }
75
+ isPinned(jid, messageId) {
76
+ return this.getPinned(jid).some(p => p.messageId === messageId);
77
+ }
78
+ clearPins(jid) {
79
+ this.pinnedMessages.delete(jid);
80
+ }
81
+ clearExpired() {
82
+ let cleared = 0;
83
+ const now = Date.now();
84
+ for (const [jid, pins] of this.pinnedMessages) {
85
+ const valid = pins.filter(p => !p.expiresAt || p.expiresAt.getTime() > now);
86
+ if (valid.length < pins.length) {
87
+ cleared += pins.length - valid.length;
88
+ this.pinnedMessages.set(jid, valid);
89
+ }
90
+ }
91
+ return cleared;
92
+ }
93
+ }
94
+ export const createTypingIndicator = (sendPresence) => new TypingIndicator(sendPresence);
95
+ export const createPinnedMessagesManager = () => new PinnedMessagesManager();
96
+ export const createReadReceiptController = (sendReadReceipt, config = { enabled: true }) => {
97
+ let currentConfig = { ...config };
98
+ return {
99
+ setConfig(c) {
100
+ currentConfig = { ...currentConfig, ...c };
101
+ },
102
+ getConfig() {
103
+ return { ...currentConfig };
104
+ },
105
+ enable() {
106
+ currentConfig.enabled = true;
107
+ },
108
+ disable() {
109
+ currentConfig.enabled = false;
110
+ },
111
+ isEnabled() {
112
+ return currentConfig.enabled;
113
+ },
114
+ async markRead(jid, participant, messageIds) {
115
+ if (!currentConfig.enabled)
116
+ return;
117
+ if (currentConfig.excludeJids?.includes(jid))
118
+ return;
119
+ if (currentConfig.readDelay)
120
+ await new Promise(r => setTimeout(r, currentConfig.readDelay));
121
+ await sendReadReceipt(jid, participant, messageIds);
122
+ },
123
+ async forceMarkRead(jid, participant, messageIds) {
124
+ await sendReadReceipt(jid, participant, messageIds);
125
+ }
126
+ };
127
+ };
128
+ //# sourceMappingURL=chat-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-control.js","sourceRoot":"","sources":["../../src/addons/chat-control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * from-chats.ts
3
+ * Source: src/Socket/chats.ts
4
+ *
5
+ * Chat modification helpers ported from baileys.
6
+ * These are imported back into makeChatsSocket.
7
+ */
8
+ import Long from 'long';
9
+ import type { WAMessageKey, ChatModification } from '../Types/index.js';
10
+ /**
11
+ * Build the ChatModification object for clearing/deleting a message (for me)
12
+ * Source: chats.ts → clearMessage
13
+ *
14
+ * @example
15
+ * const mod = buildClearMessageModification(key, timestamp)
16
+ * chatModify(mod, jid)
17
+ */
18
+ export declare function buildClearMessageModification(key: WAMessageKey, timeStamp: number | Long): ChatModification;
19
+ /**
20
+ * Factory: creates clearMessage bound to chatModify
21
+ * Source: chats.ts → clearMessage
22
+ *
23
+ * @example
24
+ * const { clearMessage } = createChatHelpers(chatModify)
25
+ * await clearMessage(jid, key, timestamp)
26
+ */
27
+ export declare function createChatHelpers(chatModify: (mod: ChatModification, jid: string) => Promise<any>): {
28
+ clearMessage: (jid: string, key: WAMessageKey, timeStamp: number | Long) => Promise<any>;
29
+ };
30
+ //# sourceMappingURL=from-chats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-chats.d.ts","sourceRoot":"","sources":["../../src/addons/from-chats.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE9D;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAK3G;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC;wBAE5E,MAAM,OAAO,YAAY,aAAa,MAAM,GAAG,IAAI;EAIxE"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * from-chats.ts
3
+ * Source: src/Socket/chats.ts
4
+ *
5
+ * Chat modification helpers ported from baileys.
6
+ * These are imported back into makeChatsSocket.
7
+ */
8
+ import Long from 'long';
9
+ /**
10
+ * Build the ChatModification object for clearing/deleting a message (for me)
11
+ * Source: chats.ts → clearMessage
12
+ *
13
+ * @example
14
+ * const mod = buildClearMessageModification(key, timestamp)
15
+ * chatModify(mod, jid)
16
+ */
17
+ export function buildClearMessageModification(key, timeStamp) {
18
+ return {
19
+ delete: true,
20
+ lastMessages: [{ key, messageTimestamp: timeStamp }]
21
+ };
22
+ }
23
+ /**
24
+ * Factory: creates clearMessage bound to chatModify
25
+ * Source: chats.ts → clearMessage
26
+ *
27
+ * @example
28
+ * const { clearMessage } = createChatHelpers(chatModify)
29
+ * await clearMessage(jid, key, timestamp)
30
+ */
31
+ export function createChatHelpers(chatModify) {
32
+ return {
33
+ clearMessage: (jid, key, timeStamp) => {
34
+ return chatModify(buildClearMessageModification(key, timeStamp), jid);
35
+ }
36
+ };
37
+ }
38
+ //# sourceMappingURL=from-chats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-chats.js","sourceRoot":"","sources":["../../src/addons/from-chats.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAAC,GAAiB,EAAE,SAAwB;IACxF,OAAO;QACN,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;KACpD,CAAA;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAgE;IACjG,OAAO;QACN,YAAY,EAAE,CAAC,GAAW,EAAE,GAAiB,EAAE,SAAwB,EAAE,EAAE;YAC1E,OAAO,UAAU,CAAC,6BAA6B,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAAA;QACtE,CAAC;KACD,CAAA;AACF,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * from-messages-recv.ts
3
+ * Source: addons/baileys + WhiskeySockets/Baileys + PR #2375
4
+ *
5
+ * All call functions as a factory — makeCallHandlers(deps) injects
6
+ * socket-bound dependencies and returns all call functions ready to use.
7
+ */
8
+ import type { BinaryNode } from '../WABinary/index.js';
9
+ import type { WAInitiateCallOptions, WAInitiateCallResult } from '../Types/index.js';
10
+ export type CallHandlerDeps = {
11
+ authState: any;
12
+ query: (node: BinaryNode) => Promise<any>;
13
+ sendNode: (node: BinaryNode) => Promise<void>;
14
+ generateMessageTag: () => string;
15
+ getUSyncDevices: (jids: string[], useCache: boolean, ignoreZeroDevices: boolean) => Promise<Array<{
16
+ user: string;
17
+ device?: number;
18
+ }>>;
19
+ assertSessions: (jids: string[], force?: boolean) => Promise<any>;
20
+ createParticipantNodes: (jids: string[], message: any, extraAttrs?: any) => Promise<{
21
+ nodes: BinaryNode[];
22
+ shouldIncludeDeviceIdentity: boolean;
23
+ }>;
24
+ callOfferCache: {
25
+ set: (k: string, v: any, ttl?: number) => any;
26
+ del: (k: string) => any;
27
+ };
28
+ };
29
+ export declare function makeCallHandlers(deps: CallHandlerDeps): {
30
+ rejectCall: (callId: string, callFrom: string) => Promise<void>;
31
+ offerCall: (toJid: string, isVideo?: boolean) => Promise<{
32
+ id: string;
33
+ to: string;
34
+ }>;
35
+ initiateCall: (jid: string, options?: WAInitiateCallOptions) => Promise<WAInitiateCallResult>;
36
+ terminateCall: (callId: string, callTo: string, callCreator?: string, reason?: string, duration?: number) => Promise<void>;
37
+ cancelCall: (callId: string, callTo: string) => Promise<void>;
38
+ acceptCall: (callId: string, callFrom: string, isVideo?: boolean) => Promise<void>;
39
+ preacceptCall: (callId: string, callCreator: string, isVideo?: boolean) => Promise<void>;
40
+ sendRelayLatency: (callId: string, callCreator: string, relays: Array<{
41
+ relayName?: string;
42
+ latency: number;
43
+ relayId?: string;
44
+ dlBw?: number;
45
+ ulBw?: number;
46
+ }>, transactionId?: string) => Promise<void>;
47
+ sendTransport: (callId: string, callCreator: string, to: string, candidates: Array<{
48
+ priority: string;
49
+ data: Uint8Array;
50
+ }>, round?: number) => Promise<void>;
51
+ sendCallDuration: (callId: string, callCreator: string, peer: string, audioDuration: number, callType?: string) => Promise<void>;
52
+ muteCall: (callId: string, callCreator: string, to: string, muted: boolean) => Promise<void>;
53
+ sendHeartbeat: (callId: string, callCreator: string) => Promise<void>;
54
+ sendEncRekey: (callId: string, callCreator: string, to: string, transactionId: string) => Promise<void>;
55
+ sendVideoState: (callId: string, callCreator: string, to: string, enabled: boolean, orientation?: string) => Promise<void>;
56
+ queryCallLink: (token: string, media?: string) => Promise<any>;
57
+ joinCallLink: (token: string, media?: string) => Promise<any>;
58
+ };
59
+ //# sourceMappingURL=from-messages-recv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-messages-recv.d.ts","sourceRoot":"","sources":["../../src/addons/from-messages-recv.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,OAAO,KAAK,EAAe,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAExF,MAAM,MAAM,eAAe,GAAG;IAC7B,SAAS,EAAE,GAAG,CAAA;IACd,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,MAAM,CAAA;IAChC,eAAe,EAAE,CAChB,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,EAAE,OAAO,EACjB,iBAAiB,EAAE,OAAO,KACtB,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IACtD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACjE,sBAAsB,EAAE,CACvB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,GAAG,EACZ,UAAU,CAAC,EAAE,GAAG,KACZ,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,2BAA2B,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAC3E,cAAc,EAAE;QAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;QAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,GAAG,CAAA;KAAE,CAAA;CAC1F,CAAA;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe;yBAanB,MAAM,YAAY,MAAM;uBAe1B,MAAM;;;;wBA4DL,MAAM,YAAW,qBAAqB,KAAQ,OAAO,CAAC,oBAAoB,CAAC;4BA0BnG,MAAM,UACN,MAAM,gBACA,MAAM,WACX,MAAM,aACJ,MAAM;yBAqBgB,MAAM,UAAU,MAAM;yBAGtB,MAAM,YAAY,MAAM,YAAY,OAAO;4BAkBxC,MAAM,eAAe,MAAM,YAAY,OAAO;+BAsB1E,MAAM,eACD,MAAM,UACX,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,kBACtF,MAAM;4BA4Bd,MAAM,eACD,MAAM,MACf,MAAM,cACE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,UACjD,MAAM;+BAuBN,MAAM,eACD,MAAM,QACb,MAAM,iBACG,MAAM;uBAuBU,MAAM,eAAe,MAAM,MAAM,MAAM,SAAS,OAAO;4BAelD,MAAM,eAAe,MAAM;2BAS5B,MAAM,eAAe,MAAM,MAAM,MAAM,iBAAiB,MAAM;6BAmBzF,MAAM,eACD,MAAM,MACf,MAAM,WACD,OAAO;2BAsBmB,MAAM;0BASP,MAAM;EAsCzC"}
@@ -0,0 +1,326 @@
1
+ /**
2
+ * from-messages-recv.ts
3
+ * Source: addons/baileys + WhiskeySockets/Baileys + PR #2375
4
+ *
5
+ * All call functions as a factory — makeCallHandlers(deps) injects
6
+ * socket-bound dependencies and returns all call functions ready to use.
7
+ */
8
+ import { Boom } from '@hapi/boom';
9
+ import { randomBytes } from 'crypto';
10
+ import { encodeSignedDeviceIdentity } from '../Utils/index.js';
11
+ import { isJidGroup, jidEncode } from '../WABinary/index.js';
12
+ export function makeCallHandlers(deps) {
13
+ const { authState, query, sendNode, generateMessageTag, getUSyncDevices, assertSessions, createParticipantNodes, callOfferCache } = deps;
14
+ /** Reject an incoming call (WhiskeySockets) */
15
+ const rejectCall = async (callId, callFrom) => {
16
+ await query({
17
+ tag: 'call',
18
+ attrs: { from: authState.creds.me.id, to: callFrom },
19
+ content: [
20
+ {
21
+ tag: 'reject',
22
+ attrs: { 'call-id': callId, 'call-creator': callFrom, count: '0' },
23
+ content: undefined
24
+ }
25
+ ]
26
+ });
27
+ };
28
+ /** Build and send a call offer stanza with proper E2E encryption (baileys) */
29
+ const offerCall = async (toJid, isVideo = false) => {
30
+ const callId = randomBytes(16).toString('hex').toUpperCase().substring(0, 64);
31
+ const offerContent = [];
32
+ if (isVideo) {
33
+ offerContent.push({
34
+ tag: 'video',
35
+ attrs: {
36
+ enc: 'vp8',
37
+ dec: 'vp8',
38
+ orientation: '0',
39
+ screen_width: '1920',
40
+ screen_height: '1080',
41
+ device_orientation: '0'
42
+ },
43
+ content: undefined
44
+ });
45
+ }
46
+ offerContent.push({ tag: 'audio', attrs: { enc: 'opus', rate: '16000' }, content: undefined });
47
+ offerContent.push({ tag: 'audio', attrs: { enc: 'opus', rate: '8000' }, content: undefined });
48
+ offerContent.push({ tag: 'net', attrs: { medium: '3' }, content: undefined });
49
+ offerContent.push({ tag: 'capability', attrs: { ver: '1' }, content: new Uint8Array([1, 4, 255, 131, 207, 4]) });
50
+ offerContent.push({ tag: 'encopt', attrs: { keygen: '2' }, content: undefined });
51
+ const encKey = randomBytes(32);
52
+ const devices = (await getUSyncDevices([toJid], true, false)).map(({ user, device }) => jidEncode(user, 's.whatsapp.net', device));
53
+ await assertSessions(devices, true);
54
+ const { nodes: destinations, shouldIncludeDeviceIdentity } = await createParticipantNodes(devices, { call: { callKey: new Uint8Array(encKey) } }, { count: '0' });
55
+ offerContent.push({ tag: 'destination', attrs: {}, content: destinations });
56
+ if (shouldIncludeDeviceIdentity) {
57
+ offerContent.push({
58
+ tag: 'device-identity',
59
+ attrs: {},
60
+ content: encodeSignedDeviceIdentity(authState.creds.account, true)
61
+ });
62
+ }
63
+ await query({
64
+ tag: 'call',
65
+ attrs: { id: generateMessageTag(), to: toJid },
66
+ content: [
67
+ {
68
+ tag: 'offer',
69
+ attrs: { 'call-id': callId, 'call-creator': authState.creds.me.id },
70
+ content: offerContent
71
+ }
72
+ ]
73
+ });
74
+ return { id: callId, to: toJid };
75
+ };
76
+ /** Initiate an outgoing call — calls offerCall, caches state (PR #2375 + addons) */
77
+ const initiateCall = async (jid, options = {}) => {
78
+ const meId = authState.creds.me?.id;
79
+ if (!meId)
80
+ throw new Boom('Not authenticated');
81
+ const isVideo = !!options.isVideo;
82
+ const isGroup = isJidGroup(jid);
83
+ const result = await offerCall(jid, isVideo);
84
+ const callId = result.id;
85
+ await callOfferCache.set(callId, {
86
+ chatId: jid,
87
+ from: meId,
88
+ id: callId,
89
+ date: new Date(),
90
+ offline: false,
91
+ status: 'offer',
92
+ isVideo,
93
+ isGroup,
94
+ groupJid: isGroup ? jid : undefined
95
+ });
96
+ return { callId, to: jid, isVideo };
97
+ };
98
+ /** Terminate/hang up an active or ringing call (baileys) */
99
+ const terminateCall = async (callId, callTo, callCreator, reason, duration) => {
100
+ const meId = authState.creds.me?.id;
101
+ if (!meId)
102
+ throw new Boom('Not authenticated', { statusCode: 401 });
103
+ const attrs = { 'call-id': callId, 'call-creator': callCreator || meId };
104
+ if (reason)
105
+ attrs.reason = reason;
106
+ if (typeof duration === 'number') {
107
+ attrs.duration = String(duration);
108
+ attrs.audio_duration = String(duration);
109
+ }
110
+ await query({
111
+ tag: 'call',
112
+ attrs: { to: callTo, id: randomBytes(16).toString('hex').toUpperCase() },
113
+ content: [{ tag: 'terminate', attrs, content: undefined }]
114
+ });
115
+ await callOfferCache.del(callId);
116
+ };
117
+ /** Cancel an outgoing call — delegates to terminateCall */
118
+ const cancelCall = async (callId, callTo) => terminateCall(callId, callTo);
119
+ /** Accept (answer) an incoming call (baileys) */
120
+ const acceptCall = async (callId, callFrom, isVideo) => {
121
+ const meId = authState.creds.me?.id;
122
+ if (!meId)
123
+ throw new Boom('Not authenticated', { statusCode: 401 });
124
+ const content = [{ tag: 'audio', attrs: { rate: '16000', enc: 'opus' }, content: undefined }];
125
+ if (isVideo)
126
+ content.push({ tag: 'video', attrs: { dec: 'H264,AV1', device_orientation: '1' }, content: undefined });
127
+ content.push({ tag: 'net', attrs: { medium: '2' }, content: undefined }, { tag: 'encopt', attrs: { keygen: '2' }, content: undefined });
128
+ await query({
129
+ tag: 'call',
130
+ attrs: { from: meId, to: callFrom, id: randomBytes(16).toString('hex').toUpperCase() },
131
+ content: [{ tag: 'accept', attrs: { 'call-id': callId, 'call-creator': callFrom }, content }]
132
+ });
133
+ };
134
+ /** Send preaccept signal (codec capabilities) for an incoming call (baileys) */
135
+ const preacceptCall = async (callId, callCreator, isVideo) => {
136
+ const content = [{ tag: 'audio', attrs: { rate: '16000', enc: 'opus' }, content: undefined }];
137
+ if (isVideo) {
138
+ content.push({
139
+ tag: 'video',
140
+ attrs: { screen_width: '1080', screen_height: '2400', dec: 'H264,H265,AV1', device_orientation: '0' },
141
+ content: undefined
142
+ });
143
+ }
144
+ content.push({ tag: 'encopt', attrs: { keygen: '2' }, content: undefined }, { tag: 'capability', attrs: { ver: '1' }, content: undefined });
145
+ await query({
146
+ tag: 'call',
147
+ attrs: { to: callCreator, id: randomBytes(16).toString('hex').toUpperCase() },
148
+ content: [{ tag: 'preaccept', attrs: { 'call-id': callId, 'call-creator': callCreator }, content }]
149
+ });
150
+ };
151
+ /** Report relay latency measurements (baileys) */
152
+ const sendRelayLatency = async (callId, callCreator, relays, transactionId) => {
153
+ const attrs = { 'call-id': callId, 'call-creator': callCreator };
154
+ if (transactionId)
155
+ attrs['transaction-id'] = transactionId;
156
+ await sendNode({
157
+ tag: 'call',
158
+ attrs: { to: callCreator, id: randomBytes(16).toString('hex').toUpperCase() },
159
+ content: [
160
+ {
161
+ tag: 'relaylatency',
162
+ attrs,
163
+ content: relays.map(r => {
164
+ const a = {};
165
+ if (r.relayName)
166
+ a.relay_name = r.relayName;
167
+ a.latency = String(r.latency);
168
+ if (r.relayId)
169
+ a.relay_id = r.relayId;
170
+ if (r.dlBw !== undefined)
171
+ a.dl_bw = String(r.dlBw);
172
+ if (r.ulBw !== undefined)
173
+ a.ul_bw = String(r.ulBw);
174
+ return { tag: 'te', attrs: a, content: undefined };
175
+ })
176
+ }
177
+ ]
178
+ });
179
+ };
180
+ /** Send ICE transport candidates (baileys) */
181
+ const sendTransport = async (callId, callCreator, to, candidates, round) => {
182
+ const attrs = {
183
+ 'call-id': callId,
184
+ 'call-creator': callCreator,
185
+ 'transport-message-type': '1'
186
+ };
187
+ if (round !== undefined)
188
+ attrs['p2p-cand-round'] = String(round);
189
+ await sendNode({
190
+ tag: 'call',
191
+ attrs: { to, id: randomBytes(16).toString('hex').toUpperCase() },
192
+ content: [
193
+ {
194
+ tag: 'transport',
195
+ attrs,
196
+ content: candidates.map(c => ({ tag: 'te', attrs: { priority: c.priority }, content: c.data }))
197
+ }
198
+ ]
199
+ });
200
+ };
201
+ /** Send call duration log after a call ends (baileys) */
202
+ const sendCallDuration = async (callId, callCreator, peer, audioDuration, callType = '1x1') => {
203
+ await sendNode({
204
+ tag: 'call',
205
+ attrs: { to: 'call', id: randomBytes(16).toString('hex').toUpperCase() },
206
+ content: [
207
+ {
208
+ tag: 'duration',
209
+ attrs: {
210
+ 'call-id': callId,
211
+ 'call-creator': callCreator,
212
+ peer,
213
+ audio_duration: String(audioDuration),
214
+ type: callType
215
+ },
216
+ content: undefined
217
+ }
218
+ ]
219
+ });
220
+ };
221
+ /** Mute or unmute during a call (baileys) */
222
+ const muteCall = async (callId, callCreator, to, muted) => {
223
+ await sendNode({
224
+ tag: 'call',
225
+ attrs: { to, id: randomBytes(16).toString('hex').toUpperCase() },
226
+ content: [
227
+ {
228
+ tag: 'mute_v2',
229
+ attrs: { 'mute-state': muted ? '1' : '0', 'call-id': callId, 'call-creator': callCreator },
230
+ content: undefined
231
+ }
232
+ ]
233
+ });
234
+ };
235
+ /** Send heartbeat to keep a group/link call alive (baileys) */
236
+ const sendHeartbeat = async (callId, callCreator) => {
237
+ await sendNode({
238
+ tag: 'call',
239
+ attrs: { to: `${callId}@call`, id: randomBytes(16).toString('hex').toUpperCase() },
240
+ content: [{ tag: 'heartbeat', attrs: { 'call-id': callId, 'call-creator': callCreator }, content: undefined }]
241
+ });
242
+ };
243
+ /** Send encryption re-key during a call (baileys) */
244
+ const sendEncRekey = async (callId, callCreator, to, transactionId) => {
245
+ await sendNode({
246
+ tag: 'call',
247
+ attrs: { to, id: randomBytes(16).toString('hex').toUpperCase() },
248
+ content: [
249
+ {
250
+ tag: 'enc_rekey',
251
+ attrs: { 'transaction-id': transactionId, 'call-id': callId, 'call-creator': callCreator },
252
+ content: [
253
+ { tag: 'encopt', attrs: { keygen: '2' }, content: undefined },
254
+ { tag: 'enc', attrs: { v: '2', type: 'msg' }, content: undefined }
255
+ ]
256
+ }
257
+ ]
258
+ });
259
+ };
260
+ /** Send video state change during a call (baileys) */
261
+ const sendVideoState = async (callId, callCreator, to, enabled, orientation = '1') => {
262
+ await sendNode({
263
+ tag: 'call',
264
+ attrs: { to, id: randomBytes(16).toString('hex').toUpperCase() },
265
+ content: [
266
+ {
267
+ tag: 'video',
268
+ attrs: {
269
+ 'call-id': callId,
270
+ 'call-creator': callCreator,
271
+ state: enabled ? '1' : '0',
272
+ device_orientation: orientation
273
+ },
274
+ content: undefined
275
+ }
276
+ ]
277
+ });
278
+ };
279
+ /** Query info about a call link before joining (baileys) */
280
+ const queryCallLink = async (token, media = 'video') => {
281
+ return await query({
282
+ tag: 'call',
283
+ attrs: { to: 'call', id: randomBytes(16).toString('hex').toUpperCase() },
284
+ content: [{ tag: 'link_query', attrs: { media, token }, content: undefined }]
285
+ });
286
+ };
287
+ /** Join a call via its link token (baileys) */
288
+ const joinCallLink = async (token, media = 'video') => {
289
+ const content = [
290
+ { tag: 'audio', attrs: { rate: '16000', enc: 'opus' }, content: undefined },
291
+ { tag: 'net', attrs: { medium: '2' }, content: undefined },
292
+ { tag: 'capability', attrs: { ver: '1' }, content: undefined }
293
+ ];
294
+ if (media === 'video') {
295
+ content.splice(1, 0, {
296
+ tag: 'video',
297
+ attrs: { screen_width: '1080', screen_height: '2400', dec: 'H264,H265,AV1', device_orientation: '0' },
298
+ content: undefined
299
+ });
300
+ }
301
+ return await query({
302
+ tag: 'call',
303
+ attrs: { to: 'call', id: randomBytes(16).toString('hex').toUpperCase() },
304
+ content: [{ tag: 'link_join', attrs: { media, token }, content }]
305
+ });
306
+ };
307
+ return {
308
+ rejectCall,
309
+ offerCall,
310
+ initiateCall,
311
+ terminateCall,
312
+ cancelCall,
313
+ acceptCall,
314
+ preacceptCall,
315
+ sendRelayLatency,
316
+ sendTransport,
317
+ sendCallDuration,
318
+ muteCall,
319
+ sendHeartbeat,
320
+ sendEncRekey,
321
+ sendVideoState,
322
+ queryCallLink,
323
+ joinCallLink
324
+ };
325
+ }
326
+ //# sourceMappingURL=from-messages-recv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-messages-recv.js","sourceRoot":"","sources":["../../src/addons/from-messages-recv.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAsBnD,MAAM,UAAU,gBAAgB,CAAC,IAAqB;IACrD,MAAM,EACL,SAAS,EACT,KAAK,EACL,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,GAAG,IAAI,CAAA;IAER,+CAA+C;IAC/C,MAAM,UAAU,GAAG,KAAK,EAAE,MAAc,EAAE,QAAgB,EAAE,EAAE;QAC7D,MAAM,KAAK,CAAC;YACX,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;YACrD,OAAO,EAAE;gBACR;oBACC,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAClE,OAAO,EAAE,SAAS;iBAClB;aACD;SACD,CAAC,CAAA;IACH,CAAC,CAAA;IAED,8EAA8E;IAC9E,MAAM,SAAS,GAAG,KAAK,EAAE,KAAa,EAAE,OAAO,GAAG,KAAK,EAAE,EAAE;QAC1D,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC7E,MAAM,YAAY,GAAiB,EAAE,CAAA;QAErC,IAAI,OAAO,EAAE,CAAC;YACb,YAAY,CAAC,IAAI,CAAC;gBACjB,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE;oBACN,GAAG,EAAE,KAAK;oBACV,GAAG,EAAE,KAAK;oBACV,WAAW,EAAE,GAAG;oBAChB,YAAY,EAAE,MAAM;oBACpB,aAAa,EAAE,MAAM;oBACrB,kBAAkB,EAAE,GAAG;iBACvB;gBACD,OAAO,EAAE,SAAS;aAClB,CAAC,CAAA;QACH,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;QAC9F,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7F,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7E,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAChH,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;QAEhF,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;QAC9B,MAAM,OAAO,GAAG,CAAC,MAAM,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CACtF,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,CACzC,CAAA;QACD,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAEnC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,2BAA2B,EAAE,GAAG,MAAM,sBAAsB,CACxF,OAAO,EACP,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAC7C,EAAE,KAAK,EAAE,GAAG,EAAE,CACd,CAAA;QACD,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAA;QAE3E,IAAI,2BAA2B,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC;gBACjB,GAAG,EAAE,iBAAiB;gBACtB,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,0BAA0B,CAAC,SAAS,CAAC,KAAK,CAAC,OAAQ,EAAE,IAAI,CAAC;aACnE,CAAC,CAAA;QACH,CAAC;QAED,MAAM,KAAK,CAAC;YACX,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;YAC9C,OAAO,EAAE;gBACR;oBACC,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,EAAG,CAAC,EAAE,EAAE;oBACpE,OAAO,EAAE,YAAY;iBACrB;aACD;SACD,CAAC,CAAA;QACF,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;IACjC,CAAC,CAAA;IAED,oFAAoF;IACpF,MAAM,YAAY,GAAG,KAAK,EAAE,GAAW,EAAE,UAAiC,EAAE,EAAiC,EAAE;QAC9G,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAA;QACnC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAE9C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;QACjC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;QAExB,MAAM,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE;YAChC,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,IAAI;YACV,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,IAAI,IAAI,EAAE;YAChB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,OAAO;YACf,OAAO;YACP,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;SACpB,CAAC,CAAA;QAEjB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;IACpC,CAAC,CAAA;IAED,4DAA4D;IAC5D,MAAM,aAAa,GAAG,KAAK,EAC1B,MAAc,EACd,MAAc,EACd,WAAoB,EACpB,MAAe,EACf,QAAiB,EAChB,EAAE;QACH,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAA;QACnC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAA;QAEnE,MAAM,KAAK,GAA2B,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,IAAI,IAAI,EAAE,CAAA;QAChG,IAAI,MAAM;YAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;QACjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;YACjC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QACxC,CAAC;QAED,MAAM,KAAK,CAAC;YACX,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YACxE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SAC1D,CAAC,CAAA;QACF,MAAM,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC,CAAA;IAED,2DAA2D;IAC3D,MAAM,UAAU,GAAG,KAAK,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE1F,iDAAiD;IACjD,MAAM,UAAU,GAAG,KAAK,EAAE,MAAc,EAAE,QAAgB,EAAE,OAAiB,EAAE,EAAE;QAChF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAA;QACnC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAA;QAEnE,MAAM,OAAO,GAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;QAC3G,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;QACpH,OAAO,CAAC,IAAI,CACX,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAC1D,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAC7D,CAAA;QACD,MAAM,KAAK,CAAC;YACX,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YACtF,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC;SAC7F,CAAC,CAAA;IACH,CAAC,CAAA;IAED,gFAAgF;IAChF,MAAM,aAAa,GAAG,KAAK,EAAE,MAAc,EAAE,WAAmB,EAAE,OAAiB,EAAE,EAAE;QACtF,MAAM,OAAO,GAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;QAC3G,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC;gBACZ,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,EAAE;gBACrG,OAAO,EAAE,SAAS;aAClB,CAAC,CAAA;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CACX,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAC7D,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAC9D,CAAA;QACD,MAAM,KAAK,CAAC;YACX,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAC7E,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC;SACnG,CAAC,CAAA;IACH,CAAC,CAAA;IAED,kDAAkD;IAClD,MAAM,gBAAgB,GAAG,KAAK,EAC7B,MAAc,EACd,WAAmB,EACnB,MAAsG,EACtG,aAAsB,EACrB,EAAE;QACH,MAAM,KAAK,GAA2B,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,CAAA;QACxF,IAAI,aAAa;YAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAA;QAE1D,MAAM,QAAQ,CAAC;YACd,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAC7E,OAAO,EAAE;gBACR;oBACC,GAAG,EAAE,cAAc;oBACnB,KAAK;oBACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;wBACvB,MAAM,CAAC,GAA2B,EAAE,CAAA;wBACpC,IAAI,CAAC,CAAC,SAAS;4BAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,CAAA;wBAC3C,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;wBAC7B,IAAI,CAAC,CAAC,OAAO;4BAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAA;wBACrC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;4BAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;wBAClD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;4BAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;wBAClD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;oBACnD,CAAC,CAAC;iBACF;aACD;SACD,CAAC,CAAA;IACH,CAAC,CAAA;IAED,8CAA8C;IAC9C,MAAM,aAAa,GAAG,KAAK,EAC1B,MAAc,EACd,WAAmB,EACnB,EAAU,EACV,UAAyD,EACzD,KAAc,EACb,EAAE;QACH,MAAM,KAAK,GAA2B;YACrC,SAAS,EAAE,MAAM;YACjB,cAAc,EAAE,WAAW;YAC3B,wBAAwB,EAAE,GAAG;SAC7B,CAAA;QACD,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAChE,MAAM,QAAQ,CAAC;YACd,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAChE,OAAO,EAAE;gBACR;oBACC,GAAG,EAAE,WAAW;oBAChB,KAAK;oBACL,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;iBAC/F;aACD;SACD,CAAC,CAAA;IACH,CAAC,CAAA;IAED,yDAAyD;IACzD,MAAM,gBAAgB,GAAG,KAAK,EAC7B,MAAc,EACd,WAAmB,EACnB,IAAY,EACZ,aAAqB,EACrB,QAAQ,GAAG,KAAK,EACf,EAAE;QACH,MAAM,QAAQ,CAAC;YACd,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YACxE,OAAO,EAAE;gBACR;oBACC,GAAG,EAAE,UAAU;oBACf,KAAK,EAAE;wBACN,SAAS,EAAE,MAAM;wBACjB,cAAc,EAAE,WAAW;wBAC3B,IAAI;wBACJ,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC;wBACrC,IAAI,EAAE,QAAQ;qBACd;oBACD,OAAO,EAAE,SAAS;iBAClB;aACD;SACD,CAAC,CAAA;IACH,CAAC,CAAA;IAED,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,WAAmB,EAAE,EAAU,EAAE,KAAc,EAAE,EAAE;QAC1F,MAAM,QAAQ,CAAC;YACd,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAChE,OAAO,EAAE;gBACR;oBACC,GAAG,EAAE,SAAS;oBACd,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE;oBAC1F,OAAO,EAAE,SAAS;iBAClB;aACD;SACD,CAAC,CAAA;IACH,CAAC,CAAA;IAED,+DAA+D;IAC/D,MAAM,aAAa,GAAG,KAAK,EAAE,MAAc,EAAE,WAAmB,EAAE,EAAE;QACnE,MAAM,QAAQ,CAAC;YACd,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,OAAO,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAClF,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SAC9G,CAAC,CAAA;IACH,CAAC,CAAA;IAED,qDAAqD;IACrD,MAAM,YAAY,GAAG,KAAK,EAAE,MAAc,EAAE,WAAmB,EAAE,EAAU,EAAE,aAAqB,EAAE,EAAE;QACrG,MAAM,QAAQ,CAAC;YACd,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAChE,OAAO,EAAE;gBACR;oBACC,GAAG,EAAE,WAAW;oBAChB,KAAK,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE;oBAC1F,OAAO,EAAE;wBACR,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;wBAC7D,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;qBAClE;iBACD;aACD;SACD,CAAC,CAAA;IACH,CAAC,CAAA;IAED,sDAAsD;IACtD,MAAM,cAAc,GAAG,KAAK,EAC3B,MAAc,EACd,WAAmB,EACnB,EAAU,EACV,OAAgB,EAChB,WAAW,GAAG,GAAG,EAChB,EAAE;QACH,MAAM,QAAQ,CAAC;YACd,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAChE,OAAO,EAAE;gBACR;oBACC,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE;wBACN,SAAS,EAAE,MAAM;wBACjB,cAAc,EAAE,WAAW;wBAC3B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;wBAC1B,kBAAkB,EAAE,WAAW;qBAC/B;oBACD,OAAO,EAAE,SAAS;iBAClB;aACD;SACD,CAAC,CAAA;IACH,CAAC,CAAA;IAED,4DAA4D;IAC5D,MAAM,aAAa,GAAG,KAAK,EAAE,KAAa,EAAE,KAAK,GAAG,OAAO,EAAE,EAAE;QAC9D,OAAO,MAAM,KAAK,CAAC;YAClB,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YACxE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SAC7E,CAAC,CAAA;IACH,CAAC,CAAA;IAED,+CAA+C;IAC/C,MAAM,YAAY,GAAG,KAAK,EAAE,KAAa,EAAE,KAAK,GAAG,OAAO,EAAE,EAAE;QAC7D,MAAM,OAAO,GAAiB;YAC7B,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAC3E,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAC1D,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;SAC9D,CAAA;QACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;gBACpB,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,EAAE;gBACrG,OAAO,EAAE,SAAS;aAClB,CAAC,CAAA;QACH,CAAC;QACD,OAAO,MAAM,KAAK,CAAC;YAClB,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YACxE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC;SACjE,CAAC,CAAA;IACH,CAAC,CAAA;IAED,OAAO;QACN,UAAU;QACV,SAAS;QACT,YAAY;QACZ,aAAa;QACb,UAAU;QACV,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,gBAAgB;QAChB,QAAQ;QACR,aAAa;QACb,YAAY;QACZ,cAAc;QACd,aAAa;QACb,YAAY;KACZ,CAAA;AACF,CAAC"}