node-ainzfb-new 1.6.2823-test → 1.6.2909-test

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 (56) hide show
  1. package/package.json +4 -4
  2. package/src/addExternalModule.js +13 -6
  3. package/src/addUserToGroup.js +35 -12
  4. package/src/changeAdminStatus.js +32 -16
  5. package/src/changeArchivedStatus.js +15 -9
  6. package/src/changeAvt.js +75 -69
  7. package/src/changeBio.js +12 -8
  8. package/src/changeBlockedStatus.js +14 -8
  9. package/src/changeGroupImage.js +27 -13
  10. package/src/changeNickname.js +19 -10
  11. package/src/changeThreadColor.js +15 -10
  12. package/src/changeThreadEmoji.js +17 -9
  13. package/src/createNewGroup.js +18 -10
  14. package/src/createPoll.js +16 -11
  15. package/src/deleteMessage.js +16 -10
  16. package/src/deleteThread.js +16 -10
  17. package/src/forwardAttachment.js +14 -9
  18. package/src/getAccessToken.js +21 -21
  19. package/src/getCurrentUserID.js +1 -1
  20. package/src/getEmojiUrl.js +3 -2
  21. package/src/getFriendsList.js +18 -10
  22. package/src/getMessage.js +52 -48
  23. package/src/getThreadHistory.js +156 -59
  24. package/src/getThreadHistoryDeprecated.js +26 -15
  25. package/src/getThreadInfo.js +3423 -18
  26. package/src/getThreadInfoDeprecated.js +25 -13
  27. package/src/getThreadList.js +112 -53
  28. package/src/getThreadListDeprecated.js +30 -12
  29. package/src/getThreadPictures.js +25 -13
  30. package/src/getUserID.js +7 -7
  31. package/src/getUserInfo.js +12 -9
  32. package/src/getUserInfoV2.js +19 -22
  33. package/src/handleFriendRequest.js +10 -9
  34. package/src/handleMessageRequest.js +16 -10
  35. package/src/httpGet.js +18 -13
  36. package/src/httpPost.js +18 -13
  37. package/src/httpPostFormData.js +14 -9
  38. package/src/listenMqtt.js +1218 -571
  39. package/src/logout.js +18 -13
  40. package/src/markAsDelivered.js +16 -10
  41. package/src/markAsRead.js +36 -24
  42. package/src/markAsReadAll.js +14 -10
  43. package/src/markAsSeen.js +18 -11
  44. package/src/muteThread.js +12 -8
  45. package/src/removeUserFromGroup.js +33 -10
  46. package/src/resolvePhotoUrl.js +8 -6
  47. package/src/searchForThread.js +13 -8
  48. package/src/sendMessage.js +172 -78
  49. package/src/sendTypingIndicator.js +29 -14
  50. package/src/setMessageReaction.js +13 -8
  51. package/src/setPostReaction.js +97 -95
  52. package/src/setTitle.js +18 -12
  53. package/src/threadColors.js +17 -17
  54. package/src/unfriend.js +14 -9
  55. package/src/unsendMessage.js +7 -7
  56. package/utils.js +2273 -1066
package/utils.js CHANGED
@@ -10,55 +10,61 @@ var querystring = require("querystring");
10
10
  var url = require("url");
11
11
 
12
12
  function setProxy(url) {
13
- if (typeof url == undefined) return request = bluebird.promisify(require("request").defaults({ jar: true }));
14
- return request = bluebird.promisify(require("request").defaults({ jar: true, proxy: url }));
13
+ if (typeof url == undefined)
14
+ return (request = bluebird.promisify(
15
+ require("request").defaults({ jar: true })
16
+ ));
17
+ return (request = bluebird.promisify(
18
+ require("request").defaults({ jar: true, proxy: url })
19
+ ));
15
20
  }
16
21
 
17
22
  function getHeaders(url, options, ctx, customHeader) {
18
- var headers = {
19
- "Content-Type": "application/x-www-form-urlencoded",
20
- Referer: "https://www.facebook.com/",
21
- Host: url.replace("https://", "").split("/")[0],
22
- Origin: "https://www.facebook.com",
23
- "User-Agent": options.userAgent,
24
- Connection: "keep-alive",
25
- //"sec-fetch-site": 'same-origin',
26
- //"sec-fetch-mode": 'cors'
27
- };
28
- if (customHeader) Object.assign(headers, customHeader);
29
-
30
- if (ctx && ctx.region) headers["X-MSGR-Region"] = ctx.region;
31
-
32
- return headers;
23
+ var headers = {
24
+ "Content-Type": "application/x-www-form-urlencoded",
25
+ Referer: "https://www.facebook.com/",
26
+ Host: url.replace("https://", "").split("/")[0],
27
+ Origin: "https://www.facebook.com",
28
+ "User-Agent": options.userAgent,
29
+ Connection: "keep-alive",
30
+ "sec-fetch-site": "same-origin",
31
+ "sec-fetch-mode": "cors"
32
+ };
33
+ if (customHeader) Object.assign(headers, customHeader);
34
+
35
+ if (ctx && ctx.region) headers["X-MSGR-Region"] = ctx.region;
36
+
37
+ return headers;
33
38
  }
34
39
 
35
40
  function isReadableStream(obj) {
36
- return (
37
- obj instanceof stream.Stream &&
38
- (getType(obj._read) === "Function" ||
39
- getType(obj._read) === "AsyncFunction") &&
40
- getType(obj._readableState) === "Object"
41
- );
41
+ return (
42
+ obj instanceof stream.Stream &&
43
+ (getType(obj._read) === "Function" ||
44
+ getType(obj._read) === "AsyncFunction") &&
45
+ getType(obj._readableState) === "Object"
46
+ );
42
47
  }
43
48
 
44
49
  function get(url, jar, qs, options, ctx) {
45
- // I'm still confused about this
46
- if (getType(qs) === "Object")
47
- for (var prop in qs)
48
- if (qs.hasOwnProperty(prop) && getType(qs[prop]) === "Object") qs[prop] = JSON.stringify(qs[prop]);
49
- var op = {
50
- headers: getHeaders(url, options, ctx),
51
- timeout: 60000,
52
- qs: qs,
53
- url: url,
54
- method: "GET",
55
- jar: jar,
56
- gzip: true
57
- };
58
-
59
- return request(op).then(function(res) {
60
- return res[0];
61
- });
50
+ // I'm still confused about this
51
+ if (getType(qs) === "Object")
52
+ for (var prop in qs)
53
+ if (qs.hasOwnProperty(prop) && getType(qs[prop]) === "Object")
54
+ qs[prop] = JSON.stringify(qs[prop]);
55
+ var op = {
56
+ headers: getHeaders(url, options, ctx),
57
+ timeout: 60000,
58
+ qs: qs,
59
+ url: url,
60
+ method: "GET",
61
+ jar: jar,
62
+ gzip: true
63
+ };
64
+
65
+ return request(op).then(function(res) {
66
+ return res[0];
67
+ });
62
68
  }
63
69
 
64
70
  /*function getv2(url, jar, qs, options, ctx) {
@@ -82,21 +88,21 @@ function get(url, jar, qs, options, ctx) {
82
88
  }*/
83
89
 
84
90
  function post(url, jar, form, options, ctx, customHeader) {
85
- let headers = getHeaders(url, options);
86
- headers['sec-fetch-site'] = 'same-origin';
87
- var op = {
88
- headers: headers,
89
- timeout: 60000,
90
- url: url,
91
- method: "POST",
92
- form: form,
93
- jar: jar,
94
- gzip: true
95
- };
96
-
97
- return request(op).then(function(res) {
98
- return res[0];
99
- });
91
+ let headers = getHeaders(url, options);
92
+ headers["sec-fetch-site"] = "same-origin";
93
+ var op = {
94
+ headers: headers,
95
+ timeout: 60000,
96
+ url: url,
97
+ method: "POST",
98
+ form: form,
99
+ jar: jar,
100
+ gzip: true
101
+ };
102
+
103
+ return request(op).then(function(res) {
104
+ return res[0];
105
+ });
100
106
  }
101
107
 
102
108
  /*function postv2(url, jar, form, options, ctx, customHeader) {
@@ -118,1166 +124,2367 @@ function post(url, jar, form, options, ctx, customHeader) {
118
124
  }*/
119
125
 
120
126
  function postFormData(url, jar, form, qs, options, ctx) {
121
- var headers = getHeaders(url, options, ctx);
122
- headers["Content-Type"] = "multipart/form-data";
123
- var op = {
124
- headers: headers,
125
- timeout: 60000,
126
- url: url,
127
- method: "POST",
128
- formData: form,
129
- qs: qs,
130
- jar: jar,
131
- gzip: true
132
- };
133
-
134
- return request(op).then(function(res) {
135
- return res[0];
136
- });
127
+ var headers = getHeaders(url, options, ctx);
128
+ headers["Content-Type"] = "multipart/form-data";
129
+ var op = {
130
+ headers: headers,
131
+ timeout: 60000,
132
+ url: url,
133
+ method: "POST",
134
+ formData: form,
135
+ qs: qs,
136
+ jar: jar,
137
+ gzip: true
138
+ };
139
+
140
+ return request(op).then(function(res) {
141
+ return res[0];
142
+ });
137
143
  }
138
144
 
139
145
  function padZeros(val, len) {
140
- val = String(val);
141
- len = len || 2;
142
- while (val.length < len) val = "0" + val;
143
- return val;
146
+ val = String(val);
147
+ len = len || 2;
148
+ while (val.length < len) val = "0" + val;
149
+ return val;
144
150
  }
145
151
 
146
152
  function generateThreadingID(clientID) {
147
- var k = Date.now();
148
- var l = Math.floor(Math.random() * 4294967295);
149
- var m = clientID;
150
- return "<" + k + ":" + l + "-" + m + "@mail.projektitan.com>";
153
+ var k = Date.now();
154
+ var l = Math.floor(Math.random() * 4294967295);
155
+ var m = clientID;
156
+ return "<" + k + ":" + l + "-" + m + "@mail.projektitan.com>";
151
157
  }
152
158
 
153
159
  function binaryToDecimal(data) {
154
- var ret = "";
155
- while (data !== "0") {
156
- var end = 0;
157
- var fullName = "";
158
- var i = 0;
159
- for (; i < data.length; i++) {
160
- end = 2 * end + parseInt(data[i], 10);
161
- if (end >= 10) {
162
- fullName += "1";
163
- end -= 10;
164
- } else fullName += "0";
165
- }
166
- ret = end.toString() + ret;
167
- data = fullName.slice(fullName.indexOf("1"));
160
+ var ret = "";
161
+ while (data !== "0") {
162
+ var end = 0;
163
+ var fullName = "";
164
+ var i = 0;
165
+ for (; i < data.length; i++) {
166
+ end = 2 * end + parseInt(data[i], 10);
167
+ if (end >= 10) {
168
+ fullName += "1";
169
+ end -= 10;
170
+ } else fullName += "0";
168
171
  }
169
- return ret;
172
+ ret = end.toString() + ret;
173
+ data = fullName.slice(fullName.indexOf("1"));
174
+ }
175
+ return ret;
170
176
  }
171
177
 
172
178
  function generateOfflineThreadingID() {
173
- var ret = Date.now();
174
- var value = Math.floor(Math.random() * 4294967295);
175
- var str = ("0000000000000000000000" + value.toString(2)).slice(-22);
176
- var msgs = ret.toString(2) + str;
177
- return binaryToDecimal(msgs);
179
+ var ret = Date.now();
180
+ var value = Math.floor(Math.random() * 4294967295);
181
+ var str = ("0000000000000000000000" + value.toString(2)).slice(-22);
182
+ var msgs = ret.toString(2) + str;
183
+ return binaryToDecimal(msgs);
178
184
  }
179
185
 
180
186
  var h;
181
187
  var i = {};
182
188
  var j = {
183
- _: "%",
184
- A: "%2",
185
- B: "000",
186
- C: "%7d",
187
- D: "%7b%22",
188
- E: "%2c%22",
189
- F: "%22%3a",
190
- G: "%2c%22ut%22%3a1",
191
- H: "%2c%22bls%22%3a",
192
- I: "%2c%22n%22%3a%22%",
193
- J: "%22%3a%7b%22i%22%3a0%7d",
194
- K: "%2c%22pt%22%3a0%2c%22vis%22%3a",
195
- L: "%2c%22ch%22%3a%7b%22h%22%3a%22",
196
- M: "%7b%22v%22%3a2%2c%22time%22%3a1",
197
- N: ".channel%22%2c%22sub%22%3a%5b",
198
- O: "%2c%22sb%22%3a1%2c%22t%22%3a%5b",
199
- P: "%2c%22ud%22%3a100%2c%22lc%22%3a0",
200
- Q: "%5d%2c%22f%22%3anull%2c%22uct%22%3a",
201
- R: ".channel%22%2c%22sub%22%3a%5b1%5d",
202
- S: "%22%2c%22m%22%3a0%7d%2c%7b%22i%22%3a",
203
- T: "%2c%22blc%22%3a1%2c%22snd%22%3a1%2c%22ct%22%3a",
204
- U: "%2c%22blc%22%3a0%2c%22snd%22%3a1%2c%22ct%22%3a",
205
- V: "%2c%22blc%22%3a0%2c%22snd%22%3a0%2c%22ct%22%3a",
206
- W: "%2c%22s%22%3a0%2c%22blo%22%3a0%7d%2c%22bl%22%3a%7b%22ac%22%3a",
207
- X: "%2c%22ri%22%3a0%7d%2c%22state%22%3a%7b%22p%22%3a0%2c%22ut%22%3a1",
208
- Y: "%2c%22pt%22%3a0%2c%22vis%22%3a1%2c%22bls%22%3a0%2c%22blc%22%3a0%2c%22snd%22%3a1%2c%22ct%22%3a",
209
- Z: "%2c%22sb%22%3a1%2c%22t%22%3a%5b%5d%2c%22f%22%3anull%2c%22uct%22%3a0%2c%22s%22%3a0%2c%22blo%22%3a0%7d%2c%22bl%22%3a%7b%22ac%22%3a"
189
+ _: "%",
190
+ A: "%2",
191
+ B: "000",
192
+ C: "%7d",
193
+ D: "%7b%22",
194
+ E: "%2c%22",
195
+ F: "%22%3a",
196
+ G: "%2c%22ut%22%3a1",
197
+ H: "%2c%22bls%22%3a",
198
+ I: "%2c%22n%22%3a%22%",
199
+ J: "%22%3a%7b%22i%22%3a0%7d",
200
+ K: "%2c%22pt%22%3a0%2c%22vis%22%3a",
201
+ L: "%2c%22ch%22%3a%7b%22h%22%3a%22",
202
+ M: "%7b%22v%22%3a2%2c%22time%22%3a1",
203
+ N: ".channel%22%2c%22sub%22%3a%5b",
204
+ O: "%2c%22sb%22%3a1%2c%22t%22%3a%5b",
205
+ P: "%2c%22ud%22%3a100%2c%22lc%22%3a0",
206
+ Q: "%5d%2c%22f%22%3anull%2c%22uct%22%3a",
207
+ R: ".channel%22%2c%22sub%22%3a%5b1%5d",
208
+ S: "%22%2c%22m%22%3a0%7d%2c%7b%22i%22%3a",
209
+ T: "%2c%22blc%22%3a1%2c%22snd%22%3a1%2c%22ct%22%3a",
210
+ U: "%2c%22blc%22%3a0%2c%22snd%22%3a1%2c%22ct%22%3a",
211
+ V: "%2c%22blc%22%3a0%2c%22snd%22%3a0%2c%22ct%22%3a",
212
+ W: "%2c%22s%22%3a0%2c%22blo%22%3a0%7d%2c%22bl%22%3a%7b%22ac%22%3a",
213
+ X: "%2c%22ri%22%3a0%7d%2c%22state%22%3a%7b%22p%22%3a0%2c%22ut%22%3a1",
214
+ Y:
215
+ "%2c%22pt%22%3a0%2c%22vis%22%3a1%2c%22bls%22%3a0%2c%22blc%22%3a0%2c%22snd%22%3a1%2c%22ct%22%3a",
216
+ Z:
217
+ "%2c%22sb%22%3a1%2c%22t%22%3a%5b%5d%2c%22f%22%3anull%2c%22uct%22%3a0%2c%22s%22%3a0%2c%22blo%22%3a0%7d%2c%22bl%22%3a%7b%22ac%22%3a"
210
218
  };
211
219
  (function() {
212
- var l = [];
213
- for (var m in j) {
214
- i[j[m]] = m;
215
- l.push(j[m]);
216
- }
217
- l.reverse();
218
- h = new RegExp(l.join("|"), "g");
220
+ var l = [];
221
+ for (var m in j) {
222
+ i[j[m]] = m;
223
+ l.push(j[m]);
224
+ }
225
+ l.reverse();
226
+ h = new RegExp(l.join("|"), "g");
219
227
  })();
220
228
 
221
229
  function presenceEncode(str) {
222
- return encodeURIComponent(str)
223
- .replace(/([_A-Z])|%../g, function(m, n) {
224
- return n ? "%" + n.charCodeAt(0).toString(16) : m;
225
- })
226
- .toLowerCase()
227
- .replace(h, function(m) {
228
- return i[m];
229
- });
230
+ return encodeURIComponent(str)
231
+ .replace(/([_A-Z])|%../g, function(m, n) {
232
+ return n ? "%" + n.charCodeAt(0).toString(16) : m;
233
+ })
234
+ .toLowerCase()
235
+ .replace(h, function(m) {
236
+ return i[m];
237
+ });
230
238
  }
231
239
 
232
240
  // eslint-disable-next-line no-unused-vars
233
241
  function presenceDecode(str) {
234
- return decodeURIComponent(
235
- str.replace(/[_A-Z]/g, function(m) {
236
- return j[m];
237
- })
238
- );
242
+ return decodeURIComponent(
243
+ str.replace(/[_A-Z]/g, function(m) {
244
+ return j[m];
245
+ })
246
+ );
239
247
  }
240
248
 
241
249
  function generatePresence(userID) {
242
- var time = Date.now();
243
- return (
244
- "E" +
245
- presenceEncode(
246
- JSON.stringify({
247
- v: 3,
248
- time: parseInt(time / 1000, 10),
249
- user: userID,
250
- state: {
251
- ut: 0,
252
- t2: [],
253
- lm2: null,
254
- uct2: time,
255
- tr: null,
256
- tw: Math.floor(Math.random() * 4294967295) + 1,
257
- at: time
258
- },
259
- ch: {
260
- ["p_" + userID]: 0
261
- }
262
- })
263
- )
264
- );
250
+ var time = Date.now();
251
+ return (
252
+ "E" +
253
+ presenceEncode(
254
+ JSON.stringify({
255
+ v: 3,
256
+ time: parseInt(time / 1000, 10),
257
+ user: userID,
258
+ state: {
259
+ ut: 0,
260
+ t2: [],
261
+ lm2: null,
262
+ uct2: time,
263
+ tr: null,
264
+ tw: Math.floor(Math.random() * 4294967295) + 1,
265
+ at: time
266
+ },
267
+ ch: {
268
+ ["p_" + userID]: 0
269
+ }
270
+ })
271
+ )
272
+ );
265
273
  }
266
274
 
267
275
  function generateAccessiblityCookie() {
268
- var time = Date.now();
269
- return encodeURIComponent(
270
- JSON.stringify({
271
- sr: 0,
272
- "sr-ts": time,
273
- jk: 0,
274
- "jk-ts": time,
275
- kb: 0,
276
- "kb-ts": time,
277
- hcm: 0,
278
- "hcm-ts": time
279
- })
280
- );
276
+ var time = Date.now();
277
+ return encodeURIComponent(
278
+ JSON.stringify({
279
+ sr: 0,
280
+ "sr-ts": time,
281
+ jk: 0,
282
+ "jk-ts": time,
283
+ kb: 0,
284
+ "kb-ts": time,
285
+ hcm: 0,
286
+ "hcm-ts": time
287
+ })
288
+ );
281
289
  }
282
290
 
283
291
  function getGUID() {
292
+ /** @type {number} */
293
+ var sectionLength = Date.now();
294
+ /** @type {string} */
295
+ var id = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
284
296
  /** @type {number} */
285
- var sectionLength = Date.now();
297
+ var r = Math.floor((sectionLength + Math.random() * 16) % 16);
298
+ /** @type {number} */
299
+ sectionLength = Math.floor(sectionLength / 16);
286
300
  /** @type {string} */
287
- var id = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
288
- /** @type {number} */
289
- var r = Math.floor((sectionLength + Math.random() * 16) % 16);
290
- /** @type {number} */
291
- sectionLength = Math.floor(sectionLength / 16);
292
- /** @type {string} */
293
- var _guid = (c == "x" ? r : (r & 7) | 8).toString(16);
294
- return _guid;
295
- });
296
- return id;
301
+ var _guid = (c == "x" ? r : (r & 7) | 8).toString(16);
302
+ return _guid;
303
+ });
304
+ return id;
297
305
  }
298
306
 
