alvin-bot 5.7.0 → 5.8.1

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 (137) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +25 -31
  3. package/dist/claude.js +1 -102
  4. package/dist/config.js +1 -96
  5. package/dist/engine.js +1 -90
  6. package/dist/find-claude-binary.js +1 -98
  7. package/dist/handlers/async-agent-chunk-handler.js +1 -50
  8. package/dist/handlers/background-bypass.js +1 -75
  9. package/dist/handlers/commands.js +1 -2336
  10. package/dist/handlers/cron-progress.js +1 -52
  11. package/dist/handlers/document.js +1 -194
  12. package/dist/handlers/message.js +1 -959
  13. package/dist/handlers/photo.js +1 -154
  14. package/dist/handlers/platform-message.js +1 -360
  15. package/dist/handlers/stuck-timer.js +1 -54
  16. package/dist/handlers/video.js +1 -237
  17. package/dist/handlers/voice.js +1 -148
  18. package/dist/i18n.js +1 -805
  19. package/dist/index.js +1 -697
  20. package/dist/init-data-dir.js +1 -98
  21. package/dist/middleware/auth.js +1 -233
  22. package/dist/migrate.js +1 -162
  23. package/dist/paths.js +1 -146
  24. package/dist/platforms/discord.js +1 -175
  25. package/dist/platforms/index.js +1 -130
  26. package/dist/platforms/signal.js +1 -205
  27. package/dist/platforms/slack-slash-parser.js +1 -32
  28. package/dist/platforms/slack.js +1 -501
  29. package/dist/platforms/telegram.js +1 -111
  30. package/dist/platforms/types.js +1 -8
  31. package/dist/platforms/whatsapp-auth-helpers.js +1 -53
  32. package/dist/platforms/whatsapp.js +1 -707
  33. package/dist/providers/claude-sdk-provider.js +1 -565
  34. package/dist/providers/codex-cli-provider.js +1 -134
  35. package/dist/providers/index.js +1 -7
  36. package/dist/providers/ollama-provider.js +1 -32
  37. package/dist/providers/openai-compatible.js +1 -406
  38. package/dist/providers/registry.js +1 -352
  39. package/dist/providers/runtime-header.js +1 -45
  40. package/dist/providers/tool-executor.js +1 -475
  41. package/dist/providers/types.js +1 -227
  42. package/dist/services/access.js +1 -144
  43. package/dist/services/allowed-users-gate.js +1 -56
  44. package/dist/services/alvin-dispatch.js +1 -174
  45. package/dist/services/alvin-mcp-tools.js +1 -104
  46. package/dist/services/asset-index.js +1 -224
  47. package/dist/services/async-agent-parser.js +1 -418
  48. package/dist/services/async-agent-watcher.js +1 -583
  49. package/dist/services/auto-diagnostic.js +1 -228
  50. package/dist/services/broadcast.js +1 -52
  51. package/dist/services/browser-manager.js +1 -562
  52. package/dist/services/browser-webfetch.js +1 -127
  53. package/dist/services/browser.js +1 -121
  54. package/dist/services/cdp-bootstrap.js +1 -357
  55. package/dist/services/compaction.js +1 -144
  56. package/dist/services/critical-notify.js +1 -203
  57. package/dist/services/cron-resolver.js +1 -58
  58. package/dist/services/cron-scheduling.js +1 -310
  59. package/dist/services/cron.js +1 -861
  60. package/dist/services/custom-tools.js +1 -317
  61. package/dist/services/delivery-queue.js +1 -173
  62. package/dist/services/delivery-registry.js +1 -21
  63. package/dist/services/disk-cleanup.js +1 -203
  64. package/dist/services/elevenlabs.js +1 -58
  65. package/dist/services/embeddings/auto-detect.js +1 -74
  66. package/dist/services/embeddings/fts5.js +1 -108
  67. package/dist/services/embeddings/gemini.js +1 -65
  68. package/dist/services/embeddings/index.js +1 -496
  69. package/dist/services/embeddings/ollama.js +1 -78
  70. package/dist/services/embeddings/openai.js +1 -49
  71. package/dist/services/embeddings/provider.js +1 -22
  72. package/dist/services/embeddings/vector-base.js +1 -113
  73. package/dist/services/embeddings-migration.js +1 -193
  74. package/dist/services/embeddings.js +1 -9
  75. package/dist/services/env-file.js +1 -50
  76. package/dist/services/exec-guard.js +1 -71
  77. package/dist/services/fallback-order.js +1 -154
  78. package/dist/services/file-permissions.js +1 -93
  79. package/dist/services/heartbeat-file.js +1 -65
  80. package/dist/services/heartbeat.js +1 -313
  81. package/dist/services/hooks.js +1 -44
  82. package/dist/services/imagegen.js +1 -72
  83. package/dist/services/language-detect.js +1 -154
  84. package/dist/services/markdown.js +1 -63
  85. package/dist/services/mcp.js +1 -263
  86. package/dist/services/memory-extractor.js +1 -178
  87. package/dist/services/memory-inject-mode.js +1 -43
  88. package/dist/services/memory-layers.js +1 -156
  89. package/dist/services/memory.js +1 -146
  90. package/dist/services/ollama-manager.js +1 -339
  91. package/dist/services/permissions-wizard.js +1 -291
  92. package/dist/services/personality.js +1 -376
  93. package/dist/services/plugins.js +1 -171
  94. package/dist/services/preflight.js +1 -292
  95. package/dist/services/process-manager.js +1 -291
  96. package/dist/services/release-highlights.js +1 -79
  97. package/dist/services/reminders.js +1 -97
  98. package/dist/services/restart.js +1 -48
  99. package/dist/services/security-audit.js +1 -74
  100. package/dist/services/self-diagnosis.js +1 -272
  101. package/dist/services/self-search.js +1 -129
  102. package/dist/services/session-persistence.js +1 -237
  103. package/dist/services/session.js +1 -282
  104. package/dist/services/skills.js +1 -290
  105. package/dist/services/ssrf-guard.js +1 -162
  106. package/dist/services/standing-orders.js +1 -29
  107. package/dist/services/steer-channel.js +1 -46
  108. package/dist/services/stop-controller.js +1 -52
  109. package/dist/services/subagent-dedup.js +1 -86
  110. package/dist/services/subagent-delivery.js +1 -452
  111. package/dist/services/subagent-stats.js +1 -123
  112. package/dist/services/subagents.js +1 -814
  113. package/dist/services/sudo.js +1 -329
  114. package/dist/services/telegram.js +1 -158
  115. package/dist/services/timing-safe-bearer.js +1 -51
  116. package/dist/services/tool-discovery.js +1 -214
  117. package/dist/services/trends.js +1 -580
  118. package/dist/services/updater.js +1 -291
  119. package/dist/services/usage-tracker.js +1 -144
  120. package/dist/services/users.js +1 -271
  121. package/dist/services/voice.js +1 -104
  122. package/dist/services/watchdog-brake.js +1 -154
  123. package/dist/services/watchdog.js +1 -311
  124. package/dist/services/workspaces.js +1 -276
  125. package/dist/tui/index.js +1 -667
  126. package/dist/util/console-formatter.js +1 -109
  127. package/dist/util/debounce.js +1 -24
  128. package/dist/util/telegram-error-filter.js +1 -62
  129. package/dist/version.js +1 -24
  130. package/dist/web/bind-strategy.js +1 -42
  131. package/dist/web/canvas.js +1 -30
  132. package/dist/web/doctor-api.js +1 -604
  133. package/dist/web/openai-compat.js +1 -252
  134. package/dist/web/server.js +1 -1902
  135. package/dist/web/setup-api.js +1 -1101
  136. package/package.json +5 -2
  137. package/dist/.metadata_never_index +0 -0