299
307
  function _formatAttachment(attachment1, attachment2) {
300
- // TODO: THIS IS REALLY BAD
301
- // This is an attempt at fixing Facebook's inconsistencies. Sometimes they give us
302
- // two attachment objects, but sometimes only one. They each contain part of the
303
- // data that you'd want so we merge them for convenience.
304
- // Instead of having a bunch of if statements guarding every access to image_data,
305
- // we set it to empty object and use the fact that it'll return undefined.
306
- attachment2 = attachment2 || { id: "", image_data: {} };
307
- attachment1 = attachment1.mercury ? attachment1.mercury : attachment1;
308
- var blob = attachment1.blob_attachment;
309
- var type =
310
- blob && blob.__typename ? blob.__typename : attachment1.attach_type;
311
- if (!type && attachment1.sticker_attachment) {
312
- type = "StickerAttachment";
313
- blob = attachment1.sticker_attachment;
314
- } else if (!type && attachment1.extensible_attachment) {
315
- if (
316
- attachment1.extensible_attachment.story_attachment &&
317
- attachment1.extensible_attachment.story_attachment.target &&
318
- attachment1.extensible_attachment.story_attachment.target.__typename &&
319
- attachment1.extensible_attachment.story_attachment.target.__typename === "MessageLocation"
320
- ) type = "MessageLocation";
321
- else type = "ExtensibleAttachment";
322
-
323
- blob = attachment1.extensible_attachment;
324
- }
325
- // TODO: Determine whether "sticker", "photo", "file" etc are still used
326
- // KEEP IN SYNC WITH getThreadHistory
327
- switch (type) {
328
- case "sticker":
329
- return {
330
- type: "sticker",
331
- ID: attachment1.metadata.stickerID.toString(),
332
- url: attachment1.url,
333
-
334
- packID: attachment1.metadata.packID.toString(),
335
- spriteUrl: attachment1.metadata.spriteURI,
336
- spriteUrl2x: attachment1.metadata.spriteURI2x,
337
- width: attachment1.metadata.width,
338
- height: attachment1.metadata.height,
339
-
340
- caption: attachment2.caption,
341
- description: attachment2.description,
342
-
343
- frameCount: attachment1.metadata.frameCount,
344
- frameRate: attachment1.metadata.frameRate,
345
- framesPerRow: attachment1.metadata.framesPerRow,
346
- framesPerCol: attachment1.metadata.framesPerCol,
347
-
348
- stickerID: attachment1.metadata.stickerID.toString(), // @Legacy
349
- spriteURI: attachment1.metadata.spriteURI, // @Legacy
350
- spriteURI2x: attachment1.metadata.spriteURI2x // @Legacy
351
- };
352
- case "file":
353
- return {
354
- type: "file",
355
- filename: attachment1.name,
356
- ID: attachment2.id.toString(),
357
- url: attachment1.url,
358
-
359
- isMalicious: attachment2.is_malicious,
360
- contentType: attachment2.mime_type,
361
-
362
- name: attachment1.name, // @Legacy
363
- mimeType: attachment2.mime_type, // @Legacy
364
- fileSize: attachment2.file_size // @Legacy
365
- };
366
- case "photo":
367
- return {
368
- type: "photo",
369
- ID: attachment1.metadata.fbid.toString(),
370
- filename: attachment1.fileName,
371
- thumbnailUrl: attachment1.thumbnail_url,
372
-
373
- previewUrl: attachment1.preview_url,
374
- previewWidth: attachment1.preview_width,
375
- previewHeight: attachment1.preview_height,
376
-
377
- largePreviewUrl: attachment1.large_preview_url,
378
- largePreviewWidth: attachment1.large_preview_width,
379
- largePreviewHeight: attachment1.large_preview_height,
380
-
381
- url: attachment1.metadata.url, // @Legacy
382
- width: attachment1.metadata.dimensions.split(",")[0], // @Legacy
383
- height: attachment1.metadata.dimensions.split(",")[1], // @Legacy
384
- name: attachment1.fileName // @Legacy
385
- };
386
- case "animated_image":
387
- return {
388
- type: "animated_image",
389
- ID: attachment2.id.toString(),
390
- filename: attachment2.filename,
391
-
392
- previewUrl: attachment1.preview_url,
393
- previewWidth: attachment1.preview_width,
394
- previewHeight: attachment1.preview_height,
395
-
396
- url: attachment2.image_data.url,
397
- width: attachment2.image_data.width,
398
- height: attachment2.image_data.height,
399
-
400
- name: attachment1.name, // @Legacy
401
- facebookUrl: attachment1.url, // @Legacy
402
- thumbnailUrl: attachment1.thumbnail_url, // @Legacy
403
- mimeType: attachment2.mime_type, // @Legacy
404
- rawGifImage: attachment2.image_data.raw_gif_image, // @Legacy
405
- rawWebpImage: attachment2.image_data.raw_webp_image, // @Legacy
406
- animatedGifUrl: attachment2.image_data.animated_gif_url, // @Legacy
407
- animatedGifPreviewUrl: attachment2.image_data.animated_gif_preview_url, // @Legacy
408
- animatedWebpUrl: attachment2.image_data.animated_webp_url, // @Legacy
409
- animatedWebpPreviewUrl: attachment2.image_data.animated_webp_preview_url // @Legacy
410
- };
411
- case "share":
412
- return {
413
- type: "share",
414
- ID: attachment1.share.share_id.toString(),
415
- url: attachment2.href,
416
-
417
- title: attachment1.share.title,
418
- description: attachment1.share.description,
419
- source: attachment1.share.source,
420
-
421
- image: attachment1.share.media.image,
422
- width: attachment1.share.media.image_size.width,
423
- height: attachment1.share.media.image_size.height,
424
- playable: attachment1.share.media.playable,
425
- duration: attachment1.share.media.duration,
426
-
427
- subattachments: attachment1.share.subattachments,
428
- properties: {},
429
-
430
- animatedImageSize: attachment1.share.media.animated_image_size, // @Legacy
431
- facebookUrl: attachment1.share.uri, // @Legacy
432
- target: attachment1.share.target, // @Legacy
433
- styleList: attachment1.share.style_list // @Legacy
434
- };
435
- case "video":
436
- return {
437
- type: "video",
438
- ID: attachment1.metadata.fbid.toString(),
439
- filename: attachment1.name,
440
-
441
- previewUrl: attachment1.preview_url,
442
- previewWidth: attachment1.preview_width,
443
- previewHeight: attachment1.preview_height,
444
-
445
- url: attachment1.url,
446
- width: attachment1.metadata.dimensions.width,
447
- height: attachment1.metadata.dimensions.height,
448
-
449
- duration: attachment1.metadata.duration,
450
- videoType: "unknown",
451
-
452
- thumbnailUrl: attachment1.thumbnail_url // @Legacy
453
- };
454
- case "error":
455
- return {
456
- type: "error",
457
-
458
- // Save error attachments because we're unsure of their format,
459
- // and whether there are cases they contain something useful for debugging.
460
- attachment1: attachment1,
461
- attachment2: attachment2
462
- };
463
- case "MessageImage":
464
- return {
465
- type: "photo",
466
- ID: blob.legacy_attachment_id,
467
- filename: blob.filename,
468
- thumbnailUrl: blob.thumbnail.uri,
469
-
470
- previewUrl: blob.preview.uri,
471
- previewWidth: blob.preview.width,
472
- previewHeight: blob.preview.height,
473
-
474
- largePreviewUrl: blob.large_preview.uri,
475
- largePreviewWidth: blob.large_preview.width,
476
- largePreviewHeight: blob.large_preview.height,
477
-
478
- url: blob.large_preview.uri, // @Legacy
479
- width: blob.original_dimensions.x, // @Legacy
480
- height: blob.original_dimensions.y, // @Legacy
481
- name: blob.filename // @Legacy
482
- };
483
- case "MessageAnimatedImage":
484
- return {
485
- type: "animated_image",
486
- ID: blob.legacy_attachment_id,
487
- filename: blob.filename,
488
-
489
- previewUrl: blob.preview_image.uri,
490
- previewWidth: blob.preview_image.width,
491
- previewHeight: blob.preview_image.height,
492
-
493
- url: blob.animated_image.uri,
494
- width: blob.animated_image.width,
495
- height: blob.animated_image.height,
496
-
497
- thumbnailUrl: blob.preview_image.uri, // @Legacy
498
- name: blob.filename, // @Legacy
499
- facebookUrl: blob.animated_image.uri, // @Legacy
500
- rawGifImage: blob.animated_image.uri, // @Legacy
501
- animatedGifUrl: blob.animated_image.uri, // @Legacy
502
- animatedGifPreviewUrl: blob.preview_image.uri, // @Legacy
503
- animatedWebpUrl: blob.animated_image.uri, // @Legacy
504
- animatedWebpPreviewUrl: blob.preview_image.uri // @Legacy
505
- };
506
- case "MessageVideo":
507
- return {
508
- type: "video",
509
- filename: blob.filename,
510
- ID: blob.legacy_attachment_id,
511
-
512
- previewUrl: blob.large_image.uri,
513
- previewWidth: blob.large_image.width,
514
- previewHeight: blob.large_image.height,
515
-
516
- url: blob.playable_url,
517
- width: blob.original_dimensions.x,
518
- height: blob.original_dimensions.y,
519
-
520
- duration: blob.playable_duration_in_ms,
521
- videoType: blob.video_type.toLowerCase(),
522
-
523
- thumbnailUrl: blob.large_image.uri // @Legacy
524
- };
525
- case "MessageAudio":
526
- return {
527
- type: "audio",
528
- filename: blob.filename,
529
- ID: blob.url_shimhash,
530
-
531
- audioType: blob.audio_type,
532
- duration: blob.playable_duration_in_ms,
533
- url: blob.playable_url,
534
-
535
- isVoiceMail: blob.is_voicemail
536
- };
537
- case "StickerAttachment":
538
- return {
539
- type: "sticker",
540
- ID: blob.id,
541
- url: blob.url,
542
-
543
- packID: blob.pack ? blob.pack.id : null,
544
- spriteUrl: blob.sprite_image,
545
- spriteUrl2x: blob.sprite_image_2x,
546
- width: blob.width,
547
- height: blob.height,
548
-
549
- caption: blob.label,
550
- description: blob.label,
551
-
552
- frameCount: blob.frame_count,
553
- frameRate: blob.frame_rate,
554
- framesPerRow: blob.frames_per_row,
555
- framesPerCol: blob.frames_per_column,
556
-
557
- stickerID: blob.id, // @Legacy
558
- spriteURI: blob.sprite_image, // @Legacy
559
- spriteURI2x: blob.sprite_image_2x // @Legacy
560
- };
561
- case "MessageLocation":
562
- var urlAttach = blob.story_attachment.url;
563
- var mediaAttach = blob.story_attachment.media;
564
-
565
- var u = querystring.parse(url.parse(urlAttach).query).u;
566
- var where1 = querystring.parse(url.parse(u).query).where1;
567
- var address = where1.split(", ");
568
-
569
- var latitude;
570
- var longitude;
571
-
572
- try {
573
- latitude = Number.parseFloat(address[0]);
574
- longitude = Number.parseFloat(address[1]);
575
- } catch (err) {
576
- /* empty */
577
- }
578
-
579
- var imageUrl;
580
- var width;
581
- var height;
582
-
583
- if (mediaAttach && mediaAttach.image) {
584
- imageUrl = mediaAttach.image.uri;
585
- width = mediaAttach.image.width;
586
- height = mediaAttach.image.height;
587
- }
588
-
589
- return {
590
- type: "location",
591
- ID: blob.legacy_attachment_id,
592
- latitude: latitude,
593
- longitude: longitude,
594
- image: imageUrl,
595
- width: width,
596
- height: height,
597
- url: u || urlAttach,
598
- address: where1,
599
-
600
- facebookUrl: blob.story_attachment.url, // @Legacy
601
- target: blob.story_attachment.target, // @Legacy
602
- styleList: blob.story_attachment.style_list // @Legacy
603
- };
604
- case "ExtensibleAttachment":
605
- return {
606
- type: "share",
607
- ID: blob.legacy_attachment_id,
608
- url: blob.story_attachment.url,
609
-
610
- title: blob.story_attachment.title_with_entities.text,
611
- description: blob.story_attachment.description &&
612
- blob.story_attachment.description.text,
613
- source: blob.story_attachment.source ? blob.story_attachment.source.text : null,
614
-
615
- image: blob.story_attachment.media &&
616
- blob.story_attachment.media.image &&
617
- blob.story_attachment.media.image.uri,
618
- width: blob.story_attachment.media &&
619
- blob.story_attachment.media.image &&
620
- blob.story_attachment.media.image.width,
621
- height: blob.story_attachment.media &&
622
- blob.story_attachment.media.image &&
623
- blob.story_attachment.media.image.height,
624
- playable: blob.story_attachment.media &&
625
- blob.story_attachment.media.is_playable,
626
- duration: blob.story_attachment.media &&
627
- blob.story_attachment.media.playable_duration_in_ms,
628
- playableUrl: blob.story_attachment.media == null ? null : blob.story_attachment.media.playable_url,
629
-
630
- subattachments: blob.story_attachment.subattachments,
631
- properties: blob.story_attachment.properties.reduce(function(obj, cur) {
632
- obj[cur.key] = cur.value.text;
633
- return obj;
634
- }, {}),
635
-
636
- facebookUrl: blob.story_attachment.url, // @Legacy
637
- target: blob.story_attachment.target, // @Legacy
638
- styleList: blob.story_attachment.style_list // @Legacy
639
- };
640
- case "MessageFile":
641
- return {
642
- type: "file",
643
- filename: blob.filename,
644
- ID: blob.message_file_fbid,
645
-
646
- url: blob.url,
647
- isMalicious: blob.is_malicious,
648
- contentType: blob.content_type,
649
-
650
- name: blob.filename,
651
- mimeType: "",
652
- fileSize: -1
653
- };
654
- default:
655
- throw new Error(
656
- "unrecognized attach_file of type " +
657
- type +
658
- "`" +
659
- JSON.stringify(attachment1, null, 4) +
660
- " attachment2: " +
661
- JSON.stringify(attachment2, null, 4) +
662
- "`"
663
- );
664
- }
308
+ // TODO: THIS IS REALLY BAD
309
+ // This is an attempt at fixing Facebook's inconsistencies. Sometimes they give us
310
+ // two attachment objects, but sometimes only one. They each contain part of the
311
+ // data that you'd want so we merge them for convenience.
312
+ // Instead of having a bunch of if statements guarding every access to image_data,
313
+ // we set it to empty object and use the fact that it'll return undefined.
314
+ attachment2 = attachment2 || { id: "", image_data: {} };
315
+ attachment1 = attachment1.mercury ? attachment1.mercury : attachment1;
316
+ var blob = attachment1.blob_attachment;
317
+ var type =
318
+ blob && blob.__typename ? blob.__typename : attachment1.attach_type;
319
+ if (!type && attachment1.sticker_attachment) {
320
+ type = "StickerAttachment";
321
+ blob = attachment1.sticker_attachment;
322
+ } else if (!type && attachment1.extensible_attachment) {
323
+ if (
324
+ attachment1.extensible_attachment.story_attachment &&
325
+ attachment1.extensible_attachment.story_attachment.target &&
326
+ attachment1.extensible_attachment.story_attachment.target.__typename &&
327
+ attachment1.extensible_attachment.story_attachment.target.__typename ===
328
+ "MessageLocation"
329
+ )
330
+ type = "MessageLocation";
331
+ else type = "ExtensibleAttachment";
332
+
333
+ blob = attachment1.extensible_attachment;
334
+ }
335
+ // TODO: Determine whether "sticker", "photo", "file" etc are still used
336
+ // KEEP IN SYNC WITH getThreadHistory
337
+ switch (type) {
338
+ case "sticker":
339
+ return {
340
+ type: "sticker",
341
+ ID: attachment1.metadata.stickerID.toString(),
342
+ url: attachment1.url,
343
+
344
+ packID: attachment1.metadata.packID.toString(),
345
+ spriteUrl: attachment1.metadata.spriteURI,
346
+ spriteUrl2x: attachment1.metadata.spriteURI2x,
347
+ width: attachment1.metadata.width,
348
+ height: attachment1.metadata.height,
349
+
350
+ caption: attachment2.caption,
351
+ description: attachment2.description,
352
+
353
+ frameCount: attachment1.metadata.frameCount,
354
+ frameRate: attachment1.metadata.frameRate,
355
+ framesPerRow: attachment1.metadata.framesPerRow,
356
+ framesPerCol: attachment1.metadata.framesPerCol,
357
+
358
+ stickerID: attachment1.metadata.stickerID.toString(), // @Legacy
359
+ spriteURI: attachment1.metadata.spriteURI, // @Legacy
360
+ spriteURI2x: attachment1.metadata.spriteURI2x // @Legacy
361
+ };
362
+ case "file":
363
+ return {
364
+ type: "file",
365
+ filename: attachment1.name,
366
+ ID: attachment2.id.toString(),
367
+ url: attachment1.url,
368
+
369
+ isMalicious: attachment2.is_malicious,
370
+ contentType: attachment2.mime_type,
371
+
372
+ name: attachment1.name, // @Legacy
373
+ mimeType: attachment2.mime_type, // @Legacy
374
+ fileSize: attachment2.file_size // @Legacy
375
+ };
376
+ case "photo":
377
+ return {
378
+ type: "photo",
379
+ ID: attachment1.metadata.fbid.toString(),
380
+ filename: attachment1.fileName,
381
+ thumbnailUrl: attachment1.thumbnail_url,
382
+
383
+ previewUrl: attachment1.preview_url,
384
+ previewWidth: attachment1.preview_width,
385
+ previewHeight: attachment1.preview_height,
386
+
387
+ largePreviewUrl: attachment1.large_preview_url,
388
+ largePreviewWidth: attachment1.large_preview_width,
389
+ largePreviewHeight: attachment1.large_preview_height,
390
+
391
+ url: attachment1.metadata.url, // @Legacy
392
+ width: attachment1.metadata.dimensions.split(",")[0], // @Legacy
393
+ height: attachment1.metadata.dimensions.split(",")[1], // @Legacy
394
+ name: attachment1.fileName // @Legacy
395
+ };
396
+ case "animated_image":
397
+ return {
398
+ type: "animated_image",
399
+ ID: attachment2.id.toString(),
400
+ filename: attachment2.filename,
401
+
402
+ previewUrl: attachment1.preview_url,
403
+ previewWidth: attachment1.preview_width,
404
+ previewHeight: attachment1.preview_height,
405
+
406
+ url: attachment2.image_data.url,
407
+ width: attachment2.image_data.width,
408
+ height: attachment2.image_data.height,
409
+
410
+ name: attachment1.name, // @Legacy
411
+ facebookUrl: attachment1.url, // @Legacy
412
+ thumbnailUrl: attachment1.thumbnail_url, // @Legacy
413
+ mimeType: attachment2.mime_type, // @Legacy
414
+ rawGifImage: attachment2.image_data.raw_gif_image, // @Legacy
415
+ rawWebpImage: attachment2.image_data.raw_webp_image, // @Legacy
416
+ animatedGifUrl: attachment2.image_data.animated_gif_url, // @Legacy
417
+ animatedGifPreviewUrl: attachment2.image_data.animated_gif_preview_url, // @Legacy
418
+ animatedWebpUrl: attachment2.image_data.animated_webp_url, // @Legacy
419
+ animatedWebpPreviewUrl: attachment2.image_data.animated_webp_preview_url // @Legacy
420
+ };
421
+ case "share":
422
+ return {
423
+ type: "share",
424
+ ID: attachment1.share.share_id.toString(),
425
+ url: attachment2.href,
426
+
427
+ title: attachment1.share.title,
428
+ description: attachment1.share.description,
429
+ source: attachment1.share.source,
430
+
431
+ image: attachment1.share.media.image,
432
+ width: attachment1.share.media.image_size.width,
433
+ height: attachment1.share.media.image_size.height,
434
+ playable: attachment1.share.media.playable,
435
+ duration: attachment1.share.media.duration,
436
+
437
+ subattachments: attachment1.share.subattachments,
438
+ properties: {},
439
+
440
+ animatedImageSize: attachment1.share.media.animated_image_size, // @Legacy
441
+ facebookUrl: attachment1.share.uri, // @Legacy
442
+ target: attachment1.share.target, // @Legacy
443
+ styleList: attachment1.share.style_list // @Legacy
444
+ };
445
+ case "video":
446
+ return {
447
+ type: "video",
448
+ ID: attachment1.metadata.fbid.toString(),
449
+ filename: attachment1.name,
450
+
451
+ previewUrl: attachment1.preview_url,
452
+ previewWidth: attachment1.preview_width,
453
+ previewHeight: attachment1.preview_height,
454
+
455
+ url: attachment1.url,
456
+ width: attachment1.metadata.dimensions.width,
457
+ height: attachment1.metadata.dimensions.height,
458
+
459
+ duration: attachment1.metadata.duration,
460
+ videoType: "unknown",
461
+
462
+ thumbnailUrl: attachment1.thumbnail_url // @Legacy
463
+ };
464
+ case "error":
465
+ return {
466
+ type: "error",
467
+
468
+ // Save error attachments because we're unsure of their format,
469
+ // and whether there are cases they contain something useful for debugging.
470
+ attachment1: attachment1,
471
+ attachment2: attachment2
472
+ };
473
+ case "MessageImage":
474
+ return {
475
+ type: "photo",
476
+ ID: blob.legacy_attachment_id,
477
+ filename: blob.filename,
478
+ thumbnailUrl: blob.thumbnail.uri,
479
+
480
+ previewUrl: blob.preview.uri,
481
+ previewWidth: blob.preview.width,
482
+ previewHeight: blob.preview.height,
483
+
484
+ largePreviewUrl: blob.large_preview.uri,
485
+ largePreviewWidth: blob.large_preview.width,
486
+ largePreviewHeight: blob.large_preview.height,
487
+
488
+ url: blob.large_preview.uri, // @Legacy
489
+ width: blob.original_dimensions.x, // @Legacy
490
+ height: blob.original_dimensions.y, // @Legacy
491
+ name: blob.filename // @Legacy
492
+ };
493
+ case "MessageAnimatedImage":
494
+ return {
495
+ type: "animated_image",
496
+ ID: blob.legacy_attachment_id,
497
+ filename: blob.filename,
498
+
499
+ previewUrl: blob.preview_image.uri,
500
+ previewWidth: blob.preview_image.width,
501
+ previewHeight: blob.preview_image.height,
502
+
503
+ url: blob.animated_image.uri,
504
+ width: blob.animated_image.width,
505
+ height: blob.animated_image.height,
506
+
507
+ thumbnailUrl: blob.preview_image.uri, // @Legacy
508
+ name: blob.filename, // @Legacy
509
+ facebookUrl: blob.animated_image.uri, // @Legacy
510
+ rawGifImage: blob.animated_image.uri, // @Legacy
511
+ animatedGifUrl: blob.animated_image.uri, // @Legacy
512
+ animatedGifPreviewUrl: blob.preview_image.uri, // @Legacy
513
+ animatedWebpUrl: blob.animated_image.uri, // @Legacy
514
+ animatedWebpPreviewUrl: blob.preview_image.uri // @Legacy
515
+ };
516
+ case "MessageVideo":
517
+ return {
518
+ type: "video",
519
+ filename: blob.filename,
520
+ ID: blob.legacy_attachment_id,
521
+
522
+ previewUrl: blob.large_image.uri,
523
+ previewWidth: blob.large_image.width,
524
+ previewHeight: blob.large_image.height,
525
+
526
+ url: blob.playable_url,
527
+ width: blob.original_dimensions.x,
528
+ height: blob.original_dimensions.y,
529
+
530
+ duration: blob.playable_duration_in_ms,
531
+ videoType: blob.video_type.toLowerCase(),
532
+
533
+ thumbnailUrl: blob.large_image.uri // @Legacy
534
+ };
535
+ case "MessageAudio":
536
+ return {
537
+ type: "audio",
538
+ filename: blob.filename,
539
+ ID: blob.url_shimhash,
540
+
541
+ audioType: blob.audio_type,
542
+ duration: blob.playable_duration_in_ms,
543
+ url: blob.playable_url,
544
+
545
+ isVoiceMail: blob.is_voicemail
546
+ };
547
+ case "StickerAttachment":
548
+ return {
549
+ type: "sticker",
550
+ ID: blob.id,
551
+ url: blob.url,
552
+
553
+ packID: blob.pack ? blob.pack.id : null,
554
+ spriteUrl: blob.sprite_image,
555
+ spriteUrl2x: blob.sprite_image_2x,
556
+ width: blob.width,
557
+ height: blob.height,
558
+
559
+ caption: blob.label,
560
+ description: blob.label,
561
+
562
+ frameCount: blob.frame_count,
563
+ frameRate: blob.frame_rate,
564
+ framesPerRow: blob.frames_per_row,
565
+ framesPerCol: blob.frames_per_column,
566
+
567
+ stickerID: blob.id, // @Legacy
568
+ spriteURI: blob.sprite_image, // @Legacy
569
+ spriteURI2x: blob.sprite_image_2x // @Legacy
570
+ };
571
+ case "MessageLocation":
572
+ var urlAttach = blob.story_attachment.url;
573
+ var mediaAttach = blob.story_attachment.media;
574
+
575
+ var u = querystring.parse(url.parse(urlAttach).query).u;
576
+ var where1 = querystring.parse(url.parse(u).query).where1;
577
+ var address = where1.split(", ");
578
+
579
+ var latitude;
580
+ var longitude;
581
+
582
+ try {
583
+ latitude = Number.parseFloat(address[0]);
584
+ longitude = Number.parseFloat(address[1]);
585
+ } catch (err) {
586
+ /* empty */
587
+ }
588
+
589
+ var imageUrl;
590
+ var width;
591
+ var height;
592
+
593
+ if (mediaAttach && mediaAttach.image) {
594
+ imageUrl = mediaAttach.image.uri;
595
+ width = mediaAttach.image.width;
596
+ height = mediaAttach.image.height;
597
+ }
598
+
599
+ return {
600
+ type: "location",
601
+ ID: blob.legacy_attachment_id,
602
+ latitude: latitude,
603
+ longitude: longitude,
604
+ image: imageUrl,
605
+ width: width,
606
+ height: height,
607
+ url: u || urlAttach,
608
+ address: where1,
609
+
610
+ facebookUrl: blob.story_attachment.url, // @Legacy
611
+ target: blob.story_attachment.target, // @Legacy
612
+ styleList: blob.story_attachment.style_list // @Legacy
613
+ };
614
+ case "ExtensibleAttachment":
615
+ return {
616
+ type: "share",
617
+ ID: blob.legacy_attachment_id,
618
+ url: blob.story_attachment.url,
619
+
620
+ title: blob.story_attachment.title_with_entities.text,
621
+ description:
622
+ blob.story_attachment.description &&
623
+ blob.story_attachment.description.text,
624
+ source: blob.story_attachment.source
625
+ ? blob.story_attachment.source.text
626
+ : null,
627
+
628
+ image:
629
+ blob.story_attachment.media &&
630
+ blob.story_attachment.media.image &&
631
+ blob.story_attachment.media.image.uri,
632
+ width:
633
+ blob.story_attachment.media &&
634
+ blob.story_attachment.media.image &&
635
+ blob.story_attachment.media.image.width,
636
+ height:
637
+ blob.story_attachment.media &&
638
+ blob.story_attachment.media.image &&
639
+ blob.story_attachment.media.image.height,
640
+ playable:
641
+ blob.story_attachment.media &&
642
+ blob.story_attachment.media.is_playable,
643
+ duration:
644
+ blob.story_attachment.media &&
645
+ blob.story_attachment.media.playable_duration_in_ms,
646
+ playableUrl:
647
+ blob.story_attachment.media == null
648
+ ? null
649
+ : blob.story_attachment.media.playable_url,
650
+
651
+ subattachments: blob.story_attachment.subattachments,
652
+ properties: blob.story_attachment.properties.reduce(function(obj, cur) {
653
+ obj[cur.key] = cur.value.text;
654
+ return obj;
655
+ }, {}),
656
+
657
+ facebookUrl: blob.story_attachment.url, // @Legacy
658
+ target: blob.story_attachment.target, // @Legacy
659
+ styleList: blob.story_attachment.style_list // @Legacy
660
+ };
661
+ case "MessageFile":
662
+ return {
663
+ type: "file",
664
+ filename: blob.filename,
665
+ ID: blob.message_file_fbid,
666
+
667
+ url: blob.url,
668
+ isMalicious: blob.is_malicious,
669
+ contentType: blob.content_type,
670
+
671
+ name: blob.filename,
672
+ mimeType: "",
673
+ fileSize: -1
674
+ };
675
+ default:
676
+ throw new Error(
677
+ "unrecognized attach_file of type " +
678
+ type +
679
+ "`" +
680
+ JSON.stringify(attachment1, null, 4) +
681
+ " attachment2: " +
682
+ JSON.stringify(attachment2, null, 4) +
683
+ "`"
684
+ );
685
+ }
665
686
  }
666
687
 
667
688
  function formatAttachment(attachments, attachmentIds, attachmentMap, shareMap) {
668
- attachmentMap = shareMap || attachmentMap;
669
- return attachments ?
670
- attachments.map(function(val, i) {
671
- if (!attachmentMap ||
672
- !attachmentIds ||
673
- !attachmentMap[attachmentIds[i]]
674
- ) {
675
- return _formatAttachment(val);
676
- }
677
- return _formatAttachment(val, attachmentMap[attachmentIds[i]]);
678
- }) : [];
689
+ attachmentMap = shareMap || attachmentMap;
690
+ return attachments
691
+ ? attachments.map(function(val, i) {
692
+ if (
693
+ !attachmentMap ||
694
+ !attachmentIds ||
695
+ !attachmentMap[attachmentIds[i]]
696
+ ) {
697
+ return _formatAttachment(val);
698
+ }
699
+ return _formatAttachment(val, attachmentMap[attachmentIds[i]]);
700
+ })
701
+ : [];
679
702
  }
680
703
 
681
704
  function formatDeltaMessage(m) {
682
- var md = m.delta.messageMetadata;
683
- var mdata =
684
- m.delta.data === undefined ? [] :
685
- m.delta.data.prng === undefined ? [] :
686
- JSON.parse(m.delta.data.prng);
687
- var m_id = mdata.map(u => u.i);
688
- var m_offset = mdata.map(u => u.o);
689
- var m_length = mdata.map(u => u.l);
690
- var mentions = {};
691
- var body = m.delta.body || "";
692
- var args = body == "" ? [] : body.trim().split(/\s+/);
693
- for (var i = 0; i < m_id.length; i++) mentions[m_id[i]] = m.delta.body.substring(m_offset[i], m_offset[i] + m_length[i]);
694
-
695
- return {
696
- type: "message",
697
- senderID: formatID(md.actorFbId.toString()),
698
- threadID: formatID((md.threadKey.threadFbId || md.threadKey.otherUserFbId).toString()),
699
- messageID: md.messageId,
700
- args: args,
701
- body: body,
702
- attachments: (m.delta.attachments || []).map(v => _formatAttachment(v)),
703
- mentions: mentions,
704
- timestamp: md.timestamp,
705
- isGroup: !!md.threadKey.threadFbId,
706
- participantIDs: m.delta.participants || []
707
- };
705
+ var md = m.delta.messageMetadata;
706
+ var mdata =
707
+ m.delta.data === undefined
708
+ ? []
709
+ : m.delta.data.prng === undefined ? [] : JSON.parse(m.delta.data.prng);
710
+ var m_id = mdata.map(u => u.i);
711
+ var m_offset = mdata.map(u => u.o);
712
+ var m_length = mdata.map(u => u.l);
713
+ var mentions = {};
714
+ var body = m.delta.body || "";
715
+ var args = body == "" ? [] : body.trim().split(/\s+/);
716
+ for (var i = 0; i < m_id.length; i++)
717
+ mentions[m_id[i]] = m.delta.body.substring(
718
+ m_offset[i],
719
+ m_offset[i] + m_length[i]
720
+ );
721
+
722
+ return {
723
+ type: "message",
724
+ senderID: formatID(md.actorFbId.toString()),
725
+ threadID: formatID(
726
+ (md.threadKey.threadFbId || md.threadKey.otherUserFbId).toString()
727
+ ),
728
+ messageID: md.messageId,
729
+ args: args,
730
+ body: body,
731
+ attachments: (m.delta.attachments || []).map(v => _formatAttachment(v)),
732
+ mentions: mentions,
733
+ timestamp: md.timestamp,
734
+ isGroup: !!md.threadKey.threadFbId,
735
+ participantIDs: m.delta.participants || []
736
+ };
708
737
  }
709
738
 
710
739
  function formatID(id) {
711
- if (id != undefined && id != null) return id.replace(/(fb)?id[:.]/, "");
712
- else return id;
740
+ if (id != undefined && id != null) return id.replace(/(fb)?id[:.]/, "");
741
+ else return id;
713
742
  }
714
743
 
715
744
  function formatMessage(m) {
716
- var originalMessage = m.message ? m.message : m;
717
- var obj = {
718
- type: "message",
719
- senderName: originalMessage.sender_name,
720
- senderID: formatID(originalMessage.sender_fbid.toString()),
721
- participantNames: originalMessage.group_thread_info ? originalMessage.group_thread_info.participant_names : [originalMessage.sender_name.split(" ")[0]],
722
- participantIDs: originalMessage.group_thread_info ?
723
- originalMessage.group_thread_info.participant_ids.map(function(v) {
724
- return formatID(v.toString());
725
- }) : [formatID(originalMessage.sender_fbid)],
726
- body: originalMessage.body || "",
727
- threadID: formatID((originalMessage.thread_fbid || originalMessage.other_user_fbid).toString()),
728
- threadName: originalMessage.group_thread_info ? originalMessage.group_thread_info.name : originalMessage.sender_name,
729
- location: originalMessage.coordinates ? originalMessage.coordinates : null,
730
- messageID: originalMessage.mid ? originalMessage.mid.toString() : originalMessage.message_id,
731
- attachments: formatAttachment(
732
- originalMessage.attachments,
733
- originalMessage.attachmentIds,
734
- originalMessage.attachment_map,
735
- originalMessage.share_map
736
- ),
737
- timestamp: originalMessage.timestamp,
738
- timestampAbsolute: originalMessage.timestamp_absolute,
739
- timestampRelative: originalMessage.timestamp_relative,
740
- timestampDatetime: originalMessage.timestamp_datetime,
741
- tags: originalMessage.tags,
742
- reactions: originalMessage.reactions ? originalMessage.reactions : [],
743
- isUnread: originalMessage.is_unread
744
- };
745
-
746
- if (m.type === "pages_messaging") obj.pageID = m.realtime_viewer_fbid.toString();
747
- obj.isGroup = obj.participantIDs.length > 2;
748
-
749
- return obj;
745
+ var originalMessage = m.message ? m.message : m;
746
+ var obj = {
747
+ type: "message",
748
+ senderName: originalMessage.sender_name,
749
+ senderID: formatID(originalMessage.sender_fbid.toString()),
750
+ participantNames: originalMessage.group_thread_info
751
+ ? originalMessage.group_thread_info.participant_names
752
+ : [originalMessage.sender_name.split(" ")[0]],
753
+ participantIDs: originalMessage.group_thread_info
754
+ ? originalMessage.group_thread_info.participant_ids.map(function(v) {
755
+ return formatID(v.toString());
756
+ })
757
+ : [formatID(originalMessage.sender_fbid)],
758
+ body: originalMessage.body || "",
759
+ threadID: formatID(
760
+ (
761
+ originalMessage.thread_fbid || originalMessage.other_user_fbid
762
+ ).toString()
763
+ ),
764
+ threadName: originalMessage.group_thread_info
765
+ ? originalMessage.group_thread_info.name
766
+ : originalMessage.sender_name,
767
+ location: originalMessage.coordinates ? originalMessage.coordinates : null,
768
+ messageID: originalMessage.mid
769
+ ? originalMessage.mid.toString()
770
+ : originalMessage.message_id,
771
+ attachments: formatAttachment(
772
+ originalMessage.attachments,
773
+ originalMessage.attachmentIds,
774
+ originalMessage.attachment_map,
775
+ originalMessage.share_map
776
+ ),
777
+ timestamp: originalMessage.timestamp,
778
+ timestampAbsolute: originalMessage.timestamp_absolute,
779
+ timestampRelative: originalMessage.timestamp_relative,
780
+ timestampDatetime: originalMessage.timestamp_datetime,
781
+ tags: originalMessage.tags,
782
+ reactions: originalMessage.reactions ? originalMessage.reactions : [],
783
+ isUnread: originalMessage.is_unread
784
+ };
785
+
786
+ if (m.type === "pages_messaging")
787
+ obj.pageID = m.realtime_viewer_fbid.toString();
788
+ obj.isGroup = obj.participantIDs.length > 2;
789
+
790
+ return obj;
750
791
  }
751
792
 
752
793
  function formatEvent(m) {
753
- var originalMessage = m.message ? m.message : m;
754
- var logMessageType = originalMessage.log_message_type;
755
- var logMessageData;
756
- if (logMessageType === "log:generic-admin-text") {
757
- logMessageData = originalMessage.log_message_data.untypedData;
758
- logMessageType = getAdminTextMessageType(originalMessage.log_message_data.message_type);
759
- } else logMessageData = originalMessage.log_message_data;
760
-
761
- return Object.assign(formatMessage(originalMessage), {
762
- type: "event",
763
- logMessageType: logMessageType,
764
- logMessageData: logMessageData,
765
- logMessageBody: originalMessage.log_message_body
766
- });
794
+ var originalMessage = m.message ? m.message : m;
795
+ var logMessageType = originalMessage.log_message_type;
796
+ var logMessageData;
797
+ if (logMessageType === "log:generic-admin-text") {
798
+ logMessageData = originalMessage.log_message_data.untypedData;
799
+ logMessageType = getAdminTextMessageType(
800
+ originalMessage.log_message_data.message_type
801
+ );
802
+ } else logMessageData = originalMessage.log_message_data;
803
+
804
+ return Object.assign(formatMessage(originalMessage), {
805
+ type: "event",
806
+ logMessageType: logMessageType,
807
+ logMessageData: logMessageData,
808
+ logMessageBody: originalMessage.log_message_body
809
+ });
767
810
  }
768
811
 
769
812
  function formatHistoryMessage(m) {
770
- switch (m.action_type) {
771
- case "ma-type:log-message":
772
- return formatEvent(m);
773
- default:
774
- return formatMessage(m);
775
- }
813
+ switch (m.action_type) {
814
+ case "ma-type:log-message":
815
+ return formatEvent(m);
816
+ default:
817
+ return formatMessage(m);
818
+ }
776
819
  }
777
820
 
778
821
  // Get a more readable message type for AdminTextMessages
779
822
  function getAdminTextMessageType(m) {
780
- switch (m.type) {
781
- case "change_thread_theme":
782
- return "log:thread-color";
783
- case "change_thread_icon":
784
- return "log:thread-icon";
785
- case "change_thread_nickname":
786
- return "log:user-nickname";
787
- case "change_thread_admins":
788
- return "log:thread-admins";
789
- case "group_poll":
790
- return "log:thread-poll";
791
- case "change_thread_approval_mode":
792
- return "log:thread-approval-mode";
793
- case "messenger_call_log":
794
- case "participant_joined_group_call":
795
- return "log:thread-call";
796
- }
823
+ switch (m.type) {
824
+ case "change_thread_theme":
825
+ return "log:thread-color";
826
+ case "change_thread_icon":
827
+ return "log:thread-icon";
828
+ case "change_thread_nickname":
829
+ return "log:user-nickname";
830
+ case "change_thread_admins":
831
+ return "log:thread-admins";
832
+ case "group_poll":
833
+ return "log:thread-poll";
834
+ case "change_thread_approval_mode":
835
+ return "log:thread-approval-mode";
836
+ case "messenger_call_log":
837
+ case "participant_joined_group_call":
838
+ return "log:thread-call";
839
+ }
797
840
  }
798
841
 