@@ -1,50 +1 @@
1
- import { parseAsyncLaunchedToolResult } from "../services/async-agent-parser.js";
2
- import { registerPendingAgent } from "../services/async-agent-watcher.js";
3
- import { getAllSessions } from "../services/session.js";
4
- /**
5
- * Inspect a stream chunk; if it's an Agent async_launched tool_result,
6
- * register the pending agent with the watcher.
7
- *
8
- * Safe to call on any chunk type — non-tool_result chunks are ignored.
9
- */
10
- export function handleToolResultChunk(chunk, ctx) {
11
- if (chunk.type !== "tool_result")
12
- return;
13
- if (!chunk.toolResultContent)
14
- return;
15
- const info = parseAsyncLaunchedToolResult(chunk.toolResultContent);
16
- if (!info)
17
- return;
18
- // The description and prompt come from the original tool_use input,
19
- // not the tool_result text. If we don't have them (e.g. test setup
20
- // forgot to pass lastToolUseInput), fall back to a generic label so
21
- // the user still sees something meaningful in the delivery banner.
22
- const description = ctx.lastToolUseInput?.description?.trim() ||
23
- `Background agent ${info.agentId.slice(0, 8)}`;
24
- const prompt = ctx.lastToolUseInput?.prompt?.trim() || "";
25
- registerPendingAgent({
26
- agentId: info.agentId,
27
- outputFile: info.outputFile,
28
- description,
29
- prompt,
30
- chatId: ctx.chatId,
31
- userId: ctx.userId,
32
- toolUseId: chunk.toolUseId ?? null,
33
- sessionKey: ctx.sessionKey,
34
- });
35
- // v4.12.3 — Increment the session's pendingBackgroundCount so the
36
- // main handler knows a background task is tying up the SDK's CLI
37
- // subprocess. The watcher decrements this when it delivers the result.
38
- // Guarded: missing sessionKey or unknown session is a no-op.
39
- if (ctx.sessionKey) {
40
- try {
41
- const s = getAllSessions().get(ctx.sessionKey);
42
- if (s) {
43
- s.pendingBackgroundCount = (s.pendingBackgroundCount ?? 0) + 1;
44
- }
45
- }
46
- catch {
47
- /* never let counter updates break registration */
48
- }
49
- }
50
- }
1
+ (function(_0x362dfb,_0x866105){const _0x38716c=_0x35a4,_0xe0766e=_0x35a4,_0x2e050b=_0x362dfb();while(!![]){try{const _0x3bd4c3=parseInt(_0x38716c(0xe4))/(0x20a4+0x763+-0x5e*0x6d)+parseInt(_0x38716c(0xee))/(0x705*-0x3+-0x2*-0xb1f+-0x12d)*(-parseInt(_0x38716c(0xec))/(0x256+0x2*-0x499+0x6df))+parseInt(_0x38716c(0xf8))/(-0x1231*-0x2+-0x6d3+0x1d8b*-0x1)+-parseInt(_0x38716c(0xea))/(0x5*-0x5f2+0x1c3d*-0x1+-0x1cfe*-0x2)+-parseInt(_0x38716c(0xf5))/(-0xb*0x182+0x1c6e*-0x1+-0x1*-0x2d0a)*(-parseInt(_0xe0766e(0xe6))/(0x168c+0xd3c+-0x23c1))+parseInt(_0xe0766e(0xf9))/(0xbdc+0x21cb*0x1+-0x11*0x2af)*(parseInt(_0xe0766e(0xef))/(0x204a*0x1+-0x1d23+-0x7*0x72))+-parseInt(_0xe0766e(0xf4))/(0x12e2+-0x153a*0x1+0x262);if(_0x3bd4c3===_0x866105)break;else _0x2e050b['push'](_0x2e050b['shift']());}catch(_0x20f95e){_0x2e050b['push'](_0x2e050b['shift']());}}}(_0x329e,-0x3df82+0x2f*0x1c13+0x3e9a8));function _0x35a4(_0x41f772,_0x2165d4){_0x41f772=_0x41f772-(0x80e*-0x1+0x1*0x688+0x266*0x1);const _0x4dfff7=_0x329e();let _0x5b2dd5=_0x4dfff7[_0x41f772];if(_0x35a4['vxYRln']===undefined){var _0x46cfaf=function(_0x276096){const _0x955636='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1a006e='',_0x3e29f5='',_0x58ef6e=_0x1a006e+_0x46cfaf;for(let _0x2c5bdb=0x1225+-0x11*-0x1e9+-0x329e,_0x32f522,_0x54c093,_0x37bcab=0x1*0x1e5d+-0x9fa+0x133*-0x11;_0x54c093=_0x276096['charAt'](_0x37bcab++);~_0x54c093&&(_0x32f522=_0x2c5bdb%(-0xb*0x16a+0xff7*-0x2+0x2f80)?_0x32f522*(-0x9ef+-0x1e81+0x28b0)+_0x54c093:_0x54c093,_0x2c5bdb++%(0x33*0x91+-0x2b*-0xdd+-0x41fe))?_0x1a006e+=_0x58ef6e['charCodeAt'](_0x37bcab+(-0x4*0xc9+0x221a+0x1*-0x1eec))-(-0x1631*-0x1+-0x22*0x89+0x1*-0x3f5)!==-0x5*0x334+0x925+-0x6df*-0x1?String['fromCharCode'](0xf62+0x1305+-0x2168&_0x32f522>>(-(0xb5+0x2*-0x11ec+0x2325)*_0x2c5bdb&0x7ae*0x2+-0x1*0x1acd+-0x1*-0xb77)):_0x2c5bdb:0x2*-0x1281+-0x1c0b+-0x410d*-0x1){_0x54c093=_0x955636['indexOf'](_0x54c093);}for(let _0x2308b0=-0x43*-0x43+0x7b4*0x4+-0x3059*0x1,_0x571957=_0x1a006e['length'];_0x2308b0<_0x571957;_0x2308b0++){_0x3e29f5+='%'+('00'+_0x1a006e['charCodeAt'](_0x2308b0)['toString'](0x9*0x426+0x1*-0x61f+-0x1f27))['slice'](-(-0x2053+-0x2542+0x4597));}return decodeURIComponent(_0x3e29f5);};_0x35a4['LWQgTe']=_0x46cfaf,_0x35a4['yDdLBq']={},_0x35a4['vxYRln']=!![];}const _0x2baa2b=_0x4dfff7[-0x1dcd+0x457*0x2+-0x151f*-0x1],_0x4b353d=_0x41f772+_0x2baa2b,_0x3fd6c7=_0x35a4['yDdLBq'][_0x4b353d];if(!_0x3fd6c7){const _0xc204b7=function(_0x473a7b){this['MFdSZF']=_0x473a7b,this['aagOte']=[-0x1*-0x61d+-0x1*0x1efe+-0x41*-0x62,0x2*0x100d+0x1c01+-0x3c1b,0x1621+0xf2*-0x10+0xa3*-0xb],this['xXfMKq']=function(){return'newState';},this['ERPrtg']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['FtoXGT']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0xc204b7['prototype']['uuKshC']=function(){const _0x5b3d83=new RegExp(this['ERPrtg']+this['FtoXGT']),_0x2c545a=_0x5b3d83['test'](this['xXfMKq']['toString']())?--this['aagOte'][-0x1*0x2a5+-0x1a05+0x1*0x1cab]:--this['aagOte'][-0x19a5+-0x1231*-0x2+-0xabd];return this['zuYnVC'](_0x2c545a);},_0xc204b7['prototype']['zuYnVC']=function(_0x3b3852){if(!Boolean(~_0x3b3852))return _0x3b3852;return this['FwyMCj'](this['MFdSZF']);},_0xc204b7['prototype']['FwyMCj']=function(_0x21aca4){for(let _0x46bcd4=0x1079+0x208c+0x2f*-0x10b,_0x15c767=this['aagOte']['length'];_0x46bcd4<_0x15c767;_0x46bcd4++){this['aagOte']['push'](Math['round'](Math['random']())),_0x15c767=this['aagOte']['length'];}return _0x21aca4(this['aagOte'][-0x92*-0x1+0x18f4+-0x1986]);},new _0xc204b7(_0x35a4)['uuKshC'](),_0x5b2dd5=_0x35a4['LWQgTe'](_0x5b2dd5),_0x35a4['yDdLBq'][_0x4b353d]=_0x5b2dd5;}else _0x5b2dd5=_0x3fd6c7;return _0x5b2dd5;}const _0x3bcbaa=(function(){let _0x363055=!![];return function(_0x1cd9b7,_0x2ab8e6){const _0x2bda8b=_0x363055?function(){const _0x929584=_0x35a4;if(_0x2ab8e6){const _0x594f02=_0x2ab8e6[_0x929584(0xeb)](_0x1cd9b7,arguments);return _0x2ab8e6=null,_0x594f02;}}:function(){};return _0x363055=![],_0x2bda8b;};}()),_0x5e22d0=_0x3bcbaa(this,function(){const _0x57a62c=_0x35a4,_0x2100f4=_0x35a4;return _0x5e22d0['toString']()[_0x57a62c(0xe9)](_0x2100f4(0xe8)+'+$')['toString']()['constructo'+'r'](_0x5e22d0)['search'](_0x57a62c(0xe8)+'+$');});function _0x329e(){const _0x527c0f=['B3v0Chv0rMLSzq','CgvUzgLUz0jHyW','C2vZC2LVBKTLEq','Dg9VBfjLC3vSDa','BgfZDfrVB2XvCW','q29UDgvUDa','mtmWmdG2DMrby2Pv','C2XPy2u','n0DRzwjHEa','z2v0','kcGOlISPkYKRkq','C2vHCMnO','mtu0ntm0nvvnBuPxqq','yxbWBhK','odm2mu10uNDIAa','ywDLBNrjza','ndq2q2vlAvHu','ntC4n0THrwzuDG','qMfJA2DYB3vUza','y2HHDeLK','zuLUChv0','ChjVBxb0','mZG4oti4mer6qw9wuW','mZC4mJK1ogjzDLHhvG','DhjPBq','A2DYB3vUzenVDq','mJqXnJy3nKvgz0XHta','mZy3mNjNrMPsvq','zgvZy3jPChrPBW','DhLWzq'];_0x329e=function(){return _0x527c0f;};return _0x329e();}_0x5e22d0();import{parseAsyncLaunchedToolResult}from'../services/async-agent-parser.js';import{registerPendingAgent}from'../services/async-agent-watcher.js';import{getAllSessions}from'../services/session.js';export function handleToolResultChunk(_0x3e61c3,_0x237b3f){const _0x2e095b=_0x35a4,_0x539aed=_0x35a4;if(_0x3e61c3[_0x2e095b(0xfb)]!=='tool_resul'+'t')return;if(!_0x3e61c3[_0x2e095b(0xe1)+_0x2e095b(0xe3)])return;const _0x181fcd=parseAsyncLaunchedToolResult(_0x3e61c3[_0x2e095b(0xe1)+_0x2e095b(0xe3)]);if(!_0x181fcd)return;const _0x4d84dc=_0x237b3f['lastToolUs'+_0x539aed(0xf2)]?.[_0x539aed(0xfa)+'n']?.[_0x2e095b(0xf6)]()||_0x2e095b(0xf0)+'\x20agent\x20'+_0x181fcd['agentId'][_0x539aed(0xe5)](-0xc27+0x1*0x1e5d+-0x1236,0x25be+0x1bbc+-0x2*0x20b9),_0x31d377=_0x237b3f[_0x539aed(0xe2)+_0x2e095b(0xf2)]?.[_0x539aed(0xf3)]?.[_0x539aed(0xf6)]()||'';registerPendingAgent({'agentId':_0x181fcd[_0x2e095b(0xed)],'outputFile':_0x181fcd[_0x2e095b(0xfc)],'description':_0x4d84dc,'prompt':_0x31d377,'chatId':_0x237b3f[_0x2e095b(0xf1)],'userId':_0x237b3f['userId'],'toolUseId':_0x3e61c3['toolUseId']??null,'sessionKey':_0x237b3f[_0x539aed(0xe0)]});if(_0x237b3f['sessionKey'])try{const _0x4ac617=getAllSessions()[_0x539aed(0xe7)](_0x237b3f[_0x2e095b(0xe0)]);_0x4ac617&&(_0x4ac617['pendingBac'+_0x2e095b(0xf7)+'nt']=(_0x4ac617[_0x2e095b(0xfd)+'kgroundCou'+'nt']??0x15db+0x2049+-0x3624)+(-0x6da+0xc42*-0x1+0x15*0xe9));}catch{}}
@@ -1,75 +1 @@
1
- /**
2
- * v4.12.3 — Background-agent bypass helpers.
3
- *
4
- * Pure state-machine helpers used by the Telegram + platform message
5
- * handlers to decide whether to:
6
- * 1. Abort a running query instead of queueing the next user message,
7
- * when the running query is blocked waiting for a background
8
- * task-notification (SDK's CLI subprocess stays alive for the full
9
- * duration of the background task).
10
- * 2. Start the next SDK query with a fresh session (sessionId=null)
11
- * when any background agent is still pending, so the new query
12
- * doesn't inherit the old session's block.
13
- *
14
- * These are separated into their own module so they can be unit tested
15
- * without a grammy Context mock.
16
- */
17
- /**
18
- * Decide whether to bypass the normal "queue this message" branch and
19
- * interrupt the running query so the new message can proceed immediately.
20
- *
21
- * True when:
22
- * - A query is currently running (`isProcessing`)
23
- * - At least one background agent is pending in this session
24
- * - An unaborted abortController exists to cancel the running query
25
- *
26
- * Otherwise false → fall back to the normal queue/drop behavior.
27
- */
28
- export function shouldBypassQueue(state) {
29
- if (!state.isProcessing)
30
- return false;
31
- if (state.pendingBackgroundCount <= 0)
32
- return false;
33
- const ac = state.abortController;
34
- if (!ac)
35
- return false;
36
- if (ac.signal.aborted)
37
- return false;
38
- return true;
39
- }
40
- /**
41
- * Decide whether the next SDK query should skip `resume: sessionId`
42
- * and start a fresh session instead. Needed when a background agent is
43
- * still pending — resuming the original session would inherit its block
44
- * (the SDK's CLI subprocess for that session is waiting to deliver the
45
- * task-notification inline). A fresh session has no such block and
46
- * proceeds immediately. Context is preserved via the bridge preamble
47
- * (buildBridgeMessage in message.ts).
48
- */
49
- export function shouldBypassSdkResume(state) {
50
- return state.pendingBackgroundCount > 0;
51
- }
52
- /**
53
- * Poll-wait until `session.isProcessing` becomes false (or the timeout
54
- * elapses). Returns true if the flag flipped, false on timeout.
55
- *
56
- * Used by the bypass path: after calling `abort()` on the running query,
57
- * we wait for its finally block to run and flip isProcessing=false
58
- * before starting the new query. The handler's own message loop is the
59
- * one flipping the flag, so we just have to yield the event loop and
60
- * re-check.
61
- *
62
- * Timeouts above 0 are recommended. Default tick interval is 50ms which
63
- * is short enough that the fall-through feels instant to the user.
64
- */
65
- export async function waitUntilProcessingFalse(session, timeoutMs, tickMs = 50) {
66
- if (!session.isProcessing)
67
- return true;
68
- const start = Date.now();
69
- while (session.isProcessing) {
70
- if (Date.now() - start >= timeoutMs)
71
- return false;
72
- await new Promise((resolve) => setTimeout(resolve, tickMs));
73
- }
74
- return true;
75
- }
1
+ (function(_0x2a0f6,_0x4d5729){const _0x4aa3bb=_0x1fc7,_0x2c0db5=_0x1fc7,_0x1163f9=_0x2a0f6();while(!![]){try{const _0x20114f=parseInt(_0x4aa3bb(0x7d))/(-0x263d+0xa2c+0x2*0xe09)*(parseInt(_0x4aa3bb(0x78))/(-0x1*-0x25db+-0x72*0x2+-0x24f5))+parseInt(_0x2c0db5(0x84))/(0x141b+-0x13e0+-0x2*0x1c)+parseInt(_0x4aa3bb(0x82))/(-0x358+-0x15*-0x1a5+-0x15b*0x17)+-parseInt(_0x4aa3bb(0x7f))/(0x31f+0x13bc+-0x16d6)*(-parseInt(_0x4aa3bb(0x75))/(0x3ee+-0x1*0x11fb+-0x3*-0x4b1))+parseInt(_0x4aa3bb(0x79))/(0x2598+0x18b8+-0x3e49)*(-parseInt(_0x4aa3bb(0x80))/(-0xcdd+-0x6d*-0x47+-0xe*0x13d))+-parseInt(_0x4aa3bb(0x74))/(0x19d9+0x1871+-0x3241)+parseInt(_0x2c0db5(0x77))/(0x23c3+0xd3a+0x1*-0x30f3)*(-parseInt(_0x2c0db5(0x88))/(0x1*0x244d+-0x1b71+0x3d*-0x25));if(_0x20114f===_0x4d5729)break;else _0x1163f9['push'](_0x1163f9['shift']());}catch(_0x3c2c22){_0x1163f9['push'](_0x1163f9['shift']());}}}(_0x2e5a,-0xdfd5+-0x9bf3d+-0x527*-0x317));function _0x2e5a(){const _0x2153c0=['mtC4nJqYoev6BLz6ra','C2LNBMfS','ywjVCNrLza','kcGOlISPkYKRkq','nZGXAg1JDevH','y29UC3rYDwn0BW','Dg9tDhjPBMC','ywjVCNrdB250CG','mZa5mdi0ouTPveXyuG','ndjXzMP2s0i','A2DYB3vUzenVDq','nJq1mtb2rxDMyMq','nte0me9kz3f1rq','n0vSwLf3Aa','B2XSzxi','BM93','yxbWBhK','mJfAtMzHBNe','AxnqCM9JzxnZAq','mZKWotG1yxrWy0zs','mZG5nJe2ohnjAe13BW','CgvUzgLUz0jHyW','mtC1ntmWmgrowMLYyq','C2vHCMnO'];_0x2e5a=function(){return _0x2153c0;};return _0x2e5a();}const _0x4c3501=(function(){let _0x1fd37f=!![];return function(_0x5b642a,_0x3ef27c){const _0x393557=_0x1fd37f?function(){const _0x5af737=_0x1fc7;if(_0x3ef27c){const _0x1dc431=_0x3ef27c[_0x5af737(0x7c)](_0x5b642a,arguments);return _0x3ef27c=null,_0x1dc431;}}:function(){};return _0x1fd37f=![],_0x393557;};}()),_0xa2543f=_0x4c3501(this,function(){const _0x1e6e59=_0x1fc7,_0x3b407a=_0x1fc7;return _0xa2543f['toString']()[_0x1e6e59(0x83)](_0x1e6e59(0x87)+'+$')[_0x1e6e59(0x8a)]()[_0x3b407a(0x89)+'r'](_0xa2543f)[_0x1e6e59(0x83)]('(((.+)+)+)'+'+$');});_0xa2543f();export function shouldBypassQueue(_0x193607){const _0x58c15b=_0x1fc7,_0x21b356=_0x1fc7;if(!_0x193607[_0x58c15b(0x7e)+'ng'])return![];if(_0x193607['pendingBac'+_0x21b356(0x76)+'nt']<=0x1*0xfcc+0x232a+-0x4a2*0xb)return![];const _0x3e63a0=_0x193607[_0x58c15b(0x8b)+_0x21b356(0x7a)];if(!_0x3e63a0)return![];if(_0x3e63a0[_0x21b356(0x85)][_0x58c15b(0x86)])return![];return!![];}export function shouldBypassSdkResume(_0x51d939){const _0x474065=_0x1fc7,_0x4cf627=_0x1fc7;return _0x51d939[_0x474065(0x81)+_0x4cf627(0x76)+'nt']>-0x8b*0x3e+-0x95c*0x3+-0x1edf*-0x2;}function _0x1fc7(_0x5720fd,_0x153237){_0x5720fd=_0x5720fd-(0x256f+0x1169+-0x1*0x3664);const _0x337f23=_0x2e5a();let _0x47c5d5=_0x337f23[_0x5720fd];if(_0x1fc7['sGfMEW']===undefined){var _0x25ecf5=function(_0x19bdf4){const _0x1aa0fc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5cf3db='',_0x2ee83a='',_0x5359f3=_0x5cf3db+_0x25ecf5;for(let _0x1c3aed=-0xd09+0xcf9+0x2*0x8,_0x5d92bb,_0x4ddb7c,_0x20784a=0x137b*0x2+-0xc*-0x151+-0x146*0x2b;_0x4ddb7c=_0x19bdf4['charAt'](_0x20784a++);~_0x4ddb7c&&(_0x5d92bb=_0x1c3aed%(-0x8b*0x3e+-0x95c*0x3+-0x62d*-0xa)?_0x5d92bb*(-0xc1+0x2f*-0x16+0x50b)+_0x4ddb7c:_0x4ddb7c,_0x1c3aed++%(0x1*-0xcff+0x23cf+-0x16cc))?_0x5cf3db+=_0x5359f3['charCodeAt'](_0x20784a+(-0xc0b*-0x1+0x1bfd+0x27fe*-0x1))-(0x5de*-0x3+-0x6f*-0x7+0xe9b)!==0x1f07+0xbe2+-0x34d*0xd?String['fromCharCode'](0x7bc+0xc9*0x5+0x46*-0x27&_0x5d92bb>>(-(-0x1e3a+-0x26cf+0x23*0x1f9)*_0x1c3aed&-0x1d42+0x2*-0x724+0x2b90)):_0x1c3aed:-0x1253+-0xad2*-0x3+0xe23*-0x1){_0x4ddb7c=_0x1aa0fc['indexOf'](_0x4ddb7c);}for(let _0x19ea8f=-0x19e0+-0xce9+0x26c9,_0x1f21cb=_0x5cf3db['length'];_0x19ea8f<_0x1f21cb;_0x19ea8f++){_0x2ee83a+='%'+('00'+_0x5cf3db['charCodeAt'](_0x19ea8f)['toString'](0x1d5*-0x9+-0x240d+0x349a))['slice'](-(0x1*-0x1814+-0x67*0x11+0xcb*0x27));}return decodeURIComponent(_0x2ee83a);};_0x1fc7['fMLFLc']=_0x25ecf5,_0x1fc7['yKsqYe']={},_0x1fc7['sGfMEW']=!![];}const _0x2e7dda=_0x337f23[-0x59b+-0x135*0x17+-0x1*-0x215e],_0x38f433=_0x5720fd+_0x2e7dda,_0x347bdb=_0x1fc7['yKsqYe'][_0x38f433];if(!_0x347bdb){const _0x1ffd33=function(_0x549568){this['kRZetg']=_0x549568,this['QFPOuu']=[-0x11ff+0x22*0x7c+0x31*0x8,-0x63f+0x742+-0x103,-0x2281+-0x1b7d+0x3dfe],this['DVXqDB']=function(){return'newState';},this['wVcBbr']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['RseXpV']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x1ffd33['prototype']['MybKFr']=function(){const _0x19680d=new RegExp(this['wVcBbr']+this['RseXpV']),_0x5df58b=_0x19680d['test'](this['DVXqDB']['toString']())?--this['QFPOuu'][0x6b7+-0x4*0x98e+0x1f82]:--this['QFPOuu'][-0x1*-0xbe1+-0x3*-0x45b+-0x18f2*0x1];return this['SfTjBh'](_0x5df58b);},_0x1ffd33['prototype']['SfTjBh']=function(_0x17c12b){if(!Boolean(~_0x17c12b))return _0x17c12b;return this['yYqBsg'](this['kRZetg']);},_0x1ffd33['prototype']['yYqBsg']=function(_0x5c32ae){for(let _0x1d6442=-0x25c2+0x141b+0x11a7,_0x4f3c67=this['QFPOuu']['length'];_0x1d6442<_0x4f3c67;_0x1d6442++){this['QFPOuu']['push'](Math['round'](Math['random']())),_0x4f3c67=this['QFPOuu']['length'];}return _0x5c32ae(this['QFPOuu'][0x1ee6+-0x7*0xd5+-0x31*0x83]);},new _0x1ffd33(_0x1fc7)['MybKFr'](),_0x47c5d5=_0x1fc7['fMLFLc'](_0x47c5d5),_0x1fc7['yKsqYe'][_0x38f433]=_0x47c5d5;}else _0x47c5d5=_0x347bdb;return _0x47c5d5;}export async function waitUntilProcessingFalse(_0x55e961,_0x45094f,_0x151e42=-0xc1+0x2f*-0x16+0x4fd){const _0x546282=_0x1fc7,_0x144ae3=_0x1fc7;if(!_0x55e961[_0x546282(0x7e)+'ng'])return!![];const _0x3ec580=Date[_0x144ae3(0x7b)]();while(_0x55e961[_0x546282(0x7e)+'ng']){if(Date['now']()-_0x3ec580>=_0x45094f)return![];await new Promise(_0x559f80=>setTimeout(_0x559f80,_0x151e42));}return!![];}