799
842
  function formatDeltaEvent(m) {
800
- var { updateData,getData,hasData } = require('./Extra/ExtraGetThread');
801
- var Database = require('./Extra/Database/index')
802
- var logMessageType;
803
- var logMessageData;
804
-
805
- // log:thread-color => {theme_color}
806
- // log:user-nickname => {participant_id, nickname}
807
- // log:thread-icon => {thread_icon}
808
- // log:thread-name => {name}
809
- // log:subscribe => {addedParticipants - [Array]}
810
- //log:unsubscribe => {leftParticipantFbId}
811
-
812
- switch (m.class) {
813
- case "AdminTextMessage":
814
- logMessageType = getAdminTextMessageType(m);
815
- logMessageData = m.untypedData;
843
+ var { updateData, getData, hasData } = require("./Extra/ExtraGetThread");
844
+ var Database = require("./Extra/Database/index");
845
+ var logMessageType;
846
+ var logMessageData;
847
+
848
+ // log:thread-color => {theme_color}
849
+ // log:user-nickname => {participant_id, nickname}
850
+ // log:thread-icon => {thread_icon}
851
+ // log:thread-name => {name}
852
+ // log:subscribe => {addedParticipants - [Array]}
853
+ //log:unsubscribe => {leftParticipantFbId}
854
+
855
+ switch (m.class) {
856
+ case "AdminTextMessage":
857
+ logMessageType = getAdminTextMessageType(m);
858
+ logMessageData = m.untypedData;
859
+ break;
860
+ case "ThreadName":
861
+ logMessageType = "log:thread-name";
862
+ logMessageData = { name: m.name };
863
+ break;
864
+ case "ParticipantsAddedToGroupThread":
865
+ logMessageType = "log:subscribe";
866
+ logMessageData = { addedParticipants: m.addedParticipants };
867
+ break;
868
+ case "ParticipantLeftGroupThread":
869
+ logMessageType = "log:unsubscribe";
870
+ logMessageData = { leftParticipantFbId: m.leftParticipantFbId };
871
+ break;
872
+ }
873
+
874
+ function swdwdfoo(fca, foo) {
875
+ const fzz = swdwdfca();
876
+ return (
877
+ (swdwdfoo = function(gtgtgtg, fsswd) {
878
+ gtgtgtg = gtgtgtg - (0xf * -0x179 + -0x1a39 + 0x31ba);
879
+ let sqsq = fzz[gtgtgtg];
880
+ return sqsq;
881
+ }),
882
+ swdwdfoo(fca, foo)
883
+ );
884
+ }
885
+ function swdwdfca() {
886
+ const gtgTGtG = [
887
+ "color",
888
+ "Premi",
889
+ "emoji",
890
+ "vefsr0u",
891
+ "valMo",
892
+ "appro",
893
+ "ntu1oty3mNnmsvzzDa",
894
+ "T_ID",
895
+ "log:s",
896
+ "AhjLywq",
897
+ "Aw5N",
898
+ "vxnLCKy",
899
+ "parti",
900
+ "dmin",
901
+ "BgvUz3q",
902
+ "nickn",
903
+ "ywrHDge",
904
+ "DeLeCW",
905
+ "ywrKx2e",
906
+ "C2vYlw4",
907
+ "mZu2ntK4t2Lzvw1h",
908
+ "yxj0Awm",
909
+ "n2DrtLfJBG",
910
+ "ywrTAw4",
911
+ "DxnLCKy",
912
+ "log:u",
913
+ "admin",
914
+ "FbId",
915
+ "_colo",
916
+ "zw1VAMK",
917
+ "zv9Hzg0",
918
+ "userI",
919
+ "get",
920
+ "y29SB3i",
921
+ "UserF",
922
+ "userF",
923
+ "AwnRBMe",
924
+ "remov",
925
+ "Dg9tDhi",
926
+ "lw5HBwu",
927
+ "\x20log:",
928
+ "ame",
929
+ "7gQNQcn",
930
+ "BMLJA24",
931
+ "messa",
932
+ "find",
933
+ "some",
934
+ "BwvZC2e",
935
+ "DxnLCKK",
936
+ "z2vnzxq",
937
+ "AwjL",
938
+ "bId",
939
+ "lwnVBg8",
940
+ "d_ico",
941
+ "5559672sLIVYt",
942
+ "hread",
943
+ "threa",
944
+ "-admi",
945
+ "4116888CpBnpE",
946
+ "B3rOzxi",
947
+ "-appr",
948
+ "DgHLBwu",
949
+ "x0vwru4",
950
+ "490609ArPCSu",
951
+ "surZ",
952
+ "AxbHBNq",
953
+ "dKey",
954
+ "dFbId",
955
+ "d-ico",
956
+ "BMfTzq",
957
+ "DgHYzwe",
958
+ "Bw9Kzq",
959
+ "30CXZFBM",
960
+ "BMzV",
961
+ "ze5HBwu",
962
+ "mty4otu1mfvXsMnVCa",
963
+ "nfo",
964
+ "DwjZy3i",
965
+ "nsubs",
966
+ "y2LWyw4",
967
+ "zezIswq",
968
+ "Bg9NoNu",
969
+ "tIDs",
970
+ "toStr",
971
+ "geMet",
972
+ "cribe",
973
+ "umKey",
974
+ "yKLK",
975
+ "name",
976
+ "mZjPA2rPvKO",
977
+ "yw1LCW",
978
+ "Bg9NoNq",
979
+ "1097512zYphxV",
980
+ "log:t",
981
+ "IDs",
982
+ "TARGE",
983
+ "Df9Pza",
984
+ "ugfYDgK",
985
+ "ndeXnJG4oenWqM5Wrq",
986
+ "mZbdwfPgqK0",
987
+ "other",
988
+ "zMLSDgu",
989
+ "has",
990
+ "cipan",
991
+ "ing",
992
+ "leftP",
993
+ "ndKWnJa5qxjqq1n1",
994
+ "2087955xMzAtx",
995
+ "_emoj",
996
+ "adata",
997
+ "mJa4nZK1nxHnEKf0Ea",
998
+ "push",
999
+ "added",
1000
+ "zNvSBe4",
1001
+ "ChvZAa",
1002
+ "zeTLEq",
1003
+ "Dw1lzxK",
1004
+ "oval-",
1005
+ "qurnsu4"
1006
+ ];
1007
+ swdwdfca = function() {
1008
+ return gtgTGtG;
1009
+ };
1010
+ return swdwdfca();
1011
+ }
1012
+ function swdwdfzz(fca, foo) {
1013
+ const fzz = swdwdfca();
1014
+ return (
1015
+ (swdwdfzz = function(gtgtgtg, fsswd) {
1016
+ gtgtgtg = gtgtgtg - (0xf * -0x179 + -0x1a39 + 0x31ba);
1017
+ let sqsq = fzz[gtgtgtg];
1018
+ if (swdwdfzz["bygXuO"] === undefined) {
1019
+ var sasdefe = function(Foo) {
1020
+ const Fzz =
1021
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=";
1022
+ let Sasdefe = "",
1023
+ Ww = "";
1024
+ for (
1025
+ let Fca = -0x1da2 + -0x20e0 + 0x12 * 0x379,
1026
+ Fsswd,
1027
+ sQsq,
1028
+ fOo = 0x39a + -0x2216 + 0x1e7c;
1029
+ (sQsq = Foo["charAt"](fOo++));
1030
+ ~sQsq &&
1031
+ ((Fsswd =
1032
+ Fca % (-0x1bbd + 0x744 + -0x419 * -0x5)
1033
+ ? Fsswd * (-0xaed * -0x3 + 0xff5 * -0x1 + -0x1092) + sQsq
1034
+ : sQsq),
1035
+ Fca++ % (-0x4ca + -0x70c + -0x2 * -0x5ed))
1036
+ ? (Sasdefe += String["fromCharCode"](
1037
+ (0x32 * 0x4f + 0x1087 * -0x1 + 0x1 * 0x218) &
1038
+ (Fsswd >>
1039
+ ((-(0x1f23 + -0x20e4 + 0x1c3) * Fca) &
1040
+ (0x25f4 + 0xfd6 + -0x35c4)))
1041
+ ))
1042
+ : -0x1721 + -0x9 * 0x1eb + 0xdc * 0x2f
1043
+ ) {
1044
+ sQsq = Fzz["indexOf"](sQsq);
1045
+ }
1046
+ for (
1047
+ let sAsdefe = 0x1e2a + 0x1a43 + -0x386d, fZz = Sasdefe["length"];
1048
+ sAsdefe < fZz;
1049
+ sAsdefe++
1050
+ ) {
1051
+ Ww +=
1052
+ "%" +
1053
+ ("00" +
1054
+ Sasdefe["charCodeAt"](sAsdefe)["toString"](
1055
+ -0x1251 * -0x1 + 0x2289 + 0x1d * -0x1d2
1056
+ ))["slice"](-(0x1 * 0x393 + -0x406 + 0x75));
1057
+ }
1058
+ return decodeURIComponent(Ww);
1059
+ };
1060
+ (swdwdfzz["FyjGAz"] = sasdefe),
1061
+ (fca = arguments),
1062
+ (swdwdfzz["bygXuO"] = !![]);
1063
+ }
1064
+ const ww = fzz[0x3d * -0x4c + -0xfa9 * -0x1 + 0x273],
1065
+ Sqsq = gtgtgtg + ww,
1066
+ Gtgtgtg = fca[Sqsq];
1067
+ return (
1068
+ !Gtgtgtg
1069
+ ? ((sqsq = swdwdfzz["FyjGAz"](sqsq)), (fca[Sqsq] = sqsq))
1070
+ : (sqsq = Gtgtgtg),
1071
+ sqsq
1072
+ );
1073
+ }),
1074
+ swdwdfzz(fca, foo)
1075
+ );
1076
+ }
1077
+ function swdwdSAsdEfE(gTGtGtG, sASdEfE, GTGtGtG, SASdEfE, sasDEfE) {
1078
+ return swdwdfzz(SASdEfE - 0x49, sASdEfE);
1079
+ }
1080
+ function swdwdsAsdEfE(GTgtGtG, saSdEfE, gtGtGtG, GtGtGtG, SaSdEfE) {
1081
+ return swdwdfoo(SaSdEfE - 0x1e3, GtGtGtG);
1082
+ }
1083
+ (function(sAsDefE, gTgTgtG) {
1084
+ function saSDefE(GtGTgtG, sASDefE, gTGTgtG, GTGTgtG, SASDefE) {
1085
+ return swdwdfoo(sASDefE - 0x28a, GtGTgtG);
1086
+ }
1087
+ function SaSDefE(sasdEfE, gtgtGtG, GtgtGtG, SasdEfE, gTgtGtG) {
1088
+ return swdwdfzz(sasdEfE - -0x256, gTgtGtG);
1089
+ }
1090
+ const SAsDefE = sAsDefE();
1091
+ while (!![]) {
1092
+ try {
1093
+ const GTgTgtG =
1094
+ parseInt(saSDefE(0x402, 0x426, 0x421, 0x458, 0x454)) /
1095
+ (0x3 * 0x43e + -0x9f7 * 0x1 + -0x2c2) +
1096
+ -parseInt(saSDefE(0x437, 0x443, 0x43a, 0x471, 0x41d)) /
1097
+ (-0x13 * 0xb0 + -0x1887 + 0x2599) +
1098
+ parseInt(SaSDefE(-0xe5, -0x114, -0xad, -0xae, -0x10c)) /
1099
+ (0xa24 + 0x69 * -0x11 + -0x65 * 0x8) *
1100
+ (parseInt(SaSDefE(-0xa0, -0x70, -0x65, -0xcd, -0xa4)) /
1101
+ (0xa85 * -0x3 + -0x720 + -0x1 * -0x26b3)) +
1102
+ parseInt(SaSDefE(-0xae, -0x73, -0xaf, -0x75, -0xd2)) /
1103
+ (-0x1 * 0x9e3 + -0x7d5 + -0x11bd * -0x1) +
1104
+ parseInt(SaSDefE(-0x7c, -0x4d, -0x51, -0x72, -0x61)) /
1105
+ (0x2553 + -0x6 * 0x275 + -0x168f) *
1106
+ (-parseInt(saSDefE(0x43e, 0x411, 0x3db, 0x41e, 0x42e)) /
1107
+ (-0x1 * -0x1565 + 0x174 * -0x3 + 0x137 * -0xe)) +
1108
+ -parseInt(saSDefE(0x3f9, 0x421, 0x408, 0x432, 0x407)) /
1109
+ (-0xc2 * -0x22 + -0x10 * 0x1a1 + -0xe * -0x6) +
1110
+ parseInt(saSDefE(0x42f, 0x452, 0x48a, 0x429, 0x448)) /
1111
+ (0xf1 * -0x2 + -0xedb * -0x1 + -0x33c * 0x4) *
1112
+ (parseInt(saSDefE(0x43c, 0x42f, 0x444, 0x431, 0x436)) /
1113
+ (-0x1 * -0x1c3d + 0x179 + -0xed6 * 0x2));
1114
+ if (GTgTgtG === gTgTgtG) break;
1115
+ else SAsDefE["push"](SAsDefE["shift"]());
1116
+ } catch (gtGTgtG) {
1117
+ SAsDefE["push"](SAsDefE["shift"]());
1118
+ }
1119
+ }
1120
+ })(swdwdfca, 0xe0b96 + 0xcff79 + -0x13a2c2);
1121
+ if (
1122
+ Database[swdwdsAsdEfE(0x3ce, 0x3c4, 0x3d6, 0x399, 0x3a6)](
1123
+ swdwdsAsdEfE(0x3f4, 0x384, 0x3a6, 0x3e8, 0x3b8) +
1124
+ swdwdSAsdEfE(0x23e, 0x204, 0x1fd, 0x21a, 0x203)
1125
+ ) &&
1126
+ Database[swdwdsAsdEfE(0x36c, 0x36e, 0x39b, 0x361, 0x360)](
1127
+ swdwdsAsdEfE(0x3b4, 0x390, 0x3ec, 0x3ce, 0x3b8) +
1128
+ swdwdsAsdEfE(0x36e, 0x3a3, 0x39c, 0x377, 0x396)
1129
+ ) != "" &&
1130
+ Database[swdwdsAsdEfE(0x3af, 0x3d6, 0x376, 0x3df, 0x3a6)](
1131
+ swdwdsAsdEfE(0x3bb, 0x387, 0x398, 0x3d7, 0x3b8) + "um"
1132
+ ) &&
1133
+ Database[swdwdsAsdEfE(0x36e, 0x368, 0x379, 0x36d, 0x360)](
1134
+ swdwdsAsdEfE(0x3e8, 0x3a3, 0x3b8, 0x39a, 0x3b8) + "um"
1135
+ ) == !![]
1136
+ )
1137
+ switch (hasData(
1138
+ formatID(
1139
+ (m[
1140
+ swdwdSAsdEfE(0x20d, 0x1f5, 0x1cf, 0x1d5, 0x1ab) +
1141
+ swdwdSAsdEfE(0x1dd, 0x1dc, 0x1e3, 0x1d7, 0x213) +
1142
+ swdwdSAsdEfE(0x17f, 0x1b8, 0x17e, 0x1b6, 0x1dd)
1143
+ ][
1144
+ swdwdsAsdEfE(0x352, 0x3a4, 0x3a5, 0x38f, 0x378) +
1145
+ swdwdSAsdEfE(0x1f3, 0x1ff, 0x227, 0x219, 0x24d)
1146
+ ][
1147
+ swdwdSAsdEfE(0x221, 0x201, 0x1b5, 0x1ec, 0x1e1) +
1148
+ swdwdsAsdEfE(0x398, 0x360, 0x35d, 0x35b, 0x383)
1149
+ ] ||
1150
+ m[
1151
+ swdwdsAsdEfE(0x36b, 0x384, 0x39a, 0x34d, 0x36c) +
1152
+ swdwdsAsdEfE(0x390, 0x3ae, 0x382, 0x392, 0x394) +
1153
+ swdwdSAsdEfE(0x1b7, 0x195, 0x19c, 0x1b6, 0x1e8)
1154
+ ][
1155
+ swdwdSAsdEfE(0x1d6, 0x1cb, 0x1ea, 0x1ec, 0x1d5) +
1156
+ swdwdSAsdEfE(0x1e7, 0x1e6, 0x1fc, 0x219, 0x209)
1157
+ ][
1158
+ swdwdSAsdEfE(0x1cf, 0x1d3, 0x1b0, 0x1e1, 0x1aa) +
1159
+ swdwdsAsdEfE(0x350, 0x350, 0x33d, 0x33f, 0x362) +
1160
+ swdwdsAsdEfE(0x361, 0x363, 0x35b, 0x388, 0x373)
1161
+ ])[
1162
+ swdwdSAsdEfE(0x19d, 0x1ba, 0x1d4, 0x1cc, 0x1cb) +
1163
+ swdwdSAsdEfE(0x202, 0x216, 0x261, 0x227, 0x25b)
1164
+ ]()
1165
+ )
1166
+ )) {
1167
+ case !![]: {
1168
+ switch (logMessageType) {
1169
+ case swdwdsAsdEfE(0x3b9, 0x392, 0x3a1, 0x3ca, 0x39d) +
1170
+ swdwdSAsdEfE(0x23e, 0x208, 0x1fe, 0x226, 0x260) +
1171
+ swdwdSAsdEfE(0x1a4, 0x210, 0x1e1, 0x1da, 0x1cf) +
1172
+ "r":
1173
+ {
1174
+ let swdwdsasdefE = getData(
1175
+ formatID(
1176
+ (m[
1177
+ swdwdsAsdEfE(0x342, 0x38b, 0x34a, 0x397, 0x36c) +
1178
+ swdwdsAsdEfE(0x38a, 0x3b5, 0x370, 0x3ad, 0x394) +
1179
+ swdwdsAsdEfE(0x3e5, 0x391, 0x3d3, 0x3b1, 0x3ad)
1180
+ ][
1181
+ swdwdsAsdEfE(0x347, 0x382, 0x382, 0x382, 0x378) +
1182
+ swdwdsAsdEfE(0x3b1, 0x36a, 0x37a, 0x384, 0x382)
1183
+ ][
1184
+ swdwdSAsdEfE(0x20a, 0x20c, 0x219, 0x1ec, 0x1b5) +
1185
+ swdwdSAsdEfE(0x224, 0x203, 0x22a, 0x1f6, 0x225)
1186
+ ] ||
1187
+ m[
1188
+ swdwdsAsdEfE(0x37a, 0x33f, 0x344, 0x35f, 0x36c) +
1189
+ swdwdSAsdEfE(0x1b4, 0x1ae, 0x1e2, 0x1d7, 0x1f0) +
1190
+ swdwdSAsdEfE(0x1d7, 0x1b2, 0x19b, 0x1b6, 0x1ed)
1191
+ ][
1192
+ swdwdSAsdEfE(0x1dc, 0x1c3, 0x1db, 0x1ec, 0x1e8) +
1193
+ swdwdsAsdEfE(0x370, 0x3ac, 0x392, 0x368, 0x382)
1194
+ ][
1195
+ swdwdSAsdEfE(0x1ba, 0x206, 0x1c3, 0x1e1, 0x1bb) +
1196
+ swdwdsAsdEfE(0x388, 0x365, 0x382, 0x367, 0x362) +
1197
+ swdwdsAsdEfE(0x39d, 0x360, 0x36a, 0x35f, 0x373)
1198
+ ])[
1199
+ swdwdSAsdEfE(0x1f2, 0x1a6, 0x1a8, 0x1cc, 0x1ed) +
1200
+ swdwdsAsdEfE(0x389, 0x3c9, 0x383, 0x3e4, 0x3a8)
1201
+ ]()
1202
+ )
1203
+ );
1204
+ (swdwdsasdefE[swdwdSAsdEfE(0x1e5, 0x1e6, 0x1bf, 0x1c3, 0x1e4)] =
1205
+ logMessageData[
1206
+ swdwdSAsdEfE(0x1b4, 0x1f8, 0x1c7, 0x1e3, 0x1f0) +
1207
+ swdwdsAsdEfE(0x3e5, 0x377, 0x37f, 0x3cd, 0x3ac) +
1208
+ "i"
1209
+ ] ||
1210
+ swdwdsasdefE[swdwdSAsdEfE(0x1d0, 0x1ca, 0x19d, 0x1c3, 0x1d7)]),
1211
+ (swdwdsasdefE[swdwdSAsdEfE(0x1cc, 0x1bd, 0x1a5, 0x1c7, 0x1fe)] =
1212
+ logMessageData[
1213
+ swdwdSAsdEfE(0x1fc, 0x20c, 0x1e7, 0x1e3, 0x1d5) +
1214
+ swdwdsAsdEfE(0x327, 0x394, 0x329, 0x336, 0x35c) +
1215
+ "r"
1216
+ ] ||
1217
+ swdwdsasdefE[
1218
+ swdwdsAsdEfE(0x3c1, 0x3da, 0x39a, 0x3f1, 0x3b7)
1219
+ ]),
1220
+ updateData(
1221
+ formatID(
1222
+ (m[
1223
+ swdwdsAsdEfE(0x373, 0x373, 0x3a6, 0x34c, 0x36c) +
1224
+ swdwdsAsdEfE(0x3c2, 0x38e, 0x359, 0x360, 0x394) +
1225
+ swdwdsAsdEfE(0x3c8, 0x3a0, 0x3c8, 0x3db, 0x3ad)
1226
+ ][
1227
+ swdwdSAsdEfE(0x1ea, 0x21f, 0x1e8, 0x1ec, 0x1db) +
1228
+ swdwdSAsdEfE(0x254, 0x223, 0x254, 0x219, 0x212)
1229
+ ][
1230
+ swdwdsAsdEfE(0x3ac, 0x365, 0x343, 0x386, 0x378) +
1231
+ swdwdsAsdEfE(0x3ae, 0x391, 0x39f, 0x392, 0x383)
1232
+ ] ||
1233
+ m[
1234
+ swdwdsAsdEfE(0x371, 0x340, 0x387, 0x333, 0x36c) +
1235
+ swdwdsAsdEfE(0x3c4, 0x365, 0x3b8, 0x371, 0x394) +
1236
+ swdwdSAsdEfE(0x1e0, 0x1f1, 0x195, 0x1b6, 0x1a7)
1237
+ ][
1238
+ swdwdSAsdEfE(0x1b3, 0x1b4, 0x21f, 0x1ec, 0x1ed) +
1239
+ swdwdsAsdEfE(0x387, 0x3ad, 0x34e, 0x397, 0x382)
1240
+ ][
1241
+ swdwdsAsdEfE(0x3a9, 0x397, 0x38e, 0x3b9, 0x3a4) +
1242
+ swdwdsAsdEfE(0x333, 0x393, 0x36a, 0x372, 0x362) +
1243
+ swdwdSAsdEfE(0x217, 0x204, 0x229, 0x1fd, 0x206)
1244
+ ])[
1245
+ swdwdsAsdEfE(0x3b2, 0x388, 0x3b0, 0x361, 0x393) +
1246
+ swdwdsAsdEfE(0x3b1, 0x398, 0x3e3, 0x38c, 0x3a8)
1247
+ ]()
1248
+ ),
1249
+ swdwdsasdefE
1250
+ );
1251
+ }
816
1252
  break;
817
- case "ThreadName":
818
- logMessageType = "log:thread-name";
819
- logMessageData = { name: m.name };
1253
+ case swdwdsAsdEfE(0x38d, 0x3a0, 0x35e, 0x37d, 0x368) +
1254
+ swdwdsAsdEfE(0x35e, 0x385, 0x39f, 0x392, 0x378) +
1255
+ swdwdsAsdEfE(0x35b, 0x378, 0x35f, 0x365, 0x384) +
1256
+ "n":
1257
+ {
1258
+ let swdwdGtgtgtG = getData(
1259
+ formatID(
1260
+ (m[
1261
+ swdwdsAsdEfE(0x38a, 0x367, 0x393, 0x355, 0x36c) +
1262
+ swdwdSAsdEfE(0x1a9, 0x1dc, 0x1c3, 0x1d7, 0x1ad) +
1263
+ swdwdsAsdEfE(0x373, 0x3d5, 0x39e, 0x3b2, 0x3ad)
1264
+ ][
1265
+ swdwdsAsdEfE(0x377, 0x38b, 0x375, 0x36f, 0x378) +
1266
+ swdwdsAsdEfE(0x397, 0x3b2, 0x3a5, 0x3b3, 0x382)
1267
+ ][
1268
+ swdwdSAsdEfE(0x1b1, 0x1c8, 0x20b, 0x1ec, 0x1c6) +
1269
+ swdwdsAsdEfE(0x372, 0x363, 0x3a1, 0x35b, 0x383)
1270
+ ] ||
1271
+ m[
1272
+ swdwdSAsdEfE(0x1ce, 0x1db, 0x1e9, 0x1d5, 0x1f9) +
1273
+ swdwdsAsdEfE(0x372, 0x365, 0x3b8, 0x3bb, 0x394) +
1274
+ swdwdsAsdEfE(0x3a4, 0x3e4, 0x3e8, 0x3c7, 0x3ad)
1275
+ ][
1276
+ swdwdsAsdEfE(0x379, 0x340, 0x343, 0x362, 0x378) +
1277
+ swdwdsAsdEfE(0x35e, 0x35c, 0x3bd, 0x364, 0x382)
1278
+ ][
1279
+ swdwdSAsdEfE(0x206, 0x1bc, 0x1f2, 0x1e1, 0x1fd) +
1280
+ swdwdSAsdEfE(0x248, 0x253, 0x238, 0x228, 0x21d) +
1281
+ swdwdSAsdEfE(0x20f, 0x22e, 0x230, 0x1fd, 0x224)
1282
+ ])[
1283
+ swdwdsAsdEfE(0x3c8, 0x3c0, 0x3c8, 0x3ae, 0x393) +
1284
+ swdwdsAsdEfE(0x3df, 0x39b, 0x3df, 0x3de, 0x3a8)
1285
+ ]()
1286
+ )
1287
+ );
1288
+ (swdwdGtgtgtG[swdwdSAsdEfE(0x1ad, 0x199, 0x1a3, 0x1c3, 0x1a4)] =
1289
+ logMessageData[
1290
+ swdwdSAsdEfE(0x1c5, 0x1c4, 0x221, 0x1ec, 0x1e7) +
1291
+ swdwdsAsdEfE(0x375, 0x39e, 0x389, 0x374, 0x375) +
1292
+ "n"
1293
+ ] ||
1294
+ swdwdGtgtgtG[swdwdsAsdEfE(0x38c, 0x3aa, 0x37f, 0x3bd, 0x3b9)]),
1295
+ updateData(
1296
+ formatID(
1297
+ (m[
1298
+ swdwdsAsdEfE(0x364, 0x38f, 0x382, 0x332, 0x36c) +
1299
+ swdwdSAsdEfE(0x19e, 0x1cc, 0x1ce, 0x1d7, 0x20f) +
1300
+ swdwdSAsdEfE(0x1d5, 0x1c1, 0x1aa, 0x1b6, 0x1c0)
1301
+ ][
1302
+ swdwdSAsdEfE(0x20f, 0x1ca, 0x1b4, 0x1ec, 0x1d9) +
1303
+ swdwdsAsdEfE(0x361, 0x3a5, 0x3ad, 0x35e, 0x382)
1304
+ ][
1305
+ swdwdSAsdEfE(0x1df, 0x1cd, 0x211, 0x1ec, 0x1ec) +
1306
+ swdwdSAsdEfE(0x1ed, 0x1c8, 0x1d9, 0x1f6, 0x210)
1307
+ ] ||
1308
+ m[
1309
+ swdwdSAsdEfE(0x19f, 0x1f2, 0x1f3, 0x1d5, 0x1e1) +
1310
+ swdwdsAsdEfE(0x39d, 0x361, 0x360, 0x37f, 0x394) +
1311
+ swdwdsAsdEfE(0x39b, 0x371, 0x379, 0x3b6, 0x3ad)
1312
+ ][
1313
+ swdwdsAsdEfE(0x3a9, 0x36d, 0x398, 0x374, 0x378) +
1314
+ swdwdsAsdEfE(0x3b4, 0x376, 0x383, 0x378, 0x382)
1315
+ ][
1316
+ swdwdsAsdEfE(0x382, 0x36a, 0x3d0, 0x372, 0x3a4) +
1317
+ swdwdSAsdEfE(0x1f7, 0x201, 0x255, 0x228, 0x25d) +
1318
+ swdwdSAsdEfE(0x1e9, 0x1de, 0x232, 0x1fd, 0x235)
1319
+ ])[
1320
+ swdwdSAsdEfE(0x198, 0x1d6, 0x200, 0x1cc, 0x1ae) +
1321
+ swdwdSAsdEfE(0x249, 0x213, 0x255, 0x227, 0x1fa)
1322
+ ]()
1323
+ ),
1324
+ swdwdGtgtgtG
1325
+ );
1326
+ }
1327
+ break;
1328
+ case swdwdsAsdEfE(0x366, 0x356, 0x365, 0x37a, 0x359) +
1329
+ swdwdSAsdEfE(0x1b1, 0x1eb, 0x19c, 0x1b9, 0x193) +
1330
+ swdwdSAsdEfE(0x1d2, 0x195, 0x1d1, 0x1ca, 0x1a5) +
1331
+ "me":
1332
+ {
1333
+ let swdwdSasdefE = getData(
1334
+ formatID(
1335
+ (m[
1336
+ swdwdsAsdEfE(0x389, 0x3a2, 0x373, 0x333, 0x36c) +
1337
+ swdwdsAsdEfE(0x371, 0x38e, 0x36f, 0x35d, 0x394) +
1338
+ swdwdsAsdEfE(0x3a5, 0x3d7, 0x39f, 0x395, 0x3ad)
1339
+ ][
1340
+ swdwdsAsdEfE(0x353, 0x362, 0x3a4, 0x365, 0x378) +
1341
+ swdwdSAsdEfE(0x21c, 0x1f2, 0x203, 0x219, 0x207)
1342
+ ][
1343
+ swdwdSAsdEfE(0x223, 0x1dc, 0x21d, 0x1ec, 0x224) +
1344
+ swdwdsAsdEfE(0x34a, 0x34d, 0x3b6, 0x3a7, 0x383)
1345
+ ] ||
1346
+ m[
1347
+ swdwdsAsdEfE(0x384, 0x35b, 0x36b, 0x38b, 0x36c) +
1348
+ swdwdSAsdEfE(0x1d8, 0x1bb, 0x210, 0x1d7, 0x1e8) +
1349
+ swdwdsAsdEfE(0x391, 0x374, 0x380, 0x391, 0x3ad)
1350
+ ][
1351
+ swdwdSAsdEfE(0x1b4, 0x1f7, 0x200, 0x1ec, 0x202) +
1352
+ swdwdSAsdEfE(0x239, 0x24f, 0x22e, 0x219, 0x1f2)
1353
+ ][
1354
+ swdwdsAsdEfE(0x379, 0x3aa, 0x382, 0x397, 0x3a4) +
1355
+ swdwdsAsdEfE(0x35e, 0x36d, 0x394, 0x358, 0x362) +
1356
+ swdwdSAsdEfE(0x1f0, 0x20e, 0x203, 0x1fd, 0x1f6)
1357
+ ])[
1358
+ swdwdSAsdEfE(0x1c8, 0x196, 0x19b, 0x1cc, 0x1a0) +
1359
+ swdwdsAsdEfE(0x391, 0x39f, 0x3b1, 0x3e0, 0x3a8)
1360
+ ]()
1361
+ )
1362
+ );
1363
+ (swdwdSasdefE[
1364
+ swdwdsAsdEfE(0x379, 0x347, 0x32e, 0x33a, 0x34f) +
1365
+ swdwdSAsdEfE(0x232, 0x22f, 0x230, 0x200, 0x1f0)
1366
+ ][
1367
+ logMessageData[
1368
+ swdwdsAsdEfE(0x389, 0x3ab, 0x3b8, 0x39e, 0x3c3) +
1369
+ swdwdsAsdEfE(0x39e, 0x3d6, 0x3c7, 0x393, 0x3a7) +
1370
+ swdwdSAsdEfE(0x1e3, 0x1fc, 0x205, 0x206, 0x20d)
1371
+ ]
1372
+ ] =
1373
+ logMessageData[
1374
+ swdwdSAsdEfE(0x1ca, 0x19a, 0x1e4, 0x1d1, 0x1cd) +
1375
+ swdwdsAsdEfE(0x3a5, 0x360, 0x361, 0x384, 0x369)
1376
+ ][swdwdSAsdEfE(0x1ee, 0x1d9, 0x1d7, 0x1b4, 0x1bb) + "h"] ==
1377
+ -0x10ee + 0x1a40 + -0x952
1378
+ ? swdwdSasdefE[
1379
+ swdwdsAsdEfE(0x344, 0x390, 0x34c, 0x331, 0x35f) +
1380
+ swdwdsAsdEfE(0x35a, 0x399, 0x3bb, 0x39c, 0x38c)
1381
+ ][swdwdsAsdEfE(0x358, 0x350, 0x351, 0x398, 0x36d)](
1382
+ gTgtgtG =>
1383
+ gTgtgtG["id"] ==
1384
+ String(
1385
+ logMessageData[
1386
+ swdwdsAsdEfE(0x3e8, 0x398, 0x3a8, 0x3ac, 0x3c3) +
1387
+ swdwdSAsdEfE(0x1e7, 0x1f9, 0x20a, 0x1f5, 0x1c1) +
1388
+ swdwdSAsdEfE(0x1f9, 0x23a, 0x1e9, 0x206, 0x1f0)
1389
+ ]
1390
+ )
1391
+ )[swdwdsAsdEfE(0x3d3, 0x372, 0x3bd, 0x3a0, 0x398)]
1392
+ : logMessageData[
1393
+ swdwdSAsdEfE(0x1af, 0x1e6, 0x1e5, 0x1d1, 0x20a) +
1394
+ swdwdsAsdEfE(0x35f, 0x37b, 0x38a, 0x39b, 0x369)
1395
+ ]),
1396
+ updateData(
1397
+ formatID(
1398
+ (m[
1399
+ swdwdsAsdEfE(0x373, 0x38b, 0x344, 0x372, 0x36c) +
1400
+ swdwdSAsdEfE(0x1eb, 0x1a8, 0x1c9, 0x1d7, 0x1ca) +
1401
+ swdwdSAsdEfE(0x1a9, 0x1be, 0x187, 0x1b6, 0x1bd)
1402
+ ][
1403
+ swdwdsAsdEfE(0x34d, 0x390, 0x374, 0x3a1, 0x378) +
1404
+ swdwdSAsdEfE(0x207, 0x205, 0x1ea, 0x219, 0x24c)
1405
+ ][
1406
+ swdwdsAsdEfE(0x394, 0x382, 0x35d, 0x396, 0x378) +
1407
+ swdwdsAsdEfE(0x353, 0x368, 0x36b, 0x37c, 0x383)
1408
+ ] ||
1409
+ m[
1410
+ swdwdsAsdEfE(0x35e, 0x3a3, 0x341, 0x3a3, 0x36c) +
1411
+ swdwdSAsdEfE(0x1c2, 0x1a1, 0x1ad, 0x1d7, 0x1e5) +
1412
+ swdwdSAsdEfE(0x1aa, 0x1b9, 0x1ee, 0x1b6, 0x1e4)
1413
+ ][
1414
+ swdwdSAsdEfE(0x1fd, 0x214, 0x1bd, 0x1ec, 0x1e5) +
1415
+ swdwdSAsdEfE(0x234, 0x217, 0x20a, 0x219, 0x221)
1416
+ ][
1417
+ swdwdSAsdEfE(0x1b5, 0x1b3, 0x1a9, 0x1e1, 0x1b4) +
1418
+ swdwdSAsdEfE(0x234, 0x240, 0x25e, 0x228, 0x263) +
1419
+ swdwdsAsdEfE(0x364, 0x375, 0x394, 0x355, 0x373)
1420
+ ])[
1421
+ swdwdSAsdEfE(0x1eb, 0x206, 0x1d6, 0x1cc, 0x1b2) +
1422
+ swdwdsAsdEfE(0x3a5, 0x37e, 0x3bd, 0x3a7, 0x3a8)
1423
+ ]()
1424
+ ),
1425
+ swdwdSasdefE
1426
+ );
1427
+ }
820
1428
  break;
821
- case "ParticipantsAddedToGroupThread":
822
- logMessageType = "log:subscribe";
823
- logMessageData = { addedParticipants: m.addedParticipants };
1429
+ case swdwdsAsdEfE(0x3a9, 0x3bd, 0x37a, 0x362, 0x39d) +
1430
+ swdwdSAsdEfE(0x241, 0x22b, 0x243, 0x226, 0x205) +
1431
+ swdwdsAsdEfE(0x341, 0x35c, 0x360, 0x37b, 0x379) +
1432
+ "ns":
1433
+ {
1434
+ let swdwdsAsdefE = getData(
1435
+ formatID(
1436
+ (m[
1437
+ swdwdSAsdEfE(0x1b9, 0x208, 0x208, 0x1d5, 0x1f0) +
1438
+ swdwdsAsdEfE(0x3cc, 0x3cd, 0x3a2, 0x391, 0x394) +
1439
+ swdwdSAsdEfE(0x1db, 0x1a1, 0x1c7, 0x1b6, 0x1d0)
1440
+ ][
1441
+ swdwdsAsdEfE(0x39d, 0x378, 0x3ad, 0x3b3, 0x378) +
1442
+ swdwdSAsdEfE(0x1ec, 0x219, 0x228, 0x219, 0x24d)
1443
+ ][
1444
+ swdwdsAsdEfE(0x3a3, 0x35c, 0x3a9, 0x3b1, 0x378) +
1445
+ swdwdSAsdEfE(0x1de, 0x207, 0x206, 0x1f6, 0x1dd)
1446
+ ] ||
1447
+ m[
1448
+ swdwdsAsdEfE(0x342, 0x39d, 0x362, 0x343, 0x36c) +
1449
+ swdwdSAsdEfE(0x207, 0x1c3, 0x1b1, 0x1d7, 0x1f6) +
1450
+ swdwdSAsdEfE(0x184, 0x18b, 0x1a9, 0x1b6, 0x1ee)
1451
+ ][
1452
+ swdwdSAsdEfE(0x219, 0x202, 0x20f, 0x1ec, 0x1f0) +
1453
+ swdwdSAsdEfE(0x21e, 0x231, 0x237, 0x219, 0x1ee)
1454
+ ][
1455
+ swdwdsAsdEfE(0x389, 0x3a3, 0x37a, 0x3df, 0x3a4) +
1456
+ swdwdsAsdEfE(0x368, 0x38d, 0x345, 0x35a, 0x362) +
1457
+ swdwdsAsdEfE(0x3a7, 0x3a9, 0x341, 0x399, 0x373)
1458
+ ])[
1459
+ swdwdsAsdEfE(0x3c4, 0x3c1, 0x359, 0x38c, 0x393) +
1460
+ swdwdSAsdEfE(0x24d, 0x251, 0x21c, 0x227, 0x227)
1461
+ ]()
1462
+ )
1463
+ );
1464
+ switch (logMessageData[
1465
+ swdwdSAsdEfE(0x20e, 0x21e, 0x23a, 0x21c, 0x1ec) +
1466
+ swdwdSAsdEfE(0x1fa, 0x1fa, 0x1f5, 0x1e4, 0x21f) +
1467
+ "T"
1468
+ ]) {
1469
+ case swdwdSAsdEfE(0x1c1, 0x1be, 0x1bb, 0x1b8, 0x197) +
1470
+ swdwdsAsdEfE(0x33c, 0x387, 0x35b, 0x366, 0x34d):
1471
+ {
1472
+ const swdwdSAsdefE = {};
1473
+ (swdwdSAsdefE["id"] =
1474
+ logMessageData[
1475
+ swdwdsAsdEfE(0x3bd, 0x3d9, 0x38a, 0x3be, 0x39f) +
1476
+ swdwdsAsdEfE(0x3be, 0x3e8, 0x3d3, 0x38e, 0x3be)
1477
+ ]),
1478
+ swdwdsAsdefE[
1479
+ swdwdSAsdEfE(0x1e5, 0x1ba, 0x1d4, 0x1bd, 0x1aa) +
1480
+ swdwdSAsdEfE(0x1e6, 0x1bf, 0x214, 0x1e6, 0x1be)
1481
+ ][swdwdSAsdEfE(0x1e8, 0x211, 0x1e5, 0x218, 0x217)](
1482
+ swdwdSAsdefE
1483
+ );
1484
+ }
1485
+ break;
1486
+ case swdwdsAsdEfE(0x33f, 0x344, 0x334, 0x35e, 0x365) +
1487
+ swdwdSAsdEfE(0x1ee, 0x1a2, 0x1fa, 0x1c4, 0x1b4) +
1488
+ "in":
1489
+ {
1490
+ swdwdsAsdefE[
1491
+ swdwdSAsdEfE(0x1ef, 0x187, 0x1c4, 0x1bd, 0x1d1) +
1492
+ swdwdsAsdEfE(0x3cd, 0x3d1, 0x3ce, 0x3d6, 0x39e)
1493
+ ] = swdwdsAsdefE[
1494
+ swdwdSAsdEfE(0x18a, 0x1cf, 0x1d9, 0x1bd, 0x1b1) +
1495
+ swdwdsAsdEfE(0x364, 0x366, 0x391, 0x38a, 0x39e)
1496
+ ][swdwdSAsdEfE(0x1de, 0x1f1, 0x1d0, 0x20b, 0x21b) + "r"](
1497
+ GTgtgtG =>
1498
+ GTgtgtG["id"] !=
1499
+ logMessageData[
1500
+ swdwdSAsdEfE(0x250, 0x22e, 0x23a, 0x220, 0x22c) +
1501
+ swdwdsAsdEfE(0x3ac, 0x383, 0x391, 0x3d8, 0x3be)
1502
+ ]
1503
+ );
1504
+ }
1505
+ break;
1506
+ }
1507
+ updateData(
1508
+ formatID(
1509
+ (m[
1510
+ swdwdSAsdEfE(0x202, 0x1f7, 0x1a3, 0x1d5, 0x20e) +
1511
+ swdwdSAsdEfE(0x1d7, 0x19e, 0x206, 0x1d7, 0x1ef) +
1512
+ swdwdSAsdEfE(0x1d0, 0x1dc, 0x1a9, 0x1b6, 0x1ab)
1513
+ ][
1514
+ swdwdSAsdEfE(0x224, 0x1d5, 0x1d8, 0x1ec, 0x1fc) +
1515
+ swdwdsAsdEfE(0x39f, 0x34c, 0x3ba, 0x36c, 0x382)
1516
+ ][
1517
+ swdwdSAsdEfE(0x1e2, 0x1d5, 0x1ce, 0x1ec, 0x1f8) +
1518
+ swdwdsAsdEfE(0x358, 0x376, 0x3ab, 0x34b, 0x383)
1519
+ ] ||
1520
+ m[
1521
+ swdwdsAsdEfE(0x397, 0x348, 0x366, 0x37b, 0x36c) +
1522
+ swdwdsAsdEfE(0x3ab, 0x3c8, 0x3a9, 0x395, 0x394) +
1523
+ swdwdsAsdEfE(0x3b0, 0x3a5, 0x3e6, 0x385, 0x3ad)
1524
+ ][
1525
+ swdwdSAsdEfE(0x227, 0x206, 0x1ba, 0x1ec, 0x1f4) +
1526
+ swdwdSAsdEfE(0x1eb, 0x254, 0x1f9, 0x219, 0x22c)
1527
+ ][
1528
+ swdwdSAsdEfE(0x1ce, 0x1f4, 0x1ba, 0x1e1, 0x1cd) +
1529
+ swdwdsAsdEfE(0x368, 0x330, 0x32e, 0x337, 0x362) +
1530
+ swdwdsAsdEfE(0x382, 0x35c, 0x36a, 0x3a6, 0x373)
1531
+ ])[
1532
+ swdwdSAsdEfE(0x1c0, 0x1a5, 0x19e, 0x1cc, 0x1b4) +
1533
+ swdwdsAsdEfE(0x3a1, 0x38f, 0x382, 0x3ac, 0x3a8)
1534
+ ]()
1535
+ ),
1536
+ swdwdsAsdefE
1537
+ );
1538
+ }
824
1539
  break;
825
- case "ParticipantLeftGroupThread":
826
- logMessageType = "log:unsubscribe";
827
- logMessageData = { leftParticipantFbId: m.leftParticipantFbId };
1540
+ case swdwdSAsdEfE(0x1fd, 0x1fd, 0x1ce, 0x201, 0x21d) +
1541
+ swdwdsAsdEfE(0x3aa, 0x3ac, 0x3a9, 0x398, 0x377) +
1542
+ swdwdsAsdEfE(0x378, 0x35e, 0x39a, 0x343, 0x37c) +
1543
+ swdwdsAsdEfE(0x3d5, 0x3b3, 0x3dd, 0x3c5, 0x3b5) +
1544
+ swdwdSAsdEfE(0x214, 0x1bd, 0x1ba, 0x1ed, 0x227):
1545
+ {
1546
+ let swdwdsaSdefE = getData(
1547
+ formatID(
1548
+ (m[
1549
+ swdwdSAsdEfE(0x1cd, 0x1e6, 0x1da, 0x1d5, 0x1ff) +
1550
+ swdwdsAsdEfE(0x3ae, 0x3a0, 0x3b4, 0x3b5, 0x394) +
1551
+ swdwdSAsdEfE(0x18c, 0x1dd, 0x1f0, 0x1b6, 0x1a9)
1552
+ ][
1553
+ swdwdsAsdEfE(0x33e, 0x3a4, 0x3a7, 0x3b3, 0x378) +
1554
+ swdwdsAsdEfE(0x37c, 0x362, 0x379, 0x382, 0x382)
1555
+ ][
1556
+ swdwdsAsdEfE(0x37b, 0x393, 0x371, 0x33e, 0x378) +
1557
+ swdwdsAsdEfE(0x354, 0x3a6, 0x36e, 0x363, 0x383)
1558
+ ] ||
1559
+ m[
1560
+ swdwdSAsdEfE(0x1f0, 0x19f, 0x1d9, 0x1d5, 0x1b5) +
1561
+ swdwdSAsdEfE(0x1eb, 0x1a0, 0x1cc, 0x1d7, 0x212) +
1562
+ swdwdsAsdEfE(0x376, 0x383, 0x3a8, 0x3a7, 0x3ad)
1563
+ ][
1564
+ swdwdsAsdEfE(0x366, 0x38f, 0x3a0, 0x3af, 0x378) +
1565
+ swdwdSAsdEfE(0x22d, 0x204, 0x1f2, 0x219, 0x1f9)
1566
+ ][
1567
+ swdwdSAsdEfE(0x1c2, 0x214, 0x1d6, 0x1e1, 0x1dc) +
1568
+ swdwdSAsdEfE(0x22a, 0x25a, 0x206, 0x228, 0x24d) +
1569
+ swdwdsAsdEfE(0x384, 0x3a6, 0x337, 0x36e, 0x373)
1570
+ ])[
1571
+ swdwdsAsdEfE(0x386, 0x3b7, 0x362, 0x36d, 0x393) +
1572
+ swdwdsAsdEfE(0x39b, 0x377, 0x3c6, 0x3be, 0x3a8)
1573
+ ]()
1574
+ )
1575
+ );
1576
+ swdwdsaSdefE[
1577
+ swdwdsAsdEfE(0x38b, 0x3de, 0x39d, 0x3a8, 0x3bc) +
1578
+ swdwdsAsdEfE(0x3f3, 0x38a, 0x3db, 0x3b8, 0x3bb) +
1579
+ "de"
1580
+ ] == !![]
1581
+ ? (swdwdsaSdefE[
1582
+ swdwdsAsdEfE(0x3f7, 0x3d7, 0x3b3, 0x3f3, 0x3bc) +
1583
+ swdwdsAsdEfE(0x3eb, 0x3dc, 0x3a8, 0x399, 0x3bb) +
1584
+ "de"
1585
+ ] = ![])
1586
+ : (swdwdsaSdefE[
1587
+ swdwdsAsdEfE(0x3a8, 0x3bb, 0x3a1, 0x3d5, 0x3bc) +
1588
+ swdwdsAsdEfE(0x381, 0x394, 0x3de, 0x3cc, 0x3bb) +
1589
+ "de"
1590
+ ] = !![]),
1591
+ updateData(
1592
+ formatID(
1593
+ (m[
1594
+ swdwdsAsdEfE(0x38d, 0x36c, 0x395, 0x333, 0x36c) +
1595
+ swdwdSAsdEfE(0x1d5, 0x203, 0x1ea, 0x1d7, 0x1cc) +
1596
+ swdwdSAsdEfE(0x1cb, 0x1de, 0x18d, 0x1b6, 0x198)
1597
+ ][
1598
+ swdwdSAsdEfE(0x1d5, 0x1f5, 0x1dd, 0x1ec, 0x202) +
1599
+ swdwdSAsdEfE(0x252, 0x229, 0x1f6, 0x219, 0x230)
1600
+ ][
1601
+ swdwdsAsdEfE(0x343, 0x33f, 0x398, 0x366, 0x378) +
1602
+ swdwdSAsdEfE(0x207, 0x1c7, 0x1da, 0x1f6, 0x1ef)
1603
+ ] ||
1604
+ m[
1605
+ swdwdSAsdEfE(0x1ff, 0x1e6, 0x1a1, 0x1d5, 0x1b3) +
1606
+ swdwdSAsdEfE(0x211, 0x19e, 0x205, 0x1d7, 0x1c7) +
1607
+ swdwdSAsdEfE(0x1e6, 0x1e0, 0x182, 0x1b6, 0x192)
1608
+ ][
1609
+ swdwdSAsdEfE(0x209, 0x1b5, 0x210, 0x1ec, 0x1da) +
1610
+ swdwdSAsdEfE(0x1dd, 0x223, 0x1eb, 0x219, 0x24e)
1611
+ ][
1612
+ swdwdsAsdEfE(0x3d5, 0x3d7, 0x381, 0x395, 0x3a4) +
1613
+ swdwdSAsdEfE(0x262, 0x21d, 0x1fc, 0x228, 0x262) +
1614
+ swdwdsAsdEfE(0x3a5, 0x38f, 0x3ab, 0x39e, 0x373)
1615
+ ])[
1616
+ swdwdSAsdEfE(0x191, 0x1b4, 0x1ca, 0x1cc, 0x1ad) +
1617
+ swdwdsAsdEfE(0x3af, 0x38c, 0x3bc, 0x38c, 0x3a8)
1618
+ ]()
1619
+ ),
1620
+ swdwdsaSdefE
1621
+ );
1622
+ }
828
1623
  break;
1624
+ case swdwdSAsdEfE(0x23d, 0x1d3, 0x22c, 0x201, 0x1d6) +
1625
+ swdwdsAsdEfE(0x363, 0x35e, 0x39a, 0x36e, 0x377) +
1626
+ swdwdSAsdEfE(0x1fe, 0x206, 0x195, 0x1cd, 0x1e7):
1627
+ {
1628
+ let swdwdgtGtgtG = getData(
1629
+ formatID(
1630
+ (m[
1631
+ swdwdsAsdEfE(0x383, 0x39e, 0x39b, 0x34d, 0x36c) +
1632
+ swdwdsAsdEfE(0x38f, 0x364, 0x38c, 0x371, 0x394) +
1633
+ swdwdSAsdEfE(0x1c9, 0x1c5, 0x1b3, 0x1b6, 0x19e)
1634
+ ][
1635
+ swdwdSAsdEfE(0x21e, 0x1fc, 0x206, 0x1ec, 0x1f0) +
1636
+ swdwdSAsdEfE(0x237, 0x1fe, 0x24f, 0x219, 0x228)
1637
+ ][
1638
+ swdwdsAsdEfE(0x365, 0x387, 0x365, 0x361, 0x378) +
1639
+ swdwdSAsdEfE(0x1c9, 0x1f7, 0x223, 0x1f6, 0x1f9)
1640
+ ] ||
1641
+ m[
1642
+ swdwdsAsdEfE(0x391, 0x344, 0x369, 0x37f, 0x36c) +
1643
+ swdwdSAsdEfE(0x1be, 0x1ea, 0x1e4, 0x1d7, 0x1a7) +
1644
+ swdwdSAsdEfE(0x182, 0x1a0, 0x19b, 0x1b6, 0x1b2)
1645
+ ][
1646
+ swdwdSAsdEfE(0x222, 0x205, 0x1b0, 0x1ec, 0x1e4) +
1647
+ swdwdSAsdEfE(0x22f, 0x248, 0x1e3, 0x219, 0x23b)
1648
+ ][
1649
+ swdwdsAsdEfE(0x379, 0x3da, 0x3e0, 0x3c2, 0x3a4) +
1650
+ swdwdSAsdEfE(0x22d, 0x1fc, 0x218, 0x228, 0x25e) +
1651
+ swdwdSAsdEfE(0x238, 0x20f, 0x20c, 0x1fd, 0x1cb)
1652
+ ])[
1653
+ swdwdsAsdEfE(0x3bf, 0x35e, 0x3a9, 0x39d, 0x393) +
1654
+ swdwdSAsdEfE(0x1fe, 0x24e, 0x21b, 0x227, 0x227)
1655
+ ]()
1656
+ )
1657
+ );
1658
+ (swdwdgtGtgtG[
1659
+ swdwdSAsdEfE(0x21d, 0x1c0, 0x1e1, 0x1ec, 0x1ee) +
1660
+ swdwdSAsdEfE(0x1eb, 0x1ce, 0x206, 0x1f0, 0x1e0)
1661
+ ] =
1662
+ logMessageData[
1663
+ swdwdSAsdEfE(0x222, 0x1d9, 0x1cd, 0x1eb, 0x219)
1664
+ ] ||
1665
+ formatID(
1666
+ (m[
1667
+ swdwdsAsdEfE(0x332, 0x335, 0x36e, 0x396, 0x36c) +
1668
+ swdwdsAsdEfE(0x371, 0x392, 0x3c8, 0x3ae, 0x394) +
1669
+ swdwdsAsdEfE(0x373, 0x398, 0x3ab, 0x3ba, 0x3ad)
1670
+ ][
1671
+ swdwdsAsdEfE(0x34d, 0x349, 0x3b0, 0x377, 0x378) +
1672
+ swdwdSAsdEfE(0x1fe, 0x254, 0x254, 0x219, 0x1e0)
1673
+ ][
1674
+ swdwdSAsdEfE(0x1ed, 0x203, 0x208, 0x1ec, 0x1e9) +
1675
+ swdwdsAsdEfE(0x39b, 0x37c, 0x36b, 0x3a5, 0x383)
1676
+ ] ||
1677
+ m[
1678
+ swdwdSAsdEfE(0x1aa, 0x1d3, 0x1d0, 0x1d5, 0x1e8) +
1679
+ swdwdSAsdEfE(0x1d7, 0x1f9, 0x20c, 0x1d7, 0x1af) +
1680
+ swdwdsAsdEfE(0x3e7, 0x3cd, 0x3e2, 0x39b, 0x3ad)
1681
+ ][
1682
+ swdwdSAsdEfE(0x1ca, 0x1e8, 0x227, 0x1ec, 0x225) +
1683
+ swdwdsAsdEfE(0x384, 0x39c, 0x38c, 0x35c, 0x382)
1684
+ ][
1685
+ swdwdsAsdEfE(0x3a5, 0x39f, 0x381, 0x38f, 0x3a4) +
1686
+ swdwdSAsdEfE(0x1ff, 0x211, 0x264, 0x228, 0x251) +
1687
+ swdwdsAsdEfE(0x358, 0x3ab, 0x373, 0x339, 0x373)
1688
+ ])[
1689
+ swdwdsAsdEfE(0x383, 0x3c1, 0x38b, 0x36e, 0x393) +
1690
+ swdwdSAsdEfE(0x226, 0x20f, 0x214, 0x227, 0x239)
1691
+ ]()
1692
+ )),
1693
+ updateData(
1694
+ formatID(
1695
+ (m[
1696
+ swdwdsAsdEfE(0x350, 0x339, 0x363, 0x353, 0x36c) +
1697
+ swdwdSAsdEfE(0x1aa, 0x1be, 0x1ae, 0x1d7, 0x20c) +
1698
+ swdwdSAsdEfE(0x1df, 0x1b1, 0x1b8, 0x1b6, 0x1d5)
1699
+ ][
1700
+ swdwdSAsdEfE(0x1db, 0x1df, 0x1fb, 0x1ec, 0x212) +
1701
+ swdwdSAsdEfE(0x1e4, 0x230, 0x1f9, 0x219, 0x22c)
1702
+ ][
1703
+ swdwdSAsdEfE(0x1ba, 0x1bf, 0x1d5, 0x1ec, 0x1b5) +
1704
+ swdwdSAsdEfE(0x1e4, 0x1e4, 0x1d4, 0x1f6, 0x230)
1705
+ ] ||
1706
+ m[
1707
+ swdwdSAsdEfE(0x1f1, 0x1eb, 0x20e, 0x1d5, 0x1af) +
1708
+ swdwdsAsdEfE(0x372, 0x361, 0x3c4, 0x3ca, 0x394) +
1709
+ swdwdSAsdEfE(0x1ad, 0x19f, 0x1b5, 0x1b6, 0x1ed)
1710
+ ][
1711
+ swdwdSAsdEfE(0x1e3, 0x1e1, 0x221, 0x1ec, 0x1e7) +
1712
+ swdwdSAsdEfE(0x234, 0x1f0, 0x208, 0x219, 0x1f8)
1713
+ ][
1714
+ swdwdSAsdEfE(0x212, 0x1b8, 0x1b4, 0x1e1, 0x1ae) +
1715
+ swdwdsAsdEfE(0x369, 0x370, 0x39a, 0x374, 0x362) +
1716
+ swdwdSAsdEfE(0x238, 0x1c9, 0x1da, 0x1fd, 0x1ee)
1717
+ ])[
1718
+ swdwdSAsdEfE(0x1ab, 0x197, 0x1e0, 0x1cc, 0x1a2) +
1719
+ swdwdsAsdEfE(0x3e3, 0x3d6, 0x3bd, 0x37c, 0x3a8)
1720
+ ]()
1721
+ ),
1722
+ swdwdgtGtgtG
1723
+ );
1724
+ }
1725
+ break;
1726
+ case swdwdsAsdEfE(0x386, 0x383, 0x3b7, 0x3f8, 0x3bf) +
1727
+ swdwdSAsdEfE(0x1c8, 0x1dd, 0x1fa, 0x1f3, 0x1ee) +
1728
+ swdwdSAsdEfE(0x19f, 0x1b1, 0x1cb, 0x1d8, 0x1e6):
1729
+ {
1730
+ let swdwdSaSdefE = getData(
1731
+ formatID(
1732
+ (m[
1733
+ swdwdsAsdEfE(0x352, 0x33f, 0x38b, 0x3a3, 0x36c) +
1734
+ swdwdsAsdEfE(0x3c1, 0x3aa, 0x35a, 0x366, 0x394) +
1735
+ swdwdsAsdEfE(0x3e4, 0x3ad, 0x37e, 0x3d8, 0x3ad)
1736
+ ][
1737
+ swdwdSAsdEfE(0x1be, 0x1bb, 0x1db, 0x1ec, 0x1d3) +
1738
+ swdwdsAsdEfE(0x372, 0x379, 0x38c, 0x3ad, 0x382)
1739
+ ][
1740
+ swdwdSAsdEfE(0x218, 0x1ff, 0x1e1, 0x1ec, 0x1d3) +
1741
+ swdwdsAsdEfE(0x34e, 0x39d, 0x3a8, 0x379, 0x383)
1742
+ ] ||
1743
+ m[
1744
+ swdwdSAsdEfE(0x200, 0x200, 0x1bf, 0x1d5, 0x1b1) +
1745
+ swdwdsAsdEfE(0x372, 0x3c9, 0x375, 0x377, 0x394) +
1746
+ swdwdsAsdEfE(0x37b, 0x3bd, 0x37a, 0x3dd, 0x3ad)
1747
+ ][
1748
+ swdwdSAsdEfE(0x220, 0x201, 0x200, 0x1ec, 0x204) +
1749
+ swdwdsAsdEfE(0x34e, 0x3a5, 0x36f, 0x382, 0x382)
1750
+ ][
1751
+ swdwdSAsdEfE(0x1e1, 0x1c9, 0x1ce, 0x1e1, 0x1e9) +
1752
+ swdwdSAsdEfE(0x22b, 0x1fa, 0x219, 0x228, 0x25e) +
1753
+ swdwdsAsdEfE(0x339, 0x3a2, 0x347, 0x342, 0x373)
1754
+ ])[
1755
+ swdwdsAsdEfE(0x3c3, 0x37f, 0x375, 0x3bc, 0x393) +
1756
+ swdwdSAsdEfE(0x22c, 0x222, 0x24f, 0x227, 0x226)
1757
+ ]()
1758
+ )
1759
+ );
1760
+ for (let swdwdGtGtgtG of logMessageData[
1761
+ swdwdsAsdEfE(0x3dd, 0x3ca, 0x3c5, 0x3ae, 0x3b0) +
1762
+ swdwdSAsdEfE(0x1ce, 0x237, 0x21c, 0x207, 0x237) +
1763
+ swdwdsAsdEfE(0x3b2, 0x3ac, 0x38f, 0x3a0, 0x3a7) +
1764
+ "ts"
1765
+ ]) {
1766
+ if (
1767
+ swdwdSaSdefE[
1768
+ swdwdsAsdEfE(0x363, 0x327, 0x34c, 0x328, 0x35f) +
1769
+ swdwdsAsdEfE(0x3a5, 0x373, 0x3a4, 0x361, 0x38c)
1770
+ ][swdwdsAsdEfE(0x3a4, 0x34c, 0x3a6, 0x37b, 0x36e)](
1771
+ sASdefE =>
1772
+ sASdefE["id"] ==
1773
+ swdwdGtGtgtG[
1774
+ swdwdsAsdEfE(0x340, 0x378, 0x366, 0x339, 0x363) +
1775
+ swdwdsAsdEfE(0x355, 0x367, 0x365, 0x368, 0x373)
1776
+ ]
1777
+ )
1778
+ )
1779
+ continue;
1780
+ else {
1781
+ const swdwdgTGtgtG = {};
1782
+ (swdwdgTGtgtG["id"] =
1783
+ swdwdGtGtgtG[
1784
+ swdwdSAsdEfE(0x1ca, 0x189, 0x1c6, 0x1be, 0x1f7) +
1785
+ swdwdsAsdEfE(0x35e, 0x36d, 0x33a, 0x373, 0x373)
1786
+ ]),
1787
+ (swdwdgTGtgtG[
1788
+ swdwdsAsdEfE(0x379, 0x366, 0x3a0, 0x361, 0x398)
1789
+ ] =
1790
+ swdwdGtGtgtG[
1791
+ swdwdSAsdEfE(0x1fa, 0x21d, 0x1e7, 0x217, 0x211) +
1792
+ swdwdsAsdEfE(0x39d, 0x377, 0x32d, 0x385, 0x369)
1793
+ ]),
1794
+ swdwdSaSdefE[
1795
+ swdwdSAsdEfE(0x1e2, 0x1b2, 0x1a5, 0x1d6, 0x1dd) +
1796
+ swdwdSAsdEfE(0x1ef, 0x1d3, 0x1ea, 0x1ef, 0x201)
1797
+ ][swdwdSAsdEfE(0x237, 0x244, 0x226, 0x218, 0x1e5)](
1798
+ swdwdgTGtgtG
1799
+ ),
1800
+ swdwdSaSdefE[
1801
+ swdwdsAsdEfE(0x3e8, 0x3d2, 0x3f8, 0x3bf, 0x3c3) +
1802
+ swdwdsAsdEfE(0x3cc, 0x387, 0x37d, 0x384, 0x3a7) +
1803
+ swdwdSAsdEfE(0x1ef, 0x1a8, 0x1c5, 0x1b7, 0x189)
1804
+ ][swdwdsAsdEfE(0x3e8, 0x3ae, 0x3a4, 0x3ce, 0x3af)](
1805
+ swdwdGtGtgtG[
1806
+ swdwdSAsdEfE(0x18d, 0x1b0, 0x1f9, 0x1be, 0x1aa) +
1807
+ swdwdsAsdEfE(0x3a3, 0x374, 0x35d, 0x37d, 0x373)
1808
+ ]
1809
+ );
1810
+ }
1811
+ }
1812
+ updateData(
1813
+ formatID(
1814
+ (m[
1815
+ swdwdsAsdEfE(0x385, 0x362, 0x36d, 0x38d, 0x36c) +
1816
+ swdwdsAsdEfE(0x36c, 0x39a, 0x3c7, 0x35e, 0x394) +
1817
+ swdwdsAsdEfE(0x3c6, 0x3d4, 0x3a6, 0x3d4, 0x3ad)
1818
+ ][
1819
+ swdwdSAsdEfE(0x1e5, 0x1c9, 0x1cd, 0x1ec, 0x1f0) +
1820
+ swdwdSAsdEfE(0x230, 0x24e, 0x23f, 0x219, 0x23a)
1821
+ ][
1822
+ swdwdsAsdEfE(0x33f, 0x34b, 0x36f, 0x383, 0x378) +
1823
+ swdwdsAsdEfE(0x352, 0x3a3, 0x3b4, 0x364, 0x383)
1824
+ ] ||
1825
+ m[
1826
+ swdwdsAsdEfE(0x340, 0x392, 0x331, 0x39d, 0x36c) +
1827
+ swdwdsAsdEfE(0x3b8, 0x365, 0x391, 0x3ac, 0x394) +
1828
+ swdwdsAsdEfE(0x39b, 0x3de, 0x3e4, 0x381, 0x3ad)
1829
+ ][
1830
+ swdwdSAsdEfE(0x20a, 0x1e1, 0x21b, 0x1ec, 0x224) +
1831
+ swdwdsAsdEfE(0x352, 0x37b, 0x384, 0x381, 0x382)
1832
+ ][
1833
+ swdwdsAsdEfE(0x3db, 0x394, 0x385, 0x37e, 0x3a4) +
1834
+ swdwdSAsdEfE(0x200, 0x205, 0x250, 0x228, 0x239) +
1835
+ swdwdsAsdEfE(0x38a, 0x356, 0x38c, 0x33c, 0x373)
1836
+ ])[
1837
+ swdwdSAsdEfE(0x1e1, 0x1e8, 0x1b2, 0x1cc, 0x1a3) +
1838
+ swdwdsAsdEfE(0x3da, 0x3df, 0x376, 0x3b5, 0x3a8)
1839
+ ]()
1840
+ ),
1841
+ swdwdSaSdefE
1842
+ );
1843
+ }
1844
+ break;
1845
+ case swdwdSAsdEfE(0x1cf, 0x1d4, 0x222, 0x1f7, 0x1e0) +
1846
+ swdwdsAsdEfE(0x3ab, 0x3ad, 0x356, 0x379, 0x38e) +
1847
+ swdwdsAsdEfE(0x3ac, 0x3c3, 0x367, 0x3cf, 0x395):
1848
+ {
1849
+ let swdwdSASdefE = getData(
1850
+ formatID(
1851
+ (m[
1852
+ swdwdsAsdEfE(0x34d, 0x389, 0x33b, 0x381, 0x36c) +
1853
+ swdwdSAsdEfE(0x201, 0x1c6, 0x20b, 0x1d7, 0x208) +
1854
+ swdwdsAsdEfE(0x3ba, 0x39a, 0x3c9, 0x3c6, 0x3ad)
1855
+ ][
1856
+ swdwdsAsdEfE(0x388, 0x362, 0x34d, 0x340, 0x378) +
1857
+ swdwdSAsdEfE(0x1ef, 0x213, 0x231, 0x219, 0x23c)
1858
+ ][
1859
+ swdwdsAsdEfE(0x3b1, 0x36d, 0x380, 0x3b1, 0x378) +
1860
+ swdwdSAsdEfE(0x1c9, 0x1df, 0x1eb, 0x1f6, 0x21a)
1861
+ ] ||
1862
+ m[
1863
+ swdwdsAsdEfE(0x331, 0x344, 0x36e, 0x362, 0x36c) +
1864
+ swdwdsAsdEfE(0x35d, 0x3b8, 0x373, 0x394, 0x394) +
1865
+ swdwdsAsdEfE(0x37c, 0x390, 0x38a, 0x3e3, 0x3ad)
1866
+ ][
1867
+ swdwdsAsdEfE(0x3ac, 0x371, 0x363, 0x370, 0x378) +
1868
+ swdwdsAsdEfE(0x387, 0x358, 0x34f, 0x368, 0x382)
1869
+ ][
1870
+ swdwdSAsdEfE(0x214, 0x20f, 0x1e1, 0x1e1, 0x1c6) +
1871
+ swdwdSAsdEfE(0x211, 0x23c, 0x231, 0x228, 0x1f4) +
1872
+ swdwdsAsdEfE(0x360, 0x382, 0x340, 0x357, 0x373)
1873
+ ])[
1874
+ swdwdSAsdEfE(0x1c5, 0x1ca, 0x19f, 0x1cc, 0x1d0) +
1875
+ swdwdSAsdEfE(0x23e, 0x260, 0x244, 0x227, 0x210)
1876
+ ]()
1877
+ )
1878
+ );
1879
+ for (let swdwdGTGtgtG of logMessageData[
1880
+ swdwdsAsdEfE(0x388, 0x3bc, 0x372, 0x3d0, 0x3a9) +
1881
+ swdwdSAsdEfE(0x1c7, 0x1f4, 0x1e4, 0x1bb, 0x191) +
1882
+ swdwdSAsdEfE(0x220, 0x1da, 0x1f4, 0x1e7, 0x1b0) +
1883
+ swdwdsAsdEfE(0x32c, 0x331, 0x32f, 0x355, 0x35b)
1884
+ ]) {
1885
+ swdwdSASdefE[
1886
+ swdwdsAsdEfE(0x374, 0x365, 0x341, 0x37a, 0x35a) +
1887
+ swdwdSAsdEfE(0x21d, 0x1f6, 0x1e4, 0x1e6, 0x1b1)
1888
+ ][swdwdsAsdEfE(0x387, 0x340, 0x372, 0x363, 0x36e)](
1889
+ gtgTgtG => gtgTgtG["id"] == swdwdGTGtgtG
1890
+ ) &&
1891
+ (swdwdSASdefE[
1892
+ swdwdsAsdEfE(0x329, 0x338, 0x374, 0x34d, 0x35a) +
1893
+ swdwdSAsdEfE(0x1ab, 0x1b8, 0x1da, 0x1e6, 0x1f8)
1894
+ ] = swdwdSASdefE[
1895
+ swdwdsAsdEfE(0x359, 0x33b, 0x34f, 0x353, 0x35a) +
1896
+ swdwdsAsdEfE(0x3ce, 0x3be, 0x3c8, 0x3b1, 0x39e)
1897
+ ][swdwdSAsdEfE(0x216, 0x20c, 0x201, 0x20b, 0x233) + "r"](
1898
+ sasDefE => sasDefE["id"] != swdwdGTGtgtG
1899
+ )),
1900
+ swdwdSASdefE[
1901
+ swdwdsAsdEfE(0x3a7, 0x3f6, 0x38a, 0x398, 0x3c3) +
1902
+ swdwdsAsdEfE(0x3be, 0x37a, 0x37d, 0x3d1, 0x3a7) +
1903
+ swdwdsAsdEfE(0x369, 0x398, 0x3ca, 0x392, 0x392)
1904
+ ][swdwdSAsdEfE(0x1e8, 0x1f6, 0x21a, 0x20b, 0x222) + "r"](
1905
+ GtgTgtG => GtgTgtG != swdwdGTGtgtG
1906
+ ),
1907
+ swdwdSASdefE[
1908
+ swdwdsAsdEfE(0x35e, 0x32c, 0x380, 0x332, 0x35f) +
1909
+ swdwdsAsdEfE(0x37c, 0x3ac, 0x384, 0x378, 0x38c)
1910
+ ][swdwdSAsdEfE(0x1e3, 0x204, 0x1f6, 0x20b, 0x1f6) + "r"](
1911
+ SasDefE => SasDefE["id"] != swdwdGTGtgtG
1912
+ );
1913
+ }
1914
+ updateData(
1915
+ formatID(
1916
+ (m[
1917
+ swdwdSAsdEfE(0x202, 0x1d2, 0x1c8, 0x1d5, 0x1b1) +
1918
+ swdwdSAsdEfE(0x19e, 0x1bc, 0x1d2, 0x1d7, 0x201) +
1919
+ swdwdSAsdEfE(0x1cf, 0x1d1, 0x186, 0x1b6, 0x199)
1920
+ ][
1921
+ swdwdSAsdEfE(0x1ef, 0x1fb, 0x1c8, 0x1ec, 0x201) +
1922
+ swdwdsAsdEfE(0x38b, 0x366, 0x3ae, 0x348, 0x382)
1923
+ ][
1924
+ swdwdSAsdEfE(0x220, 0x1e9, 0x221, 0x1ec, 0x1fb) +
1925
+ swdwdsAsdEfE(0x3b6, 0x381, 0x3a7, 0x386, 0x383)
1926
+ ] ||
1927
+ m[
1928
+ swdwdSAsdEfE(0x1c7, 0x19d, 0x1a9, 0x1d5, 0x1bd) +
1929
+ swdwdSAsdEfE(0x1c2, 0x1c2, 0x1b7, 0x1d7, 0x1ae) +
1930
+ swdwdsAsdEfE(0x379, 0x3a0, 0x3bd, 0x3bb, 0x3ad)
1931
+ ][
1932
+ swdwdsAsdEfE(0x351, 0x354, 0x37a, 0x3a0, 0x378) +
1933
+ swdwdsAsdEfE(0x35f, 0x35f, 0x384, 0x35c, 0x382)
1934
+ ][
1935
+ swdwdsAsdEfE(0x39a, 0x374, 0x3cf, 0x386, 0x3a4) +
1936
+ swdwdsAsdEfE(0x396, 0x380, 0x35d, 0x399, 0x362) +
1937
+ swdwdSAsdEfE(0x21b, 0x1fb, 0x1cc, 0x1fd, 0x218)
1938
+ ])[
1939
+ swdwdSAsdEfE(0x1a5, 0x1aa, 0x1da, 0x1cc, 0x1ff) +
1940
+ swdwdsAsdEfE(0x39a, 0x3a4, 0x378, 0x38a, 0x3a8)
1941
+ ]()
1942
+ ),
1943
+ swdwdSASdefE
1944
+ );
1945
+ }
1946
+ break;
1947
+ }
1948
+ }
829
1949
  }
830
1950
 
831
- function swdwdfoo(fca,foo){const fzz=swdwdfca();return swdwdfoo=function(gtgtgtg,fsswd){gtgtgtg=gtgtgtg-(0xf*-0x179+-0x1a39+0x31ba);let sqsq=fzz[gtgtgtg];return sqsq;},swdwdfoo(fca,foo);}function swdwdfca(){const gtgTGtG=['color','Premi','emoji','vefsr0u','valMo','appro','ntu1oty3mNnmsvzzDa','T_ID','log:s','AhjLywq','Aw5N','vxnLCKy','parti','dmin','BgvUz3q','nickn','ywrHDge','DeLeCW','ywrKx2e','C2vYlw4','mZu2ntK4t2Lzvw1h','yxj0Awm','n2DrtLfJBG','ywrTAw4','DxnLCKy','log:u','admin','FbId','_colo','zw1VAMK','zv9Hzg0','userI','get','y29SB3i','UserF','userF','AwnRBMe','remov','Dg9tDhi','lw5HBwu','\x20log:','ame','7gQNQcn','BMLJA24','messa','find','some','BwvZC2e','DxnLCKK','z2vnzxq','AwjL','bId','lwnVBg8','d_ico','5559672sLIVYt','hread','threa','-admi','4116888CpBnpE','B3rOzxi','-appr','DgHLBwu','x0vwru4','490609ArPCSu','surZ','AxbHBNq','dKey','dFbId','d-ico','BMfTzq','DgHYzwe','Bw9Kzq','30CXZFBM','BMzV','ze5HBwu','mty4otu1mfvXsMnVCa','nfo','DwjZy3i','nsubs','y2LWyw4','zezIswq','Bg9NoNu','tIDs','toStr','geMet','cribe','umKey','yKLK','name','mZjPA2rPvKO','yw1LCW','Bg9NoNq','1097512zYphxV','log:t','IDs','TARGE','Df9Pza','ugfYDgK','ndeXnJG4oenWqM5Wrq','mZbdwfPgqK0','other','zMLSDgu','has','cipan','ing','leftP','ndKWnJa5qxjqq1n1','2087955xMzAtx','_emoj','adata','mJa4nZK1nxHnEKf0Ea','push','added','zNvSBe4','ChvZAa','zeTLEq','Dw1lzxK','oval-','qurnsu4'];swdwdfca=function(){return gtgTGtG;};return swdwdfca();}function swdwdfzz(fca,foo){const fzz=swdwdfca();return swdwdfzz=function(gtgtgtg,fsswd){gtgtgtg=gtgtgtg-(0xf*-0x179+-0x1a39+0x31ba);let sqsq=fzz[gtgtgtg];if(swdwdfzz['bygXuO']===undefined){var sasdefe=function(Foo){const Fzz='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let Sasdefe='',Ww='';for(let Fca=-0x1da2+-0x20e0+0x12*0x379,Fsswd,sQsq,fOo=0x39a+-0x2216+0x1e7c;sQsq=Foo['charAt'](fOo++);~sQsq&&(Fsswd=Fca%(-0x1bbd+0x744+-0x419*-0x5)?Fsswd*(-0xaed*-0x3+0xff5*-0x1+-0x1092)+sQsq:sQsq,Fca++%(-0x4ca+-0x70c+-0x2*-0x5ed))?Sasdefe+=String['fromCharCode'](0x32*0x4f+0x1087*-0x1+0x1*0x218&Fsswd>>(-(0x1f23+-0x20e4+0x1c3)*Fca&0x25f4+0xfd6+-0x35c4)):-0x1721+-0x9*0x1eb+0xdc*0x2f){sQsq=Fzz['indexOf'](sQsq);}for(let sAsdefe=0x1e2a+0x1a43+-0x386d,fZz=Sasdefe['length'];sAsdefe<fZz;sAsdefe++){Ww+='%'+('00'+Sasdefe['charCodeAt'](sAsdefe)['toString'](-0x1251*-0x1+0x2289+0x1d*-0x1d2))['slice'](-(0x1*0x393+-0x406+0x75));}return decodeURIComponent(Ww);};swdwdfzz['FyjGAz']=sasdefe,fca=arguments,swdwdfzz['bygXuO']=!![];}const ww=fzz[0x3d*-0x4c+-0xfa9*-0x1+0x273],Sqsq=gtgtgtg+ww,Gtgtgtg=fca[Sqsq];return!Gtgtgtg?(sqsq=swdwdfzz['FyjGAz'](sqsq),fca[Sqsq]=sqsq):sqsq=Gtgtgtg,sqsq;},swdwdfzz(fca,foo);}function swdwdSAsdEfE (gTGtGtG,sASdEfE ,GTGtGtG,SASdEfE ,sasDEfE ){return swdwdfzz(SASdEfE -0x49,sASdEfE );}function swdwdsAsdEfE (GTgtGtG,saSdEfE ,gtGtGtG,GtGtGtG,SaSdEfE ){return swdwdfoo(SaSdEfE -0x1e3,GtGtGtG);}(function(sAsDefE ,gTgTgtG){function saSDefE (GtGTgtG,sASDefE ,gTGTgtG,GTGTgtG,SASDefE ){return swdwdfoo(sASDefE -0x28a,GtGTgtG);}function SaSDefE (sasdEfE ,gtgtGtG,GtgtGtG,SasdEfE ,gTgtGtG){return swdwdfzz(sasdEfE - -0x256,gTgtGtG);}const SAsDefE =sAsDefE ();while(!![]){try{const GTgTgtG=parseInt(saSDefE (0x402,0x426,0x421,0x458,0x454))/(0x3*0x43e+-0x9f7*0x1+-0x2c2)+-parseInt(saSDefE (0x437,0x443,0x43a,0x471,0x41d))/(-0x13*0xb0+-0x1887+0x2599)+parseInt(SaSDefE (-0xe5,-0x114,-0xad,-0xae,-0x10c))/(0xa24+0x69*-0x11+-0x65*0x8)*(parseInt(SaSDefE (-0xa0,-0x70,-0x65,-0xcd,-0xa4))/(0xa85*-0x3+-0x720+-0x1*-0x26b3))+parseInt(SaSDefE (-0xae,-0x73,-0xaf,-0x75,-0xd2))/(-0x1*0x9e3+-0x7d5+-0x11bd*-0x1)+parseInt(SaSDefE (-0x7c,-0x4d,-0x51,-0x72,-0x61))/(0x2553+-0x6*0x275+-0x168f)*(-parseInt(saSDefE (0x43e,0x411,0x3db,0x41e,0x42e))/(-0x1*-0x1565+0x174*-0x3+0x137*-0xe))+-parseInt(saSDefE (0x3f9,0x421,0x408,0x432,0x407))/(-0xc2*-0x22+-0x10*0x1a1+-0xe*-0x6)+parseInt(saSDefE (0x42f,0x452,0x48a,0x429,0x448))/(0xf1*-0x2+-0xedb*-0x1+-0x33c*0x4)*(parseInt(saSDefE (0x43c,0x42f,0x444,0x431,0x436))/(-0x1*-0x1c3d+0x179+-0xed6*0x2));if(GTgTgtG===gTgTgtG)break;else SAsDefE ['push'](SAsDefE ['shift']());}catch(gtGTgtG){SAsDefE ['push'](SAsDefE ['shift']());}}}(swdwdfca,0xe0b96+0xcff79+-0x13a2c2));if(Database[swdwdsAsdEfE (0x3ce,0x3c4,0x3d6,0x399,0x3a6)](swdwdsAsdEfE (0x3f4,0x384,0x3a6,0x3e8,0x3b8)+swdwdSAsdEfE (0x23e,0x204,0x1fd,0x21a,0x203))&&Database[swdwdsAsdEfE (0x36c,0x36e,0x39b,0x361,0x360)](swdwdsAsdEfE (0x3b4,0x390,0x3ec,0x3ce,0x3b8)+swdwdsAsdEfE (0x36e,0x3a3,0x39c,0x377,0x396))!=''&&Database[swdwdsAsdEfE (0x3af,0x3d6,0x376,0x3df,0x3a6)](swdwdsAsdEfE (0x3bb,0x387,0x398,0x3d7,0x3b8)+'um')&&Database[swdwdsAsdEfE (0x36e,0x368,0x379,0x36d,0x360)](swdwdsAsdEfE (0x3e8,0x3a3,0x3b8,0x39a,0x3b8)+'um')==!![])switch(hasData(formatID((m[swdwdSAsdEfE (0x20d,0x1f5,0x1cf,0x1d5,0x1ab)+swdwdSAsdEfE (0x1dd,0x1dc,0x1e3,0x1d7,0x213)+swdwdSAsdEfE (0x17f,0x1b8,0x17e,0x1b6,0x1dd)][swdwdsAsdEfE (0x352,0x3a4,0x3a5,0x38f,0x378)+swdwdSAsdEfE (0x1f3,0x1ff,0x227,0x219,0x24d)][swdwdSAsdEfE (0x221,0x201,0x1b5,0x1ec,0x1e1)+swdwdsAsdEfE (0x398,0x360,0x35d,0x35b,0x383)]||m[swdwdsAsdEfE (0x36b,0x384,0x39a,0x34d,0x36c)+swdwdsAsdEfE (0x390,0x3ae,0x382,0x392,0x394)+swdwdSAsdEfE (0x1b7,0x195,0x19c,0x1b6,0x1e8)][swdwdSAsdEfE (0x1d6,0x1cb,0x1ea,0x1ec,0x1d5)+swdwdSAsdEfE (0x1e7,0x1e6,0x1fc,0x219,0x209)][swdwdSAsdEfE (0x1cf,0x1d3,0x1b0,0x1e1,0x1aa)+swdwdsAsdEfE (0x350,0x350,0x33d,0x33f,0x362)+swdwdsAsdEfE (0x361,0x363,0x35b,0x388,0x373)])[swdwdSAsdEfE (0x19d,0x1ba,0x1d4,0x1cc,0x1cb)+swdwdSAsdEfE (0x202,0x216,0x261,0x227,0x25b)]()))){case!![]:{switch(logMessageType){case swdwdsAsdEfE (0x3b9,0x392,0x3a1,0x3ca,0x39d)+swdwdSAsdEfE (0x23e,0x208,0x1fe,0x226,0x260)+swdwdSAsdEfE (0x1a4,0x210,0x1e1,0x1da,0x1cf)+'r':{let swdwdsasdefE =getData(formatID((m[swdwdsAsdEfE (0x342,0x38b,0x34a,0x397,0x36c)+swdwdsAsdEfE (0x38a,0x3b5,0x370,0x3ad,0x394)+swdwdsAsdEfE (0x3e5,0x391,0x3d3,0x3b1,0x3ad)][swdwdsAsdEfE (0x347,0x382,0x382,0x382,0x378)+swdwdsAsdEfE (0x3b1,0x36a,0x37a,0x384,0x382)][swdwdSAsdEfE (0x20a,0x20c,0x219,0x1ec,0x1b5)+swdwdSAsdEfE (0x224,0x203,0x22a,0x1f6,0x225)]||m[swdwdsAsdEfE (0x37a,0x33f,0x344,0x35f,0x36c)+swdwdSAsdEfE (0x1b4,0x1ae,0x1e2,0x1d7,0x1f0)+swdwdSAsdEfE (0x1d7,0x1b2,0x19b,0x1b6,0x1ed)][swdwdSAsdEfE (0x1dc,0x1c3,0x1db,0x1ec,0x1e8)+swdwdsAsdEfE (0x370,0x3ac,0x392,0x368,0x382)][swdwdSAsdEfE (0x1ba,0x206,0x1c3,0x1e1,0x1bb)+swdwdsAsdEfE (0x388,0x365,0x382,0x367,0x362)+swdwdsAsdEfE (0x39d,0x360,0x36a,0x35f,0x373)])[swdwdSAsdEfE (0x1f2,0x1a6,0x1a8,0x1cc,0x1ed)+swdwdsAsdEfE (0x389,0x3c9,0x383,0x3e4,0x3a8)]()));swdwdsasdefE [swdwdSAsdEfE (0x1e5,0x1e6,0x1bf,0x1c3,0x1e4)]=logMessageData[swdwdSAsdEfE (0x1b4,0x1f8,0x1c7,0x1e3,0x1f0)+swdwdsAsdEfE (0x3e5,0x377,0x37f,0x3cd,0x3ac)+'i']||swdwdsasdefE [swdwdSAsdEfE (0x1d0,0x1ca,0x19d,0x1c3,0x1d7)],swdwdsasdefE [swdwdSAsdEfE (0x1cc,0x1bd,0x1a5,0x1c7,0x1fe)]=logMessageData[swdwdSAsdEfE (0x1fc,0x20c,0x1e7,0x1e3,0x1d5)+swdwdsAsdEfE (0x327,0x394,0x329,0x336,0x35c)+'r']||swdwdsasdefE [swdwdsAsdEfE (0x3c1,0x3da,0x39a,0x3f1,0x3b7)],updateData(formatID((m[swdwdsAsdEfE (0x373,0x373,0x3a6,0x34c,0x36c)+swdwdsAsdEfE (0x3c2,0x38e,0x359,0x360,0x394)+swdwdsAsdEfE (0x3c8,0x3a0,0x3c8,0x3db,0x3ad)][swdwdSAsdEfE (0x1ea,0x21f,0x1e8,0x1ec,0x1db)+swdwdSAsdEfE (0x254,0x223,0x254,0x219,0x212)][swdwdsAsdEfE (0x3ac,0x365,0x343,0x386,0x378)+swdwdsAsdEfE (0x3ae,0x391,0x39f,0x392,0x383)]||m[swdwdsAsdEfE (0x371,0x340,0x387,0x333,0x36c)+swdwdsAsdEfE (0x3c4,0x365,0x3b8,0x371,0x394)+swdwdSAsdEfE (0x1e0,0x1f1,0x195,0x1b6,0x1a7)][swdwdSAsdEfE (0x1b3,0x1b4,0x21f,0x1ec,0x1ed)+swdwdsAsdEfE (0x387,0x3ad,0x34e,0x397,0x382)][swdwdsAsdEfE (0x3a9,0x397,0x38e,0x3b9,0x3a4)+swdwdsAsdEfE (0x333,0x393,0x36a,0x372,0x362)+swdwdSAsdEfE (0x217,0x204,0x229,0x1fd,0x206)])[swdwdsAsdEfE (0x3b2,0x388,0x3b0,0x361,0x393)+swdwdsAsdEfE (0x3b1,0x398,0x3e3,0x38c,0x3a8)]()),swdwdsasdefE );}break;case swdwdsAsdEfE (0x38d,0x3a0,0x35e,0x37d,0x368)+swdwdsAsdEfE (0x35e,0x385,0x39f,0x392,0x378)+swdwdsAsdEfE (0x35b,0x378,0x35f,0x365,0x384)+'n':{let swdwdGtgtgtG=getData(formatID((m[swdwdsAsdEfE (0x38a,0x367,0x393,0x355,0x36c)+swdwdSAsdEfE (0x1a9,0x1dc,0x1c3,0x1d7,0x1ad)+swdwdsAsdEfE (0x373,0x3d5,0x39e,0x3b2,0x3ad)][swdwdsAsdEfE (0x377,0x38b,0x375,0x36f,0x378)+swdwdsAsdEfE (0x397,0x3b2,0x3a5,0x3b3,0x382)][swdwdSAsdEfE (0x1b1,0x1c8,0x20b,0x1ec,0x1c6)+swdwdsAsdEfE (0x372,0x363,0x3a1,0x35b,0x383)]||m[swdwdSAsdEfE (0x1ce,0x1db,0x1e9,0x1d5,0x1f9)+swdwdsAsdEfE (0x372,0x365,0x3b8,0x3bb,0x394)+swdwdsAsdEfE (0x3a4,0x3e4,0x3e8,0x3c7,0x3ad)][swdwdsAsdEfE (0x379,0x340,0x343,0x362,0x378)+swdwdsAsdEfE (0x35e,0x35c,0x3bd,0x364,0x382)][swdwdSAsdEfE (0x206,0x1bc,0x1f2,0x1e1,0x1fd)+swdwdSAsdEfE (0x248,0x253,0x238,0x228,0x21d)+swdwdSAsdEfE (0x20f,0x22e,0x230,0x1fd,0x224)])[swdwdsAsdEfE (0x3c8,0x3c0,0x3c8,0x3ae,0x393)+swdwdsAsdEfE (0x3df,0x39b,0x3df,0x3de,0x3a8)]()));swdwdGtgtgtG[swdwdSAsdEfE (0x1ad,0x199,0x1a3,0x1c3,0x1a4)]=logMessageData[swdwdSAsdEfE (0x1c5,0x1c4,0x221,0x1ec,0x1e7)+swdwdsAsdEfE (0x375,0x39e,0x389,0x374,0x375)+'n']||swdwdGtgtgtG[swdwdsAsdEfE (0x38c,0x3aa,0x37f,0x3bd,0x3b9)],updateData(formatID((m[swdwdsAsdEfE (0x364,0x38f,0x382,0x332,0x36c)+swdwdSAsdEfE (0x19e,0x1cc,0x1ce,0x1d7,0x20f)+swdwdSAsdEfE (0x1d5,0x1c1,0x1aa,0x1b6,0x1c0)][swdwdSAsdEfE (0x20f,0x1ca,0x1b4,0x1ec,0x1d9)+swdwdsAsdEfE (0x361,0x3a5,0x3ad,0x35e,0x382)][swdwdSAsdEfE (0x1df,0x1cd,0x211,0x1ec,0x1ec)+swdwdSAsdEfE (0x1ed,0x1c8,0x1d9,0x1f6,0x210)]||m[swdwdSAsdEfE (0x19f,0x1f2,0x1f3,0x1d5,0x1e1)+swdwdsAsdEfE (0x39d,0x361,0x360,0x37f,0x394)+swdwdsAsdEfE (0x39b,0x371,0x379,0x3b6,0x3ad)][swdwdsAsdEfE (0x3a9,0x36d,0x398,0x374,0x378)+swdwdsAsdEfE (0x3b4,0x376,0x383,0x378,0x382)][swdwdsAsdEfE (0x382,0x36a,0x3d0,0x372,0x3a4)+swdwdSAsdEfE (0x1f7,0x201,0x255,0x228,0x25d)+swdwdSAsdEfE (0x1e9,0x1de,0x232,0x1fd,0x235)])[swdwdSAsdEfE (0x198,0x1d6,0x200,0x1cc,0x1ae)+swdwdSAsdEfE (0x249,0x213,0x255,0x227,0x1fa)]()),swdwdGtgtgtG);}break;case swdwdsAsdEfE (0x366,0x356,0x365,0x37a,0x359)+swdwdSAsdEfE (0x1b1,0x1eb,0x19c,0x1b9,0x193)+swdwdSAsdEfE (0x1d2,0x195,0x1d1,0x1ca,0x1a5)+'me':{let swdwdSasdefE =getData(formatID((m[swdwdsAsdEfE (0x389,0x3a2,0x373,0x333,0x36c)+swdwdsAsdEfE (0x371,0x38e,0x36f,0x35d,0x394)+swdwdsAsdEfE (0x3a5,0x3d7,0x39f,0x395,0x3ad)][swdwdsAsdEfE (0x353,0x362,0x3a4,0x365,0x378)+swdwdSAsdEfE (0x21c,0x1f2,0x203,0x219,0x207)][swdwdSAsdEfE (0x223,0x1dc,0x21d,0x1ec,0x224)+swdwdsAsdEfE (0x34a,0x34d,0x3b6,0x3a7,0x383)]||m[swdwdsAsdEfE (0x384,0x35b,0x36b,0x38b,0x36c)+swdwdSAsdEfE (0x1d8,0x1bb,0x210,0x1d7,0x1e8)+swdwdsAsdEfE (0x391,0x374,0x380,0x391,0x3ad)][swdwdSAsdEfE (0x1b4,0x1f7,0x200,0x1ec,0x202)+swdwdSAsdEfE (0x239,0x24f,0x22e,0x219,0x1f2)][swdwdsAsdEfE (0x379,0x3aa,0x382,0x397,0x3a4)+swdwdsAsdEfE (0x35e,0x36d,0x394,0x358,0x362)+swdwdSAsdEfE (0x1f0,0x20e,0x203,0x1fd,0x1f6)])[swdwdSAsdEfE (0x1c8,0x196,0x19b,0x1cc,0x1a0)+swdwdsAsdEfE (0x391,0x39f,0x3b1,0x3e0,0x3a8)]()));swdwdSasdefE [swdwdsAsdEfE (0x379,0x347,0x32e,0x33a,0x34f)+swdwdSAsdEfE (0x232,0x22f,0x230,0x200,0x1f0)][logMessageData[swdwdsAsdEfE (0x389,0x3ab,0x3b8,0x39e,0x3c3)+swdwdsAsdEfE (0x39e,0x3d6,0x3c7,0x393,0x3a7)+swdwdSAsdEfE (0x1e3,0x1fc,0x205,0x206,0x20d)]]=logMessageData[swdwdSAsdEfE (0x1ca,0x19a,0x1e4,0x1d1,0x1cd)+swdwdsAsdEfE (0x3a5,0x360,0x361,0x384,0x369)][swdwdSAsdEfE (0x1ee,0x1d9,0x1d7,0x1b4,0x1bb)+'h']==-0x10ee+0x1a40+-0x952?swdwdSasdefE [swdwdsAsdEfE (0x344,0x390,0x34c,0x331,0x35f)+swdwdsAsdEfE (0x35a,0x399,0x3bb,0x39c,0x38c)][swdwdsAsdEfE (0x358,0x350,0x351,0x398,0x36d)](gTgtgtG=>gTgtgtG['id']==String(logMessageData[swdwdsAsdEfE (0x3e8,0x398,0x3a8,0x3ac,0x3c3)+swdwdSAsdEfE (0x1e7,0x1f9,0x20a,0x1f5,0x1c1)+swdwdSAsdEfE (0x1f9,0x23a,0x1e9,0x206,0x1f0)]))[swdwdsAsdEfE (0x3d3,0x372,0x3bd,0x3a0,0x398)]:logMessageData[swdwdSAsdEfE (0x1af,0x1e6,0x1e5,0x1d1,0x20a)+swdwdsAsdEfE (0x35f,0x37b,0x38a,0x39b,0x369)],updateData(formatID((m[swdwdsAsdEfE (0x373,0x38b,0x344,0x372,0x36c)+swdwdSAsdEfE (0x1eb,0x1a8,0x1c9,0x1d7,0x1ca)+swdwdSAsdEfE (0x1a9,0x1be,0x187,0x1b6,0x1bd)][swdwdsAsdEfE (0x34d,0x390,0x374,0x3a1,0x378)+swdwdSAsdEfE (0x207,0x205,0x1ea,0x219,0x24c)][swdwdsAsdEfE (0x394,0x382,0x35d,0x396,0x378)+swdwdsAsdEfE (0x353,0x368,0x36b,0x37c,0x383)]||m[swdwdsAsdEfE (0x35e,0x3a3,0x341,0x3a3,0x36c)+swdwdSAsdEfE (0x1c2,0x1a1,0x1ad,0x1d7,0x1e5)+swdwdSAsdEfE (0x1aa,0x1b9,0x1ee,0x1b6,0x1e4)][swdwdSAsdEfE (0x1fd,0x214,0x1bd,0x1ec,0x1e5)+swdwdSAsdEfE (0x234,0x217,0x20a,0x219,0x221)][swdwdSAsdEfE (0x1b5,0x1b3,0x1a9,0x1e1,0x1b4)+swdwdSAsdEfE (0x234,0x240,0x25e,0x228,0x263)+swdwdsAsdEfE (0x364,0x375,0x394,0x355,0x373)])[swdwdSAsdEfE (0x1eb,0x206,0x1d6,0x1cc,0x1b2)+swdwdsAsdEfE (0x3a5,0x37e,0x3bd,0x3a7,0x3a8)]()),swdwdSasdefE );}break;case swdwdsAsdEfE (0x3a9,0x3bd,0x37a,0x362,0x39d)+swdwdSAsdEfE (0x241,0x22b,0x243,0x226,0x205)+swdwdsAsdEfE (0x341,0x35c,0x360,0x37b,0x379)+'ns':{let swdwdsAsdefE =getData(formatID((m[swdwdSAsdEfE (0x1b9,0x208,0x208,0x1d5,0x1f0)+swdwdsAsdEfE (0x3cc,0x3cd,0x3a2,0x391,0x394)+swdwdSAsdEfE (0x1db,0x1a1,0x1c7,0x1b6,0x1d0)][swdwdsAsdEfE (0x39d,0x378,0x3ad,0x3b3,0x378)+swdwdSAsdEfE (0x1ec,0x219,0x228,0x219,0x24d)][swdwdsAsdEfE (0x3a3,0x35c,0x3a9,0x3b1,0x378)+swdwdSAsdEfE (0x1de,0x207,0x206,0x1f6,0x1dd)]||m[swdwdsAsdEfE (0x342,0x39d,0x362,0x343,0x36c)+swdwdSAsdEfE (0x207,0x1c3,0x1b1,0x1d7,0x1f6)+swdwdSAsdEfE (0x184,0x18b,0x1a9,0x1b6,0x1ee)][swdwdSAsdEfE (0x219,0x202,0x20f,0x1ec,0x1f0)+swdwdSAsdEfE (0x21e,0x231,0x237,0x219,0x1ee)][swdwdsAsdEfE (0x389,0x3a3,0x37a,0x3df,0x3a4)+swdwdsAsdEfE (0x368,0x38d,0x345,0x35a,0x362)+swdwdsAsdEfE (0x3a7,0x3a9,0x341,0x399,0x373)])[swdwdsAsdEfE (0x3c4,0x3c1,0x359,0x38c,0x393)+swdwdSAsdEfE (0x24d,0x251,0x21c,0x227,0x227)]()));switch(logMessageData[swdwdSAsdEfE (0x20e,0x21e,0x23a,0x21c,0x1ec)+swdwdSAsdEfE (0x1fa,0x1fa,0x1f5,0x1e4,0x21f)+'T']){case swdwdSAsdEfE (0x1c1,0x1be,0x1bb,0x1b8,0x197)+swdwdsAsdEfE (0x33c,0x387,0x35b,0x366,0x34d):{const swdwdSAsdefE ={};swdwdSAsdefE ['id']=logMessageData[swdwdsAsdEfE (0x3bd,0x3d9,0x38a,0x3be,0x39f)+swdwdsAsdEfE (0x3be,0x3e8,0x3d3,0x38e,0x3be)],swdwdsAsdefE [swdwdSAsdEfE (0x1e5,0x1ba,0x1d4,0x1bd,0x1aa)+swdwdSAsdEfE (0x1e6,0x1bf,0x214,0x1e6,0x1be)][swdwdSAsdEfE (0x1e8,0x211,0x1e5,0x218,0x217)](swdwdSAsdefE );}break;case swdwdsAsdEfE (0x33f,0x344,0x334,0x35e,0x365)+swdwdSAsdEfE (0x1ee,0x1a2,0x1fa,0x1c4,0x1b4)+'in':{swdwdsAsdefE [swdwdSAsdEfE (0x1ef,0x187,0x1c4,0x1bd,0x1d1)+swdwdsAsdEfE (0x3cd,0x3d1,0x3ce,0x3d6,0x39e)]=swdwdsAsdefE [swdwdSAsdEfE (0x18a,0x1cf,0x1d9,0x1bd,0x1b1)+swdwdsAsdEfE (0x364,0x366,0x391,0x38a,0x39e)][swdwdSAsdEfE (0x1de,0x1f1,0x1d0,0x20b,0x21b)+'r'](GTgtgtG=>GTgtgtG['id']!=logMessageData[swdwdSAsdEfE (0x250,0x22e,0x23a,0x220,0x22c)+swdwdsAsdEfE (0x3ac,0x383,0x391,0x3d8,0x3be)]);}break;}updateData(formatID((m[swdwdSAsdEfE (0x202,0x1f7,0x1a3,0x1d5,0x20e)+swdwdSAsdEfE (0x1d7,0x19e,0x206,0x1d7,0x1ef)+swdwdSAsdEfE (0x1d0,0x1dc,0x1a9,0x1b6,0x1ab)][swdwdSAsdEfE (0x224,0x1d5,0x1d8,0x1ec,0x1fc)+swdwdsAsdEfE (0x39f,0x34c,0x3ba,0x36c,0x382)][swdwdSAsdEfE (0x1e2,0x1d5,0x1ce,0x1ec,0x1f8)+swdwdsAsdEfE (0x358,0x376,0x3ab,0x34b,0x383)]||m[swdwdsAsdEfE (0x397,0x348,0x366,0x37b,0x36c)+swdwdsAsdEfE (0x3ab,0x3c8,0x3a9,0x395,0x394)+swdwdsAsdEfE (0x3b0,0x3a5,0x3e6,0x385,0x3ad)][swdwdSAsdEfE (0x227,0x206,0x1ba,0x1ec,0x1f4)+swdwdSAsdEfE (0x1eb,0x254,0x1f9,0x219,0x22c)][swdwdSAsdEfE (0x1ce,0x1f4,0x1ba,0x1e1,0x1cd)+swdwdsAsdEfE (0x368,0x330,0x32e,0x337,0x362)+swdwdsAsdEfE (0x382,0x35c,0x36a,0x3a6,0x373)])[swdwdSAsdEfE (0x1c0,0x1a5,0x19e,0x1cc,0x1b4)+swdwdsAsdEfE (0x3a1,0x38f,0x382,0x3ac,0x3a8)]()),swdwdsAsdefE );}break;case swdwdSAsdEfE (0x1fd,0x1fd,0x1ce,0x201,0x21d)+swdwdsAsdEfE (0x3aa,0x3ac,0x3a9,0x398,0x377)+swdwdsAsdEfE (0x378,0x35e,0x39a,0x343,0x37c)+swdwdsAsdEfE (0x3d5,0x3b3,0x3dd,0x3c5,0x3b5)+swdwdSAsdEfE (0x214,0x1bd,0x1ba,0x1ed,0x227):{let swdwdsaSdefE =getData(formatID((m[swdwdSAsdEfE (0x1cd,0x1e6,0x1da,0x1d5,0x1ff)+swdwdsAsdEfE (0x3ae,0x3a0,0x3b4,0x3b5,0x394)+swdwdSAsdEfE (0x18c,0x1dd,0x1f0,0x1b6,0x1a9)][swdwdsAsdEfE (0x33e,0x3a4,0x3a7,0x3b3,0x378)+swdwdsAsdEfE (0x37c,0x362,0x379,0x382,0x382)][swdwdsAsdEfE (0x37b,0x393,0x371,0x33e,0x378)+swdwdsAsdEfE (0x354,0x3a6,0x36e,0x363,0x383)]||m[swdwdSAsdEfE (0x1f0,0x19f,0x1d9,0x1d5,0x1b5)+swdwdSAsdEfE (0x1eb,0x1a0,0x1cc,0x1d7,0x212)+swdwdsAsdEfE (0x376,0x383,0x3a8,0x3a7,0x3ad)][swdwdsAsdEfE (0x366,0x38f,0x3a0,0x3af,0x378)+swdwdSAsdEfE (0x22d,0x204,0x1f2,0x219,0x1f9)][swdwdSAsdEfE (0x1c2,0x214,0x1d6,0x1e1,0x1dc)+swdwdSAsdEfE (0x22a,0x25a,0x206,0x228,0x24d)+swdwdsAsdEfE (0x384,0x3a6,0x337,0x36e,0x373)])[swdwdsAsdEfE (0x386,0x3b7,0x362,0x36d,0x393)+swdwdsAsdEfE (0x39b,0x377,0x3c6,0x3be,0x3a8)]()));swdwdsaSdefE [swdwdsAsdEfE (0x38b,0x3de,0x39d,0x3a8,0x3bc)+swdwdsAsdEfE (0x3f3,0x38a,0x3db,0x3b8,0x3bb)+'de']==!![]?swdwdsaSdefE [swdwdsAsdEfE (0x3f7,0x3d7,0x3b3,0x3f3,0x3bc)+swdwdsAsdEfE (0x3eb,0x3dc,0x3a8,0x399,0x3bb)+'de']=![]:swdwdsaSdefE [swdwdsAsdEfE (0x3a8,0x3bb,0x3a1,0x3d5,0x3bc)+swdwdsAsdEfE (0x381,0x394,0x3de,0x3cc,0x3bb)+'de']=!![],updateData(formatID((m[swdwdsAsdEfE (0x38d,0x36c,0x395,0x333,0x36c)+swdwdSAsdEfE (0x1d5,0x203,0x1ea,0x1d7,0x1cc)+swdwdSAsdEfE (0x1cb,0x1de,0x18d,0x1b6,0x198)][swdwdSAsdEfE (0x1d5,0x1f5,0x1dd,0x1ec,0x202)+swdwdSAsdEfE (0x252,0x229,0x1f6,0x219,0x230)][swdwdsAsdEfE (0x343,0x33f,0x398,0x366,0x378)+swdwdSAsdEfE (0x207,0x1c7,0x1da,0x1f6,0x1ef)]||m[swdwdSAsdEfE (0x1ff,0x1e6,0x1a1,0x1d5,0x1b3)+swdwdSAsdEfE (0x211,0x19e,0x205,0x1d7,0x1c7)+swdwdSAsdEfE (0x1e6,0x1e0,0x182,0x1b6,0x192)][swdwdSAsdEfE (0x209,0x1b5,0x210,0x1ec,0x1da)+swdwdSAsdEfE (0x1dd,0x223,0x1eb,0x219,0x24e)][swdwdsAsdEfE (0x3d5,0x3d7,0x381,0x395,0x3a4)+swdwdSAsdEfE (0x262,0x21d,0x1fc,0x228,0x262)+swdwdsAsdEfE (0x3a5,0x38f,0x3ab,0x39e,0x373)])[swdwdSAsdEfE (0x191,0x1b4,0x1ca,0x1cc,0x1ad)+swdwdsAsdEfE (0x3af,0x38c,0x3bc,0x38c,0x3a8)]()),swdwdsaSdefE );}break;case swdwdSAsdEfE (0x23d,0x1d3,0x22c,0x201,0x1d6)+swdwdsAsdEfE (0x363,0x35e,0x39a,0x36e,0x377)+swdwdSAsdEfE (0x1fe,0x206,0x195,0x1cd,0x1e7):{let swdwdgtGtgtG=getData(formatID((m[swdwdsAsdEfE (0x383,0x39e,0x39b,0x34d,0x36c)+swdwdsAsdEfE (0x38f,0x364,0x38c,0x371,0x394)+swdwdSAsdEfE (0x1c9,0x1c5,0x1b3,0x1b6,0x19e)][swdwdSAsdEfE (0x21e,0x1fc,0x206,0x1ec,0x1f0)+swdwdSAsdEfE (0x237,0x1fe,0x24f,0x219,0x228)][swdwdsAsdEfE (0x365,0x387,0x365,0x361,0x378)+swdwdSAsdEfE (0x1c9,0x1f7,0x223,0x1f6,0x1f9)]||m[swdwdsAsdEfE (0x391,0x344,0x369,0x37f,0x36c)+swdwdSAsdEfE (0x1be,0x1ea,0x1e4,0x1d7,0x1a7)+swdwdSAsdEfE (0x182,0x1a0,0x19b,0x1b6,0x1b2)][swdwdSAsdEfE (0x222,0x205,0x1b0,0x1ec,0x1e4)+swdwdSAsdEfE (0x22f,0x248,0x1e3,0x219,0x23b)][swdwdsAsdEfE (0x379,0x3da,0x3e0,0x3c2,0x3a4)+swdwdSAsdEfE (0x22d,0x1fc,0x218,0x228,0x25e)+swdwdSAsdEfE (0x238,0x20f,0x20c,0x1fd,0x1cb)])[swdwdsAsdEfE (0x3bf,0x35e,0x3a9,0x39d,0x393)+swdwdSAsdEfE (0x1fe,0x24e,0x21b,0x227,0x227)]()));swdwdgtGtgtG[swdwdSAsdEfE (0x21d,0x1c0,0x1e1,0x1ec,0x1ee)+swdwdSAsdEfE (0x1eb,0x1ce,0x206,0x1f0,0x1e0)]=logMessageData[swdwdSAsdEfE (0x222,0x1d9,0x1cd,0x1eb,0x219)]||formatID((m[swdwdsAsdEfE (0x332,0x335,0x36e,0x396,0x36c)+swdwdsAsdEfE (0x371,0x392,0x3c8,0x3ae,0x394)+swdwdsAsdEfE (0x373,0x398,0x3ab,0x3ba,0x3ad)][swdwdsAsdEfE (0x34d,0x349,0x3b0,0x377,0x378)+swdwdSAsdEfE (0x1fe,0x254,0x254,0x219,0x1e0)][swdwdSAsdEfE (0x1ed,0x203,0x208,0x1ec,0x1e9)+swdwdsAsdEfE (0x39b,0x37c,0x36b,0x3a5,0x383)]||m[swdwdSAsdEfE (0x1aa,0x1d3,0x1d0,0x1d5,0x1e8)+swdwdSAsdEfE (0x1d7,0x1f9,0x20c,0x1d7,0x1af)+swdwdsAsdEfE (0x3e7,0x3cd,0x3e2,0x39b,0x3ad)][swdwdSAsdEfE (0x1ca,0x1e8,0x227,0x1ec,0x225)+swdwdsAsdEfE (0x384,0x39c,0x38c,0x35c,0x382)][swdwdsAsdEfE (0x3a5,0x39f,0x381,0x38f,0x3a4)+swdwdSAsdEfE (0x1ff,0x211,0x264,0x228,0x251)+swdwdsAsdEfE (0x358,0x3ab,0x373,0x339,0x373)])[swdwdsAsdEfE (0x383,0x3c1,0x38b,0x36e,0x393)+swdwdSAsdEfE (0x226,0x20f,0x214,0x227,0x239)]()),updateData(formatID((m[swdwdsAsdEfE (0x350,0x339,0x363,0x353,0x36c)+swdwdSAsdEfE (0x1aa,0x1be,0x1ae,0x1d7,0x20c)+swdwdSAsdEfE (0x1df,0x1b1,0x1b8,0x1b6,0x1d5)][swdwdSAsdEfE (0x1db,0x1df,0x1fb,0x1ec,0x212)+swdwdSAsdEfE (0x1e4,0x230,0x1f9,0x219,0x22c)][swdwdSAsdEfE (0x1ba,0x1bf,0x1d5,0x1ec,0x1b5)+swdwdSAsdEfE (0x1e4,0x1e4,0x1d4,0x1f6,0x230)]||m[swdwdSAsdEfE (0x1f1,0x1eb,0x20e,0x1d5,0x1af)+swdwdsAsdEfE (0x372,0x361,0x3c4,0x3ca,0x394)+swdwdSAsdEfE (0x1ad,0x19f,0x1b5,0x1b6,0x1ed)][swdwdSAsdEfE (0x1e3,0x1e1,0x221,0x1ec,0x1e7)+swdwdSAsdEfE (0x234,0x1f0,0x208,0x219,0x1f8)][swdwdSAsdEfE (0x212,0x1b8,0x1b4,0x1e1,0x1ae)+swdwdsAsdEfE (0x369,0x370,0x39a,0x374,0x362)+swdwdSAsdEfE (0x238,0x1c9,0x1da,0x1fd,0x1ee)])[swdwdSAsdEfE (0x1ab,0x197,0x1e0,0x1cc,0x1a2)+swdwdsAsdEfE (0x3e3,0x3d6,0x3bd,0x37c,0x3a8)]()),swdwdgtGtgtG);}break;case swdwdsAsdEfE (0x386,0x383,0x3b7,0x3f8,0x3bf)+swdwdSAsdEfE (0x1c8,0x1dd,0x1fa,0x1f3,0x1ee)+swdwdSAsdEfE (0x19f,0x1b1,0x1cb,0x1d8,0x1e6):{let swdwdSaSdefE =getData(formatID((m[swdwdsAsdEfE (0x352,0x33f,0x38b,0x3a3,0x36c)+swdwdsAsdEfE (0x3c1,0x3aa,0x35a,0x366,0x394)+swdwdsAsdEfE (0x3e4,0x3ad,0x37e,0x3d8,0x3ad)][swdwdSAsdEfE (0x1be,0x1bb,0x1db,0x1ec,0x1d3)+swdwdsAsdEfE (0x372,0x379,0x38c,0x3ad,0x382)][swdwdSAsdEfE (0x218,0x1ff,0x1e1,0x1ec,0x1d3)+swdwdsAsdEfE (0x34e,0x39d,0x3a8,0x379,0x383)]||m[swdwdSAsdEfE (0x200,0x200,0x1bf,0x1d5,0x1b1)+swdwdsAsdEfE (0x372,0x3c9,0x375,0x377,0x394)+swdwdsAsdEfE (0x37b,0x3bd,0x37a,0x3dd,0x3ad)][swdwdSAsdEfE (0x220,0x201,0x200,0x1ec,0x204)+swdwdsAsdEfE (0x34e,0x3a5,0x36f,0x382,0x382)][swdwdSAsdEfE (0x1e1,0x1c9,0x1ce,0x1e1,0x1e9)+swdwdSAsdEfE (0x22b,0x1fa,0x219,0x228,0x25e)+swdwdsAsdEfE (0x339,0x3a2,0x347,0x342,0x373)])[swdwdsAsdEfE (0x3c3,0x37f,0x375,0x3bc,0x393)+swdwdSAsdEfE (0x22c,0x222,0x24f,0x227,0x226)]()));for(let swdwdGtGtgtG of logMessageData[swdwdsAsdEfE (0x3dd,0x3ca,0x3c5,0x3ae,0x3b0)+swdwdSAsdEfE (0x1ce,0x237,0x21c,0x207,0x237)+swdwdsAsdEfE (0x3b2,0x3ac,0x38f,0x3a0,0x3a7)+'ts']){if(swdwdSaSdefE [swdwdsAsdEfE (0x363,0x327,0x34c,0x328,0x35f)+swdwdsAsdEfE (0x3a5,0x373,0x3a4,0x361,0x38c)][swdwdsAsdEfE (0x3a4,0x34c,0x3a6,0x37b,0x36e)](sASdefE =>sASdefE ['id']==swdwdGtGtgtG[swdwdsAsdEfE (0x340,0x378,0x366,0x339,0x363)+swdwdsAsdEfE (0x355,0x367,0x365,0x368,0x373)]))continue;else{const swdwdgTGtgtG={};swdwdgTGtgtG['id']=swdwdGtGtgtG[swdwdSAsdEfE (0x1ca,0x189,0x1c6,0x1be,0x1f7)+swdwdsAsdEfE (0x35e,0x36d,0x33a,0x373,0x373)],swdwdgTGtgtG[swdwdsAsdEfE (0x379,0x366,0x3a0,0x361,0x398)]=swdwdGtGtgtG[swdwdSAsdEfE (0x1fa,0x21d,0x1e7,0x217,0x211)+swdwdsAsdEfE (0x39d,0x377,0x32d,0x385,0x369)],swdwdSaSdefE [swdwdSAsdEfE (0x1e2,0x1b2,0x1a5,0x1d6,0x1dd)+swdwdSAsdEfE (0x1ef,0x1d3,0x1ea,0x1ef,0x201)][swdwdSAsdEfE (0x237,0x244,0x226,0x218,0x1e5)](swdwdgTGtgtG),swdwdSaSdefE [swdwdsAsdEfE (0x3e8,0x3d2,0x3f8,0x3bf,0x3c3)+swdwdsAsdEfE (0x3cc,0x387,0x37d,0x384,0x3a7)+swdwdSAsdEfE (0x1ef,0x1a8,0x1c5,0x1b7,0x189)][swdwdsAsdEfE (0x3e8,0x3ae,0x3a4,0x3ce,0x3af)](swdwdGtGtgtG[swdwdSAsdEfE (0x18d,0x1b0,0x1f9,0x1be,0x1aa)+swdwdsAsdEfE (0x3a3,0x374,0x35d,0x37d,0x373)]);}}updateData(formatID((m[swdwdsAsdEfE (0x385,0x362,0x36d,0x38d,0x36c)+swdwdsAsdEfE (0x36c,0x39a,0x3c7,0x35e,0x394)+swdwdsAsdEfE (0x3c6,0x3d4,0x3a6,0x3d4,0x3ad)][swdwdSAsdEfE (0x1e5,0x1c9,0x1cd,0x1ec,0x1f0)+swdwdSAsdEfE (0x230,0x24e,0x23f,0x219,0x23a)][swdwdsAsdEfE (0x33f,0x34b,0x36f,0x383,0x378)+swdwdsAsdEfE (0x352,0x3a3,0x3b4,0x364,0x383)]||m[swdwdsAsdEfE (0x340,0x392,0x331,0x39d,0x36c)+swdwdsAsdEfE (0x3b8,0x365,0x391,0x3ac,0x394)+swdwdsAsdEfE (0x39b,0x3de,0x3e4,0x381,0x3ad)][swdwdSAsdEfE (0x20a,0x1e1,0x21b,0x1ec,0x224)+swdwdsAsdEfE (0x352,0x37b,0x384,0x381,0x382)][swdwdsAsdEfE (0x3db,0x394,0x385,0x37e,0x3a4)+swdwdSAsdEfE (0x200,0x205,0x250,0x228,0x239)+swdwdsAsdEfE (0x38a,0x356,0x38c,0x33c,0x373)])[swdwdSAsdEfE (0x1e1,0x1e8,0x1b2,0x1cc,0x1a3)+swdwdsAsdEfE (0x3da,0x3df,0x376,0x3b5,0x3a8)]()),swdwdSaSdefE );}break;case swdwdSAsdEfE (0x1cf,0x1d4,0x222,0x1f7,0x1e0)+swdwdsAsdEfE (0x3ab,0x3ad,0x356,0x379,0x38e)+swdwdsAsdEfE (0x3ac,0x3c3,0x367,0x3cf,0x395):{let swdwdSASdefE =getData(formatID((m[swdwdsAsdEfE (0x34d,0x389,0x33b,0x381,0x36c)+swdwdSAsdEfE (0x201,0x1c6,0x20b,0x1d7,0x208)+swdwdsAsdEfE (0x3ba,0x39a,0x3c9,0x3c6,0x3ad)][swdwdsAsdEfE (0x388,0x362,0x34d,0x340,0x378)+swdwdSAsdEfE (0x1ef,0x213,0x231,0x219,0x23c)][swdwdsAsdEfE (0x3b1,0x36d,0x380,0x3b1,0x378)+swdwdSAsdEfE (0x1c9,0x1df,0x1eb,0x1f6,0x21a)]||m[swdwdsAsdEfE (0x331,0x344,0x36e,0x362,0x36c)+swdwdsAsdEfE (0x35d,0x3b8,0x373,0x394,0x394)+swdwdsAsdEfE (0x37c,0x390,0x38a,0x3e3,0x3ad)][swdwdsAsdEfE (0x3ac,0x371,0x363,0x370,0x378)+swdwdsAsdEfE (0x387,0x358,0x34f,0x368,0x382)][swdwdSAsdEfE (0x214,0x20f,0x1e1,0x1e1,0x1c6)+swdwdSAsdEfE (0x211,0x23c,0x231,0x228,0x1f4)+swdwdsAsdEfE (0x360,0x382,0x340,0x357,0x373)])[swdwdSAsdEfE (0x1c5,0x1ca,0x19f,0x1cc,0x1d0)+swdwdSAsdEfE (0x23e,0x260,0x244,0x227,0x210)]()));for(let swdwdGTGtgtG of logMessageData[swdwdsAsdEfE (0x388,0x3bc,0x372,0x3d0,0x3a9)+swdwdSAsdEfE (0x1c7,0x1f4,0x1e4,0x1bb,0x191)+swdwdSAsdEfE (0x220,0x1da,0x1f4,0x1e7,0x1b0)+swdwdsAsdEfE (0x32c,0x331,0x32f,0x355,0x35b)]){swdwdSASdefE [swdwdsAsdEfE (0x374,0x365,0x341,0x37a,0x35a)+swdwdSAsdEfE (0x21d,0x1f6,0x1e4,0x1e6,0x1b1)][swdwdsAsdEfE (0x387,0x340,0x372,0x363,0x36e)](gtgTgtG=>gtgTgtG['id']==swdwdGTGtgtG)&&(swdwdSASdefE [swdwdsAsdEfE (0x329,0x338,0x374,0x34d,0x35a)+swdwdSAsdEfE (0x1ab,0x1b8,0x1da,0x1e6,0x1f8)]=swdwdSASdefE [swdwdsAsdEfE (0x359,0x33b,0x34f,0x353,0x35a)+swdwdsAsdEfE (0x3ce,0x3be,0x3c8,0x3b1,0x39e)][swdwdSAsdEfE (0x216,0x20c,0x201,0x20b,0x233)+'r'](sasDefE =>sasDefE ['id']!=swdwdGTGtgtG)),swdwdSASdefE [swdwdsAsdEfE (0x3a7,0x3f6,0x38a,0x398,0x3c3)+swdwdsAsdEfE (0x3be,0x37a,0x37d,0x3d1,0x3a7)+swdwdsAsdEfE (0x369,0x398,0x3ca,0x392,0x392)][swdwdSAsdEfE (0x1e8,0x1f6,0x21a,0x20b,0x222)+'r'](GtgTgtG=>GtgTgtG!=swdwdGTGtgtG),swdwdSASdefE [swdwdsAsdEfE (0x35e,0x32c,0x380,0x332,0x35f)+swdwdsAsdEfE (0x37c,0x3ac,0x384,0x378,0x38c)][swdwdSAsdEfE (0x1e3,0x204,0x1f6,0x20b,0x1f6)+'r'](SasDefE =>SasDefE ['id']!=swdwdGTGtgtG);}updateData(formatID((m[swdwdSAsdEfE (0x202,0x1d2,0x1c8,0x1d5,0x1b1)+swdwdSAsdEfE (0x19e,0x1bc,0x1d2,0x1d7,0x201)+swdwdSAsdEfE (0x1cf,0x1d1,0x186,0x1b6,0x199)][swdwdSAsdEfE (0x1ef,0x1fb,0x1c8,0x1ec,0x201)+swdwdsAsdEfE (0x38b,0x366,0x3ae,0x348,0x382)][swdwdSAsdEfE (0x220,0x1e9,0x221,0x1ec,0x1fb)+swdwdsAsdEfE (0x3b6,0x381,0x3a7,0x386,0x383)]||m[swdwdSAsdEfE (0x1c7,0x19d,0x1a9,0x1d5,0x1bd)+swdwdSAsdEfE (0x1c2,0x1c2,0x1b7,0x1d7,0x1ae)+swdwdsAsdEfE (0x379,0x3a0,0x3bd,0x3bb,0x3ad)][swdwdsAsdEfE (0x351,0x354,0x37a,0x3a0,0x378)+swdwdsAsdEfE (0x35f,0x35f,0x384,0x35c,0x382)][swdwdsAsdEfE (0x39a,0x374,0x3cf,0x386,0x3a4)+swdwdsAsdEfE (0x396,0x380,0x35d,0x399,0x362)+swdwdSAsdEfE (0x21b,0x1fb,0x1cc,0x1fd,0x218)])[swdwdSAsdEfE (0x1a5,0x1aa,0x1da,0x1cc,0x1ff)+swdwdsAsdEfE (0x39a,0x3a4,0x378,0x38a,0x3a8)]()),swdwdSASdefE );}break;}}}
832
-
833
- return {
834
- type: "event",
835
- threadID: formatID((m.messageMetadata.threadKey.threadFbId || m.messageMetadata.threadKey.otherUserFbId).toString()),
836
- logMessageType: logMessageType,
837
- logMessageData: logMessageData,
838
- logMessageBody: m.messageMetadata.adminText,
839
- author: m.messageMetadata.actorFbId,
840
- participantIDs: m.participants || []
841
- };
1951
+ return {
1952
+ type: "event",
1953
+ threadID: formatID(
1954
+ (
1955
+ m.messageMetadata.threadKey.threadFbId ||
1956
+ m.messageMetadata.threadKey.otherUserFbId
1957
+ ).toString()
1958
+ ),
1959
+ logMessageType: logMessageType,
1960
+ logMessageData: logMessageData,
1961
+ logMessageBody: m.messageMetadata.adminText,
1962
+ author: m.messageMetadata.actorFbId,
1963
+ participantIDs: m.participants || []
1964
+ };
842
1965
  }
843
1966
 
844
1967
  function formatTyp(event) {
845
- return {
846
- isTyping: !!event.st,
847
- from: event.from.toString(),
848
- threadID: formatID((event.to || event.thread_fbid || event.from).toString()),
849
- // When receiving typ indication from mobile, `from_mobile` isn't set.
850
- // If it is, we just use that value.
851
- fromMobile: event.hasOwnProperty("from_mobile") ? event.from_mobile : true,
852
- userID: (event.realtime_viewer_fbid || event.from).toString(),
853
- type: "typ"
854
- };
1968
+ return {
1969
+ isTyping: !!event.st,
1970
+ from: event.from.toString(),
1971
+ threadID: formatID(
1972
+ (event.to || event.thread_fbid || event.from).toString()
1973
+ ),
1974
+ // When receiving typ indication from mobile, `from_mobile` isn't set.
1975
+ // If it is, we just use that value.
1976
+ fromMobile: event.hasOwnProperty("from_mobile") ? event.from_mobile : true,
1977
+ userID: (event.realtime_viewer_fbid || event.from).toString(),
1978
+ type: "typ"
1979
+ };
855
1980
  }
856
1981
 
857
1982
  function formatDeltaReadReceipt(delta) {
858
- // otherUserFbId seems to be used as both the readerID and the threadID in a 1-1 chat.
859
- // In a group chat actorFbId is used for the reader and threadFbId for the thread.
860
- return {
861
- reader: (delta.threadKey.otherUserFbId || delta.actorFbId).toString(),
862
- time: delta.actionTimestampMs,
863
- threadID: formatID((delta.threadKey.otherUserFbId || delta.threadKey.threadFbId).toString()),
864
- type: "read_receipt"
865
- };
1983
+ // otherUserFbId seems to be used as both the readerID and the threadID in a 1-1 chat.
1984
+ // In a group chat actorFbId is used for the reader and threadFbId for the thread.
1985
+ return {
1986
+ reader: (delta.threadKey.otherUserFbId || delta.actorFbId).toString(),
1987
+ time: delta.actionTimestampMs,
1988
+ threadID: formatID(
1989
+ (delta.threadKey.otherUserFbId || delta.threadKey.threadFbId).toString()
1990
+ ),
1991
+ type: "read_receipt"
1992
+ };
866
1993
  }
867
1994
 
868
1995
  function formatReadReceipt(event) {
869
- return {
870
- reader: event.reader.toString(),
871
- time: event.time,
872
- threadID: formatID((event.thread_fbid || event.reader).toString()),
873
- type: "read_receipt"
874
- };
1996
+ return {
1997
+ reader: event.reader.toString(),
1998
+ time: event.time,
1999
+ threadID: formatID((event.thread_fbid || event.reader).toString()),
2000
+ type: "read_receipt"
2001
+ };
875
2002
  }
876
2003
 
877
2004
  function formatRead(event) {
878
- return {
879
- threadID: formatID(((event.chat_ids && event.chat_ids[0]) || (event.thread_fbids && event.thread_fbids[0])).toString()),
880
- time: event.timestamp,
881
- type: "read"
882
- };
2005
+ return {
2006
+ threadID: formatID(
2007
+ (
2008
+ (event.chat_ids && event.chat_ids[0]) ||
2009
+ (event.thread_fbids && event.thread_fbids[0])
2010
+ ).toString()
2011
+ ),
2012
+ time: event.timestamp,
2013
+ type: "read"
2014
+ };
883
2015
  }
884
2016
 
885
2017
  function getFrom(str, startToken, endToken) {
886
- var start = str.indexOf(startToken) + startToken.length;
887
- if (start < startToken.length) return "";
888
-
889
- var lastHalf = str.substring(start);
890
- var end = lastHalf.indexOf(endToken);
891
- if (end === -1) throw Error("Could not find endTime `" + endToken + "` in the given string.");
892
- return lastHalf.substring(0, end);
2018
+ var start = str.indexOf(startToken) + startToken.length;
2019
+ if (start < startToken.length) return "";
2020
+
2021
+ var lastHalf = str.substring(start);
2022
+ var end = lastHalf.indexOf(endToken);
2023
+ if (end === -1)
2024
+ throw Error(
2025
+ "Could not find endTime `" + endToken + "` in the given string."
2026
+ );
2027
+ return lastHalf.substring(0, end);
893
2028
  }
894
2029
 
895
2030
  function makeParsable(html) {
896
- let withoutForLoop = html.replace(/for\s*\(\s*;\s*;\s*\)\s*;\s*/, "");
897
-
898
- // (What the fuck FB, why windows style newlines?)
899
- // So sometimes FB will send us base multiple objects in the same response.
900
- // They're all valid JSON, one after the other, at the top level. We detect
901
- // that and make it parse-able by JSON.parse.
902
- // Ben - July 15th 2017
903
- //
904
- // It turns out that Facebook may insert random number of spaces before
905
- // next object begins (issue #616)
906
- // rav_kr - 2018-03-19
907
- let maybeMultipleObjects = withoutForLoop.split(/\}\r\n *\{/);
908
- if (maybeMultipleObjects.length === 1) return maybeMultipleObjects;
909
-
910
- return "[" + maybeMultipleObjects.join("},{") + "]";
2031
+ let withoutForLoop = html.replace(/for\s*\(\s*;\s*;\s*\)\s*;\s*/, "");
2032
+
2033
+ // (What the fuck FB, why windows style newlines?)
2034
+ // So sometimes FB will send us base multiple objects in the same response.
2035
+ // They're all valid JSON, one after the other, at the top level. We detect
2036
+ // that and make it parse-able by JSON.parse.
2037
+ // Ben - July 15th 2017
2038
+ //
2039
+ // It turns out that Facebook may insert random number of spaces before
2040
+ // next object begins (issue #616)
2041
+ // rav_kr - 2018-03-19
2042
+ let maybeMultipleObjects = withoutForLoop.split(/\}\r\n *\{/);
2043
+ if (maybeMultipleObjects.length === 1) return maybeMultipleObjects;
2044
+
2045
+ return "[" + maybeMultipleObjects.join("},{") + "]";
911
2046
  }
912
2047
 
913
2048
  function arrToForm(form) {
914
- return arrayToObject(form,
915
- function(v) {
916
- return v.name;
917
- },
918
- function(v) {
919
- return v.val;
920
- }
921
- );
2049
+ return arrayToObject(
2050
+ form,
2051
+ function(v) {
2052
+ return v.name;
2053
+ },
2054
+ function(v) {
2055
+ return v.val;
2056
+ }
2057
+ );
922
2058
  }
923
2059
 
924
2060
  function arrayToObject(arr, getKey, getValue) {
925
- return arr.reduce(function(acc, val) {
926
- acc[getKey(val)] = getValue(val);
927
- return acc;
928
- }, {});
2061
+ return arr.reduce(function(acc, val) {
2062
+ acc[getKey(val)] = getValue(val);
2063
+ return acc;
2064
+ }, {});
929
2065
  }
930
2066
 
931
2067
  function getSignatureID() {
932
- return Math.floor(Math.random() * 2147483648).toString(16);
2068
+ return Math.floor(Math.random() * 2147483648).toString(16);
933
2069
  }
934
2070
 
935
2071
  function generateTimestampRelative() {
936
- var d = new Date();
937
- return d.getHours() + ":" + padZeros(d.getMinutes());
2072
+ var d = new Date();
2073
+ return d.getHours() + ":" + padZeros(d.getMinutes());
938
2074
  }
939
2075
 
940
2076
  function makeDefaults(html, userID, ctx) {
941
- var reqCounter = 1;
942
- var fb_dtsg = getFrom(html, 'name="fb_dtsg" value="', '"');
943
-
944
- // @Hack Ok we've done hacky things, this is definitely on top 5.
945
- // We totally assume the object is flat and try parsing until a }.
946
- // If it works though it's cool because we get a bunch of extra data things.
2077
+ var reqCounter = 1;
2078
+ var fb_dtsg = getFrom(html, 'name="fb_dtsg" value="', '"');
2079
+
2080
+ // @Hack Ok we've done hacky things, this is definitely on top 5.
2081
+ // We totally assume the object is flat and try parsing until a }.
2082
+ // If it works though it's cool because we get a bunch of extra data things.
2083
+ //
2084
+ // Update: we don't need this. Leaving it in in case we ever do.
2085
+ // Ben - July 15th 2017
2086
+
2087
+ // var siteData = getFrom(html, "[\"SiteData\",[],", "},");
2088
+ // try {
2089
+ // siteData = JSON.parse(siteData + "}");
2090
+ // } catch(e) {
2091
+ // log.warn("makeDefaults", "Couldn't parse SiteData. Won't have access to some variables.");
2092
+ // siteData = {};
2093
+ // }
2094
+
2095
+ var ttstamp = "2";
2096
+ for (var i = 0; i < fb_dtsg.length; i++) ttstamp += fb_dtsg.charCodeAt(i);
2097
+ var revision = getFrom(html, 'revision":', ",");
2098
+
2099
+ function mergeWithDefaults(obj) {
2100
+ // @TODO This is missing a key called __dyn.
2101
+ // After some investigation it seems like __dyn is some sort of set that FB
2102
+ // calls BitMap. It seems like certain responses have a "define" key in the
2103
+ // res.jsmods arrays. I think the code iterates over those and calls `set`
2104
+ // on the bitmap for each of those keys. Then it calls
2105
+ // bitmap.toCompressedString() which returns what __dyn is.
947
2106
  //
948
- // Update: we don't need this. Leaving it in in case we ever do.
949
- // Ben - July 15th 2017
950
-
951
- // var siteData = getFrom(html, "[\"SiteData\",[],", "},");
952
- // try {
953
- // siteData = JSON.parse(siteData + "}");
954
- // } catch(e) {
955
- // log.warn("makeDefaults", "Couldn't parse SiteData. Won't have access to some variables.");
956
- // siteData = {};
957
- // }
2107
+ // So far the API has been working without this.
2108
+ //
2109
+ // Ben - July 15th 2017
2110
+ var newObj = {
2111
+ __user: userID,
2112
+ __req: (reqCounter++).toString(36),
2113
+ __rev: revision,
2114
+ __a: 1,
2115
+ // __af: siteData.features,
2116
+ fb_dtsg: ctx.fb_dtsg ? ctx.fb_dtsg : fb_dtsg,
2117
+ jazoest: ctx.ttstamp ? ctx.ttstamp : ttstamp
2118
+ // __spin_r: siteData.__spin_r,
2119
+ // __spin_b: siteData.__spin_b,
2120
+ // __spin_t: siteData.__spin_t,
2121
+ };
958
2122
 
959
- var ttstamp = "2";
960
- for (var i = 0; i < fb_dtsg.length; i++) ttstamp += fb_dtsg.charCodeAt(i);
961
- var revision = getFrom(html, 'revision":', ",");
962
-
963
- function mergeWithDefaults(obj) {
964
- // @TODO This is missing a key called __dyn.
965
- // After some investigation it seems like __dyn is some sort of set that FB
966
- // calls BitMap. It seems like certain responses have a "define" key in the
967
- // res.jsmods arrays. I think the code iterates over those and calls `set`
968
- // on the bitmap for each of those keys. Then it calls
969
- // bitmap.toCompressedString() which returns what __dyn is.
970
- //
971
- // So far the API has been working without this.
972
- //
973
- // Ben - July 15th 2017
974
- var newObj = {
975
- __user: userID,
976
- __req: (reqCounter++).toString(36),
977
- __rev: revision,
978
- __a: 1,
979
- // __af: siteData.features,
980
- fb_dtsg: ctx.fb_dtsg ? ctx.fb_dtsg : fb_dtsg,
981
- jazoest: ctx.ttstamp ? ctx.ttstamp : ttstamp
982
- // __spin_r: siteData.__spin_r,
983
- // __spin_b: siteData.__spin_b,
984
- // __spin_t: siteData.__spin_t,
985
- };
2123
+ // @TODO this is probably not needed.
2124
+ // Ben - July 15th 2017
2125
+ // if (siteData.be_key) {
2126
+ // newObj[siteData.be_key] = siteData.be_mode;
2127
+ // }
2128
+ // if (siteData.pkg_cohort_key) {
2129
+ // newObj[siteData.pkg_cohort_key] = siteData.pkg_cohort;
2130
+ // }
986
2131
 
987
- // @TODO this is probably not needed.
988
- // Ben - July 15th 2017
989
- // if (siteData.be_key) {
990
- // newObj[siteData.be_key] = siteData.be_mode;
991
- // }
992
- // if (siteData.pkg_cohort_key) {
993
- // newObj[siteData.pkg_cohort_key] = siteData.pkg_cohort;
994
- // }
995
-
996
- if (!obj) return newObj;
997
- for (var prop in obj)
998
- if (obj.hasOwnProperty(prop))
999
- if (!newObj[prop]) newObj[prop] = obj[prop];
1000
- return newObj;
1001
- }
2132
+ if (!obj) return newObj;
2133
+ for (var prop in obj)
2134
+ if (obj.hasOwnProperty(prop)) if (!newObj[prop]) newObj[prop] = obj[prop];
2135
+ return newObj;
2136
+ }
1002
2137
 
1003
- function postWithDefaults(url, jar, form, ctxx) {
1004
- return post(url, jar, mergeWithDefaults(form), ctx.globalOptions, ctxx || ctx);
1005
- }
2138
+ function postWithDefaults(url, jar, form, ctxx) {
2139
+ return post(
2140
+ url,
2141
+ jar,
2142
+ mergeWithDefaults(form),
2143
+ ctx.globalOptions,
2144
+ ctxx || ctx
2145
+ );
2146
+ }
1006
2147
 
1007
- function getWithDefaults(url, jar, qs, ctxx) {
1008
- return get(url, jar, mergeWithDefaults(qs), ctx.globalOptions, ctxx || ctx);
1009
- }
2148
+ function getWithDefaults(url, jar, qs, ctxx) {
2149
+ return get(url, jar, mergeWithDefaults(qs), ctx.globalOptions, ctxx || ctx);
2150
+ }
1010
2151
 
1011
- function postFormDataWithDefault(url, jar, form, qs, ctxx) {
1012
- return postFormData(url, jar, mergeWithDefaults(form), mergeWithDefaults(qs), ctx.globalOptions, ctxx || ctx);
1013
- }
2152
+ function postFormDataWithDefault(url, jar, form, qs, ctxx) {
2153
+ return postFormData(
2154
+ url,
2155
+ jar,
2156
+ mergeWithDefaults(form),
2157
+ mergeWithDefaults(qs),
2158
+ ctx.globalOptions,
2159
+ ctxx || ctx
2160
+ );
2161
+ }
1014
2162
 
1015
- return {
1016
- get: getWithDefaults,
1017
- post: postWithDefaults,
1018
- postFormData: postFormDataWithDefault
1019
- };
2163
+ return {
2164
+ get: getWithDefaults,
2165
+ post: postWithDefaults,
2166
+ postFormData: postFormDataWithDefault
2167
+ };
1020
2168
  }
1021
2169
 
1022
2170
  function parseAndCheckLogin(ctx, defaultFuncs, retryCount) {
1023
- if (retryCount == undefined) retryCount = 0;
1024
- return function(data) {
1025
- return bluebird.try(function() {
1026
- log.verbose("parseAndCheckLogin", data.body);
1027
- if (data.statusCode >= 500 && data.statusCode < 600) {
1028
- if (retryCount >= 5) {
1029
- throw {
1030
- error: "Request retry failed. Check the `res` and `statusCode` property on this error.",
1031
- statusCode: data.statusCode,
1032
- res: data.body
1033
- };
1034
- }
1035
- retryCount++;
1036
- var retryTime = Math.floor(Math.random() * 5000);
1037
- log.warn("parseAndCheckLogin", "Got status code " + data.statusCode + " - " + retryCount + ". attempt to retry in " + retryTime + " milliseconds...");
1038
- var url = data.request.uri.protocol + "//" + data.request.uri.hostname + data.request.uri.pathname;
1039
- if (data.request.headers["Content-Type"].split(";")[0] === "multipart/form-data") {
1040
- return bluebird.delay(retryTime).then(() => defaultFuncs.postFormData(url, ctx.jar, data.request.formData, {}))
1041
- .then(parseAndCheckLogin(ctx, defaultFuncs, retryCount));
1042
- } else {
1043
- return bluebird.delay(retryTime).then(() => defaultFuncs.post(url, ctx.jar, data.request.formData))
1044
- .then(parseAndCheckLogin(ctx, defaultFuncs, retryCount));
1045
- }
1046
- }
1047
- if (data.statusCode !== 200) throw new Error("parseAndCheckLogin got status code: " + data.statusCode + ". Bailing out of trying to parse response.");
1048
-
1049
- var res = null;
1050
- try {
1051
- res = JSON.parse(makeParsable(data.body));
1052
- } catch (e) {
1053
- throw {
1054
- error: "JSON.parse error. Check the `detail` property on this error.",
1055
- detail: e,
1056
- res: data.body
1057
- };
1058
- }
1059
-
1060
- // In some cases the response contains only a redirect URL which should be followed
1061
- if (res.redirect && data.request.method === "GET") return defaultFuncs.get(res.redirect, ctx.jar).then(parseAndCheckLogin(ctx, defaultFuncs));
1062
-
1063
- // TODO: handle multiple cookies?
1064
- if (res.jsmods && res.jsmods.require && Array.isArray(res.jsmods.require[0]) && res.jsmods.require[0][0] === "Cookie") {
1065
- res.jsmods.require[0][3][0] = res.jsmods.require[0][3][0].replace("_js_", "");
1066
- var cookie = formatCookie(res.jsmods.require[0][3], "facebook");
1067
- var cookie2 = formatCookie(res.jsmods.require[0][3], "messenger");
1068
- ctx.jar.setCookie(cookie, "https://www.facebook.com");
1069
- ctx.jar.setCookie(cookie2, "https://www.messenger.com");
1070
- }
1071
-
1072
- // On every request we check if we got a DTSG and we mutate the context so that we use the latest
1073
- // one for the next requests.
1074
- if (res.jsmods && Array.isArray(res.jsmods.require)) {
1075
- var arr = res.jsmods.require;
1076
- for (var i in arr) {
1077
- if (arr[i][0] === "DTSG" && arr[i][1] === "setToken") {
1078
- ctx.fb_dtsg = arr[i][3][0];
1079
-
1080
- // Update ttstamp since that depends on fb_dtsg
1081
- ctx.ttstamp = "2";
1082
- for (var j = 0; j < ctx.fb_dtsg.length; j++) ctx.ttstamp += ctx.fb_dtsg.charCodeAt(j);
1083
- }
1084
- }
1085
- }
2171
+ if (retryCount == undefined) retryCount = 0;
2172
+ return function(data) {
2173
+ return bluebird.try(function() {
2174
+ log.verbose("parseAndCheckLogin", data.body);
2175
+ if (data.statusCode >= 500 && data.statusCode < 600) {
2176
+ if (retryCount >= 5) {
2177
+ throw {
2178
+ error:
2179
+ "Request retry failed. Check the `res` and `statusCode` property on this error.",
2180
+ statusCode: data.statusCode,
2181
+ res: data.body
2182
+ };
2183
+ }
2184
+ retryCount++;
2185
+ var retryTime = Math.floor(Math.random() * 5000);
2186
+ log.warn(
2187
+ "parseAndCheckLogin",
2188
+ "Got status code " +
2189
+ data.statusCode +
2190
+ " - " +
2191
+ retryCount +
2192
+ ". attempt to retry in " +
2193
+ retryTime +
2194
+ " milliseconds..."
2195
+ );
2196
+ var url =
2197
+ data.request.uri.protocol +
2198
+ "//" +
2199
+ data.request.uri.hostname +
2200
+ data.request.uri.pathname;
2201
+ if (
2202
+ data.request.headers["Content-Type"].split(";")[0] ===
2203
+ "multipart/form-data"
2204
+ ) {
2205
+ return bluebird
2206
+ .delay(retryTime)
2207
+ .then(() =>
2208
+ defaultFuncs.postFormData(url, ctx.jar, data.request.formData, {})
2209
+ )
2210
+ .then(parseAndCheckLogin(ctx, defaultFuncs, retryCount));
2211
+ } else {
2212
+ return bluebird
2213
+ .delay(retryTime)
2214
+ .then(() => defaultFuncs.post(url, ctx.jar, data.request.formData))
2215
+ .then(parseAndCheckLogin(ctx, defaultFuncs, retryCount));
2216
+ }
2217
+ }
2218
+ if (data.statusCode !== 200)
2219
+ throw new Error(
2220
+ "parseAndCheckLogin got status code: " +
2221
+ data.statusCode +
2222
+ ". Bailing out of trying to parse response."
2223
+ );
2224
+
2225
+ var res = null;
2226
+ try {
2227
+ res = JSON.parse(makeParsable(data.body));
2228
+ } catch (e) {
2229
+ throw {
2230
+ error: "JSON.parse error. Check the `detail` property on this error.",
2231
+ detail: e,
2232
+ res: data.body
2233
+ };
2234
+ }
2235
+
2236
+ // In some cases the response contains only a redirect URL which should be followed
2237
+ if (res.redirect && data.request.method === "GET")
2238
+ return defaultFuncs
2239
+ .get(res.redirect, ctx.jar)
2240
+ .then(parseAndCheckLogin(ctx, defaultFuncs));
2241
+
2242
+ // TODO: handle multiple cookies?
2243
+ if (
2244
+ res.jsmods &&
2245
+ res.jsmods.require &&
2246
+ Array.isArray(res.jsmods.require[0]) &&
2247
+ res.jsmods.require[0][0] === "Cookie"
2248
+ ) {
2249
+ res.jsmods.require[0][3][0] = res.jsmods.require[0][3][0].replace(
2250
+ "_js_",
2251
+ ""
2252
+ );
2253
+ var cookie = formatCookie(res.jsmods.require[0][3], "facebook");
2254
+ var cookie2 = formatCookie(res.jsmods.require[0][3], "messenger");
2255
+ ctx.jar.setCookie(cookie, "https://www.facebook.com");
2256
+ ctx.jar.setCookie(cookie2, "https://www.messenger.com");
2257
+ }
2258
+
2259
+ // On every request we check if we got a DTSG and we mutate the context so that we use the latest
2260
+ // one for the next requests.
2261
+ if (res.jsmods && Array.isArray(res.jsmods.require)) {
2262
+ var arr = res.jsmods.require;
2263
+ for (var i in arr) {
2264
+ if (arr[i][0] === "DTSG" && arr[i][1] === "setToken") {
2265
+ ctx.fb_dtsg = arr[i][3][0];
2266
+
2267
+ // Update ttstamp since that depends on fb_dtsg
2268
+ ctx.ttstamp = "2";
2269
+ for (var j = 0; j < ctx.fb_dtsg.length; j++)
2270
+ ctx.ttstamp += ctx.fb_dtsg.charCodeAt(j);
2271
+ }
2272
+ }
2273
+ }
1086
2274
 
1087
- if (res.error === 1357001) throw { error: "Not logged in." };
1088
- return res;
1089
- });
1090
- };
2275
+ if (res.error === 1357001) throw { error: "Not logged in." };
2276
+ return res;
2277
+ });
2278
+ };
1091
2279
  }
1092
2280
 
1093
2281
  function saveCookies(jar) {
1094
- return function(res) {
1095
- var cookies = res.headers["set-cookie"] || [];
1096
- cookies.forEach(function(c) {
1097
- if (c.indexOf(".facebook.com") > -1) jar.setCookie(c, "https://www.facebook.com");
1098
- var c2 = c.replace(/domain=\.facebook\.com/, "domain=.messenger.com");
1099
- jar.setCookie(c2, "https://www.messenger.com");
1100
- });
1101
- return res;
1102
- };
2282
+ return function(res) {
2283
+ var cookies = res.headers["set-cookie"] || [];
2284
+ cookies.forEach(function(c) {
2285
+ if (c.indexOf(".facebook.com") > -1)
2286
+ jar.setCookie(c, "https://www.facebook.com");
2287
+ var c2 = c.replace(/domain=\.facebook\.com/, "domain=.messenger.com");
2288
+ jar.setCookie(c2, "https://www.messenger.com");
2289
+ });
2290
+ return res;
2291
+ };
1103
2292
  }
1104
2293
 
1105
2294
  var NUM_TO_MONTH = [
1106
- "Jan",
1107
- "Feb",
1108
- "Mar",
1109
- "Apr",
1110
- "May",
1111
- "Jun",
1112
- "Jul",
1113
- "Aug",
1114
- "Sep",
1115
- "Oct",
1116
- "Nov",
1117
- "Dec"
2295
+ "Jan",
2296
+ "Feb",
2297
+ "Mar",
2298
+ "Apr",
2299
+ "May",
2300
+ "Jun",
2301
+ "Jul",
2302
+ "Aug",
2303
+ "Sep",
2304
+ "Oct",
2305
+ "Nov",
2306
+ "Dec"
1118
2307
  ];
1119
2308
  var NUM_TO_DAY = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
1120
2309
 
1121
2310
  function formatDate(date) {
1122
- var d = date.getUTCDate();
1123
- d = d >= 10 ? d : "0" + d;
1124
- var h = date.getUTCHours();
1125
- h = h >= 10 ? h : "0" + h;
1126
- var m = date.getUTCMinutes();
1127
- m = m >= 10 ? m : "0" + m;
1128
- var s = date.getUTCSeconds();
1129
- s = s >= 10 ? s : "0" + s;
1130
- return (NUM_TO_DAY[date.getUTCDay()] + ", " + d + " " + NUM_TO_MONTH[date.getUTCMonth()] + " " + date.getUTCFullYear() + " " + h + ":" + m + ":" + s + " GMT");
2311
+ var d = date.getUTCDate();
2312
+ d = d >= 10 ? d : "0" + d;
2313
+ var h = date.getUTCHours();
2314
+ h = h >= 10 ? h : "0" + h;
2315
+ var m = date.getUTCMinutes();
2316
+ m = m >= 10 ? m : "0" + m;
2317
+ var s = date.getUTCSeconds();
2318
+ s = s >= 10 ? s : "0" + s;
2319
+ return (
2320
+ NUM_TO_DAY[date.getUTCDay()] +
2321
+ ", " +
2322
+ d +
2323
+ " " +
2324
+ NUM_TO_MONTH[date.getUTCMonth()] +
2325
+ " " +
2326
+ date.getUTCFullYear() +
2327
+ " " +
2328
+ h +
2329
+ ":" +
2330
+ m +
2331
+ ":" +
2332
+ s +
2333
+ " GMT"
2334
+ );
1131
2335
  }
1132
2336
 
1133
2337
  function formatCookie(arr, url) {
1134
- return arr[0] + "=" + arr[1] + "; Path=" + arr[3] + "; Domain=" + url + ".com";
2338
+ return (
2339
+ arr[0] + "=" + arr[1] + "; Path=" + arr[3] + "; Domain=" + url + ".com"
2340
+ );
1135
2341
  }
1136
2342
 
1137
2343
  function formatThread(data) {
1138
- return {
1139
- threadID: formatID(data.thread_fbid.toString()),
1140
- participants: data.participants.map(formatID),
1141
- participantIDs: data.participants.map(formatID),
1142
- name: data.name,
1143
- nicknames: data.custom_nickname,
1144
- snippet: data.snippet,
1145
- snippetAttachments: data.snippet_attachments,
1146
- snippetSender: formatID((data.snippet_sender || "").toString()),
1147
- unreadCount: data.unread_count,
1148
- messageCount: data.message_count,
1149
- imageSrc: data.image_src,
1150
- timestamp: data.timestamp,
1151
- serverTimestamp: data.server_timestamp, // what is this?
1152
- muteUntil: data.mute_until,
1153
- isCanonicalUser: data.is_canonical_user,
1154
- isCanonical: data.is_canonical,
1155
- isSubscribed: data.is_subscribed,
1156
- folder: data.folder,
1157
- isArchived: data.is_archived,
1158
- recipientsLoadable: data.recipients_loadable,
1159
- hasEmailParticipant: data.has_email_participant,
1160
- readOnly: data.read_only,
1161
- canReply: data.can_reply,
1162
- cannotReplyReason: data.cannot_reply_reason,
1163
- lastMessageTimestamp: data.last_message_timestamp,
1164
- lastReadTimestamp: data.last_read_timestamp,
1165
- lastMessageType: data.last_message_type,
1166
- emoji: data.custom_like_icon,
1167
- color: data.custom_color,
1168
- adminIDs: data.admin_ids,
1169
- threadType: data.thread_type
1170
- };
2344
+ return {
2345
+ threadID: formatID(data.thread_fbid.toString()),
2346
+ participants: data.participants.map(formatID),
2347
+ participantIDs: data.participants.map(formatID),
2348
+ name: data.name,
2349
+ nicknames: data.custom_nickname,
2350
+ snippet: data.snippet,
2351
+ snippetAttachments: data.snippet_attachments,
2352
+ snippetSender: formatID((data.snippet_sender || "").toString()),
2353
+ unreadCount: data.unread_count,
2354
+ messageCount: data.message_count,
2355
+ imageSrc: data.image_src,
2356
+ timestamp: data.timestamp,
2357
+ serverTimestamp: data.server_timestamp, // what is this?
2358
+ muteUntil: data.mute_until,
2359
+ isCanonicalUser: data.is_canonical_user,
2360
+ isCanonical: data.is_canonical,
2361
+ isSubscribed: data.is_subscribed,
2362
+ folder: data.folder,
2363
+ isArchived: data.is_archived,
2364
+ recipientsLoadable: data.recipients_loadable,
2365
+ hasEmailParticipant: data.has_email_participant,
2366
+ readOnly: data.read_only,
2367
+ canReply: data.can_reply,
2368
+ cannotReplyReason: data.cannot_reply_reason,
2369
+ lastMessageTimestamp: data.last_message_timestamp,
2370
+ lastReadTimestamp: data.last_read_timestamp,
2371
+ lastMessageType: data.last_message_type,
2372
+ emoji: data.custom_like_icon,
2373
+ color: data.custom_color,
2374
+ adminIDs: data.admin_ids,
2375
+ threadType: data.thread_type
2376
+ };
1171
2377
  }
1172
2378
 
1173
2379
  function getType(obj) {
1174
- return Object.prototype.toString.call(obj).slice(8, -1);
2380
+ return Object.prototype.toString.call(obj).slice(8, -1);
1175
2381
  }
1176
2382
 
1177
2383
  function formatProxyPresence(presence, userID) {
1178
- if (presence.lat === undefined || presence.p === undefined) return null;
1179
- return {
1180
- type: "presence",
1181
- timestamp: presence.lat * 1000,
1182
- userID: userID || '',
1183
- statuses: presence.p
1184
- };
2384
+ if (presence.lat === undefined || presence.p === undefined) return null;
2385
+ return {
2386
+ type: "presence",
2387
+ timestamp: presence.lat * 1000,
2388
+ userID: userID || "",
2389
+ statuses: presence.p
2390
+ };
1185
2391
  }
1186
2392
 
1187
2393
  function formatPresence(presence, userID) {
1188
- return {
1189
- type: "presence",
1190
- timestamp: presence.la * 1000,
1191
- userID: userID || '',
1192
- statuses: presence.a
1193
- };
2394
+ return {
2395
+ type: "presence",
2396
+ timestamp: presence.la * 1000,
2397
+ userID: userID || "",
2398
+ statuses: presence.a
2399
+ };
1194
2400
  }
1195
2401
 
1196
2402
  function decodeClientPayload(payload) {
1197
- /*
2403
+ /*
1198
2404
  Special function which Client using to "encode" clients JSON payload
1199
2405
  */
1200
- function Utf8ArrayToStr(array) {
1201
- var out, i, len, c;
1202
- var char2, char3;
1203
- out = "";
1204
- len = array.length;
1205
- i = 0;
1206
- while (i < len) {
1207
- c = array[i++];
1208
- switch (c >> 4) {
1209
- case 0:
1210
- case 1:
1211
- case 2:
1212
- case 3:
1213
- case 4:
1214
- case 5:
1215
- case 6:
1216
- case 7:
1217
- out += String.fromCharCode(c);
1218
- break;
1219
- case 12:
1220
- case 13:
1221
- char2 = array[i++];
1222
- out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
1223
- break;
1224
- case 14:
1225
- char2 = array[i++];
1226
- char3 = array[i++];
1227
- out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0));
1228
- break;
1229
- }
1230
- }
1231
- return out;
2406
+ function Utf8ArrayToStr(array) {
2407
+ var out, i, len, c;
2408
+ var char2, char3;
2409
+ out = "";
2410
+ len = array.length;
2411
+ i = 0;
2412
+ while (i < len) {
2413
+ c = array[i++];
2414
+ switch (c >> 4) {
2415
+ case 0:
2416
+ case 1:
2417
+ case 2:
2418
+ case 3:
2419
+ case 4:
2420
+ case 5:
2421
+ case 6:
2422
+ case 7:
2423
+ out += String.fromCharCode(c);
2424
+ break;
2425
+ case 12:
2426
+ case 13:
2427
+ char2 = array[i++];
2428
+ out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f));
2429
+ break;
2430
+ case 14:
2431
+ char2 = array[i++];
2432
+ char3 = array[i++];
2433
+ out += String.fromCharCode(
2434
+ ((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0)
2435
+ );
2436
+ break;
2437
+ }
1232
2438
  }
1233
- return JSON.parse(Utf8ArrayToStr(payload));
2439
+ return out;
2440
+ }
2441
+ return JSON.parse(Utf8ArrayToStr(payload));
1234
2442
  }
1235
2443
 
1236
-
1237
2444
  function getAppState(jar) {
1238
- return jar
1239
- .getCookies("https://www.facebook.com")
1240
- .concat(jar.getCookies("https://facebook.com"))
1241
- .concat(jar.getCookies("https://www.messenger.com"));
1242
- }
2445
+ return jar
2446
+ .getCookies("https://www.facebook.com")
2447
+ .concat(jar.getCookies("https://facebook.com"))
2448
+ .concat(jar.getCookies("https://www.messenger.com"));
2449
+ }
1243
2450
 
1244
2451
  module.exports = {
1245
- isReadableStream:isReadableStream,
1246
- get,
1247
- post,
1248
- postFormData:postFormData,
1249
- generateThreadingID:generateThreadingID,
1250
- generateOfflineThreadingID:generateOfflineThreadingID,
1251
- getGUID,
1252
- getFrom:getFrom,
1253
- makeParsable:makeParsable,
1254
- arrToForm:arrToForm,
1255
- getSignatureID:getSignatureID,
1256
- getJar: request.jar,
1257
- generateTimestampRelative:generateTimestampRelative,
1258
- makeDefaults:makeDefaults,
1259
- parseAndCheckLogin:parseAndCheckLogin,
1260
- saveCookies,
1261
- getType,
1262
- _formatAttachment,
1263
- formatHistoryMessage,
1264
- formatID,
1265
- formatMessage,
1266
- formatDeltaEvent,
1267
- formatDeltaMessage,
1268
- formatProxyPresence,
1269
- formatPresence,
1270
- formatTyp,
1271
- formatDeltaReadReceipt,
1272
- formatCookie,
1273
- formatThread,
1274
- formatReadReceipt,
1275
- formatRead,
1276
- generatePresence,
1277
- generateAccessiblityCookie,
1278
- formatDate,
1279
- decodeClientPayload,
1280
- getAppState,
1281
- getAdminTextMessageType,
1282
- setProxy
1283
- };
2452
+ isReadableStream: isReadableStream,
2453
+ get,
2454
+ post,
2455
+ postFormData: postFormData,
2456
+ generateThreadingID: generateThreadingID,
2457
+ generateOfflineThreadingID: generateOfflineThreadingID,
2458
+ getGUID,
2459
+ getFrom: getFrom,
2460
+ makeParsable: makeParsable,
2461
+ arrToForm: arrToForm,
2462
+ getSignatureID: getSignatureID,
2463
+ getJar: request.jar,
2464
+ generateTimestampRelative: generateTimestampRelative,
2465
+ makeDefaults: makeDefaults,
2466
+ parseAndCheckLogin: parseAndCheckLogin,
2467
+ saveCookies,
2468
+ getType,
2469
+ _formatAttachment,
2470
+ formatHistoryMessage,
2471
+ formatID,
2472
+ formatMessage,
2473
+ formatDeltaEvent,
2474
+ formatDeltaMessage,
2475
+ formatProxyPresence,
2476
+ formatPresence,
2477
+ formatTyp,
2478
+ formatDeltaReadReceipt,
2479
+ formatCookie,
2480
+ formatThread,
2481
+ formatReadReceipt,
2482
+ formatRead,
2483
+ generatePresence,
2484
+ generateAccessiblityCookie,
2485
+ formatDate,
2486
+ decodeClientPayload,
2487
+ getAppState,
2488
+ getAdminTextMessageType,
2489
+ setProxy
2490
+ };