@funnycode/myclaude 0.1.96 → 0.1.98
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.
- package/dist/myclaude.js +61 -44
- package/dist/myclaude.mjs +61 -44
- package/package.json +1 -1
package/dist/myclaude.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
// MACRO - build-time constants (injected by build.ts)
|
|
5
5
|
// MACRO injected by build script
|
|
6
6
|
globalThis.MACRO = {
|
|
7
|
-
VERSION: "0.1.
|
|
8
|
-
BUILD_TIME: "2026-07-
|
|
7
|
+
VERSION: "0.1.98",
|
|
8
|
+
BUILD_TIME: "2026-07-18T16:40:48.567Z",
|
|
9
9
|
PACKAGE_URL: "@funnycode/myclaude",
|
|
10
10
|
NATIVE_PACKAGE_URL: "@funnycode/myclaude",
|
|
11
11
|
VERSION_CHANGELOG: '',
|
|
@@ -117484,7 +117484,7 @@ var package_default;
|
|
|
117484
117484
|
var init_package = __esm(() => {
|
|
117485
117485
|
package_default = {
|
|
117486
117486
|
name: "@funnycode/myclaude",
|
|
117487
|
-
version: "0.1.
|
|
117487
|
+
version: "0.1.98",
|
|
117488
117488
|
private: false,
|
|
117489
117489
|
description: "An open-source AI coding assistant in your terminal - powered by Claude",
|
|
117490
117490
|
license: "MIT",
|
|
@@ -210223,10 +210223,12 @@ function initFingerprint(req) {
|
|
|
210223
210223
|
async function dumpRequest(body, ts, state, filePath) {
|
|
210224
210224
|
if (false)
|
|
210225
210225
|
;
|
|
210226
|
+
if (process.env.USER_TYPE !== "ant")
|
|
210227
|
+
return;
|
|
210226
210228
|
try {
|
|
210227
210229
|
const req = jsonParse(body);
|
|
210228
210230
|
addApiRequestToCache(req);
|
|
210229
|
-
if (process.env.
|
|
210231
|
+
if (process.env.DUMP_PROMPTS !== "1")
|
|
210230
210232
|
return;
|
|
210231
210233
|
logForDebugging("DUMP_PROMPTS is enabled. This will write full API payloads (including system prompts, user messages, and tool definitions) to the filesystem. This is intended for debugging only and should NOT be used in production.", { level: "warn" });
|
|
210232
210234
|
const entries = [];
|
|
@@ -210359,14 +210361,10 @@ function createDumpPromptsFetch(agentIdOrSessionId) {
|
|
|
210359
210361
|
jsonStringify({ type: "response", timestamp, data })
|
|
210360
210362
|
]);
|
|
210361
210363
|
} catch (err2) {
|
|
210362
|
-
|
|
210363
|
-
logForDebugging(`dumpPrompts.response handler error: ${err2}`, { level: "error" });
|
|
210364
|
-
} catch {}
|
|
210364
|
+
logError2(`dumpPrompts.response handler error: ${err2}`);
|
|
210365
210365
|
}
|
|
210366
210366
|
})().catch((err2) => {
|
|
210367
|
-
|
|
210368
|
-
logForDebugging(`dumpPrompts.response handler unhandled rejection: ${err2}`, { level: "error" });
|
|
210369
|
-
} catch {}
|
|
210367
|
+
logError2(`dumpPrompts.response handler unhandled rejection: ${err2}`);
|
|
210370
210368
|
});
|
|
210371
210369
|
}
|
|
210372
210370
|
return response;
|
|
@@ -301142,14 +301140,9 @@ function memoizeWithTTL(fn, ttlMs) {
|
|
|
301142
301140
|
const result = await memoized(...args);
|
|
301143
301141
|
if (result && typeof result === "object" && "success" in result && result.success === true) {
|
|
301144
301142
|
lastCachedAt = Date.now();
|
|
301145
|
-
} else if (result && typeof result === "object" && "success" in result && result.success === false) {
|
|
301146
|
-
originalClear();
|
|
301147
|
-
lastCachedAt = 0;
|
|
301148
|
-
}
|
|
301143
|
+
} else if (result && typeof result === "object" && "success" in result && result.success === false) {}
|
|
301149
301144
|
return result;
|
|
301150
301145
|
} catch (error49) {
|
|
301151
|
-
originalClear();
|
|
301152
|
-
lastCachedAt = -1;
|
|
301153
301146
|
return { success: false };
|
|
301154
301147
|
}
|
|
301155
301148
|
};
|
|
@@ -301213,13 +301206,21 @@ async function isQualifiedForGrove() {
|
|
|
301213
301206
|
const cachedEntry = globalConfig2.groveConfigCache?.[accountId];
|
|
301214
301207
|
const now2 = Date.now();
|
|
301215
301208
|
if (!cachedEntry) {
|
|
301216
|
-
logForDebugging("Grove: No cache, fetching config
|
|
301217
|
-
fetchAndStoreGroveConfig(accountId);
|
|
301209
|
+
logForDebugging("Grove: No cache, fetching config synchronously");
|
|
301210
|
+
await fetchAndStoreGroveConfig(accountId);
|
|
301211
|
+
const updatedConfig = getGlobalConfig().groveConfigCache?.[accountId];
|
|
301212
|
+
if (updatedConfig) {
|
|
301213
|
+
return updatedConfig.grove_enabled;
|
|
301214
|
+
}
|
|
301218
301215
|
return false;
|
|
301219
301216
|
}
|
|
301220
301217
|
if (now2 - cachedEntry.timestamp > GROVE_CACHE_EXPIRATION_MS) {
|
|
301221
|
-
logForDebugging("Grove: Cache stale,
|
|
301222
|
-
fetchAndStoreGroveConfig(accountId);
|
|
301218
|
+
logForDebugging("Grove: Cache stale, refreshing config");
|
|
301219
|
+
await fetchAndStoreGroveConfig(accountId);
|
|
301220
|
+
const updatedConfig = getGlobalConfig().groveConfigCache?.[accountId];
|
|
301221
|
+
if (updatedConfig) {
|
|
301222
|
+
return updatedConfig.grove_enabled;
|
|
301223
|
+
}
|
|
301223
301224
|
return cachedEntry.grove_enabled;
|
|
301224
301225
|
}
|
|
301225
301226
|
logForDebugging("Grove: Using fresh cached config");
|
|
@@ -301235,27 +301236,41 @@ async function fetchAndStoreGroveConfig(accountId) {
|
|
|
301235
301236
|
mapRelease();
|
|
301236
301237
|
const release = await mutex.acquire();
|
|
301237
301238
|
try {
|
|
301238
|
-
|
|
301239
|
-
|
|
301240
|
-
|
|
301241
|
-
|
|
301242
|
-
|
|
301243
|
-
|
|
301244
|
-
|
|
301245
|
-
|
|
301246
|
-
|
|
301247
|
-
|
|
301248
|
-
|
|
301249
|
-
|
|
301250
|
-
|
|
301251
|
-
|
|
301252
|
-
|
|
301253
|
-
|
|
301239
|
+
let lastError;
|
|
301240
|
+
for (let attempt = 0;attempt < 3; attempt++) {
|
|
301241
|
+
try {
|
|
301242
|
+
const result = await getGroveNoticeConfig();
|
|
301243
|
+
if (!result.success) {
|
|
301244
|
+
if (attempt < 2) {
|
|
301245
|
+
await new Promise((resolve28) => setTimeout(resolve28, 500));
|
|
301246
|
+
continue;
|
|
301247
|
+
}
|
|
301248
|
+
return;
|
|
301249
|
+
}
|
|
301250
|
+
const groveEnabled = result.data.grove_enabled;
|
|
301251
|
+
const cachedEntry = getGlobalConfig().groveConfigCache?.[accountId];
|
|
301252
|
+
if (cachedEntry?.grove_enabled === groveEnabled && Date.now() - cachedEntry.timestamp <= GROVE_CACHE_EXPIRATION_MS) {
|
|
301253
|
+
return;
|
|
301254
|
+
}
|
|
301255
|
+
saveGlobalConfig((current) => ({
|
|
301256
|
+
...current,
|
|
301257
|
+
groveConfigCache: {
|
|
301258
|
+
...current.groveConfigCache,
|
|
301259
|
+
[accountId]: {
|
|
301260
|
+
grove_enabled: groveEnabled,
|
|
301261
|
+
timestamp: Date.now()
|
|
301262
|
+
}
|
|
301263
|
+
}
|
|
301264
|
+
}));
|
|
301265
|
+
return;
|
|
301266
|
+
} catch (err2) {
|
|
301267
|
+
lastError = err2 instanceof Error ? err2 : new Error(String(err2));
|
|
301268
|
+
if (attempt < 2) {
|
|
301269
|
+
await new Promise((resolve28) => setTimeout(resolve28, 500));
|
|
301254
301270
|
}
|
|
301255
301271
|
}
|
|
301256
|
-
}
|
|
301257
|
-
|
|
301258
|
-
logForDebugging(`Grove: Failed to fetch and store config: ${err2}`);
|
|
301272
|
+
}
|
|
301273
|
+
logForDebugging(`Grove: Failed to fetch and store config after 3 attempts: ${lastError}`);
|
|
301259
301274
|
} finally {
|
|
301260
301275
|
release();
|
|
301261
301276
|
}
|
|
@@ -301348,7 +301363,6 @@ var init_grove = __esm(() => {
|
|
|
301348
301363
|
return { success: true, data: response.data };
|
|
301349
301364
|
} catch (err2) {
|
|
301350
301365
|
logError2(err2);
|
|
301351
|
-
getGroveSettings.cache.clear?.();
|
|
301352
301366
|
return { success: false };
|
|
301353
301367
|
}
|
|
301354
301368
|
}, GROVE_CACHE_EXPIRATION_MS);
|
|
@@ -301390,7 +301404,6 @@ var init_grove = __esm(() => {
|
|
|
301390
301404
|
if (axios_default.isAxiosError(err2) && err2.code === "ECONNABORTED") {
|
|
301391
301405
|
logForDebugging(`Grove: API request timed out after ${GROVE_API_TIMEOUT_MS}ms. This may cause the Grove dialog to be suppressed for users with slow connections.`);
|
|
301392
301406
|
}
|
|
301393
|
-
getGroveNoticeConfig.cache.clear?.();
|
|
301394
301407
|
return { success: false };
|
|
301395
301408
|
}
|
|
301396
301409
|
}, GROVE_CACHE_EXPIRATION_MS);
|
|
@@ -342434,7 +342447,9 @@ async function getSessionLogs(sessionId, url3) {
|
|
|
342434
342447
|
return null;
|
|
342435
342448
|
}
|
|
342436
342449
|
const headers = { Authorization: `Bearer ${sessionToken}` };
|
|
342437
|
-
const
|
|
342450
|
+
const sequential2 = getOrCreateSequential(sessionId);
|
|
342451
|
+
const result = await sequential2(sessionId, url3, headers, true);
|
|
342452
|
+
const logs2 = result;
|
|
342438
342453
|
if (logs2 && logs2.length > 0) {
|
|
342439
342454
|
const lastEntry = logs2.at(-1);
|
|
342440
342455
|
if (lastEntry && "uuid" in lastEntry && lastEntry.uuid) {
|
|
@@ -453787,8 +453802,10 @@ async function fetchReferralEligibility(campaign = "claude_code_guest_pass") {
|
|
|
453787
453802
|
};
|
|
453788
453803
|
const url3 = `${getOauthConfig().BASE_API_URL}/api/oauth/organizations/${orgUUID}/referral/eligibility`;
|
|
453789
453804
|
let resolvePromise;
|
|
453790
|
-
|
|
453805
|
+
let rejectPromise;
|
|
453806
|
+
const promise3 = new Promise((resolve47, reject2) => {
|
|
453791
453807
|
resolvePromise = resolve47;
|
|
453808
|
+
rejectPromise = reject2;
|
|
453792
453809
|
});
|
|
453793
453810
|
fetchInProgressMap.set(orgUUID, promise3);
|
|
453794
453811
|
(async () => {
|
|
@@ -453802,7 +453819,7 @@ async function fetchReferralEligibility(campaign = "claude_code_guest_pass") {
|
|
|
453802
453819
|
} catch (error49) {
|
|
453803
453820
|
logError2(error49);
|
|
453804
453821
|
fetchInProgressMap.delete(orgUUID);
|
|
453805
|
-
|
|
453822
|
+
rejectPromise(error49);
|
|
453806
453823
|
}
|
|
453807
453824
|
})();
|
|
453808
453825
|
return promise3;
|
package/dist/myclaude.mjs
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
// MACRO - build-time constants (injected by build.ts)
|
|
5
5
|
// MACRO injected by build script
|
|
6
6
|
globalThis.MACRO = {
|
|
7
|
-
VERSION: "0.1.
|
|
8
|
-
BUILD_TIME: "2026-07-
|
|
7
|
+
VERSION: "0.1.98",
|
|
8
|
+
BUILD_TIME: "2026-07-18T16:40:48.567Z",
|
|
9
9
|
PACKAGE_URL: "@funnycode/myclaude",
|
|
10
10
|
NATIVE_PACKAGE_URL: "@funnycode/myclaude",
|
|
11
11
|
VERSION_CHANGELOG: '',
|
|
@@ -117484,7 +117484,7 @@ var package_default;
|
|
|
117484
117484
|
var init_package = __esm(() => {
|
|
117485
117485
|
package_default = {
|
|
117486
117486
|
name: "@funnycode/myclaude",
|
|
117487
|
-
version: "0.1.
|
|
117487
|
+
version: "0.1.98",
|
|
117488
117488
|
private: false,
|
|
117489
117489
|
description: "An open-source AI coding assistant in your terminal - powered by Claude",
|
|
117490
117490
|
license: "MIT",
|
|
@@ -210223,10 +210223,12 @@ function initFingerprint(req) {
|
|
|
210223
210223
|
async function dumpRequest(body, ts, state, filePath) {
|
|
210224
210224
|
if (false)
|
|
210225
210225
|
;
|
|
210226
|
+
if (process.env.USER_TYPE !== "ant")
|
|
210227
|
+
return;
|
|
210226
210228
|
try {
|
|
210227
210229
|
const req = jsonParse(body);
|
|
210228
210230
|
addApiRequestToCache(req);
|
|
210229
|
-
if (process.env.
|
|
210231
|
+
if (process.env.DUMP_PROMPTS !== "1")
|
|
210230
210232
|
return;
|
|
210231
210233
|
logForDebugging("DUMP_PROMPTS is enabled. This will write full API payloads (including system prompts, user messages, and tool definitions) to the filesystem. This is intended for debugging only and should NOT be used in production.", { level: "warn" });
|
|
210232
210234
|
const entries = [];
|
|
@@ -210359,14 +210361,10 @@ function createDumpPromptsFetch(agentIdOrSessionId) {
|
|
|
210359
210361
|
jsonStringify({ type: "response", timestamp, data })
|
|
210360
210362
|
]);
|
|
210361
210363
|
} catch (err2) {
|
|
210362
|
-
|
|
210363
|
-
logForDebugging(`dumpPrompts.response handler error: ${err2}`, { level: "error" });
|
|
210364
|
-
} catch {}
|
|
210364
|
+
logError2(`dumpPrompts.response handler error: ${err2}`);
|
|
210365
210365
|
}
|
|
210366
210366
|
})().catch((err2) => {
|
|
210367
|
-
|
|
210368
|
-
logForDebugging(`dumpPrompts.response handler unhandled rejection: ${err2}`, { level: "error" });
|
|
210369
|
-
} catch {}
|
|
210367
|
+
logError2(`dumpPrompts.response handler unhandled rejection: ${err2}`);
|
|
210370
210368
|
});
|
|
210371
210369
|
}
|
|
210372
210370
|
return response;
|
|
@@ -301142,14 +301140,9 @@ function memoizeWithTTL(fn, ttlMs) {
|
|
|
301142
301140
|
const result = await memoized(...args);
|
|
301143
301141
|
if (result && typeof result === "object" && "success" in result && result.success === true) {
|
|
301144
301142
|
lastCachedAt = Date.now();
|
|
301145
|
-
} else if (result && typeof result === "object" && "success" in result && result.success === false) {
|
|
301146
|
-
originalClear();
|
|
301147
|
-
lastCachedAt = 0;
|
|
301148
|
-
}
|
|
301143
|
+
} else if (result && typeof result === "object" && "success" in result && result.success === false) {}
|
|
301149
301144
|
return result;
|
|
301150
301145
|
} catch (error49) {
|
|
301151
|
-
originalClear();
|
|
301152
|
-
lastCachedAt = -1;
|
|
301153
301146
|
return { success: false };
|
|
301154
301147
|
}
|
|
301155
301148
|
};
|
|
@@ -301213,13 +301206,21 @@ async function isQualifiedForGrove() {
|
|
|
301213
301206
|
const cachedEntry = globalConfig2.groveConfigCache?.[accountId];
|
|
301214
301207
|
const now2 = Date.now();
|
|
301215
301208
|
if (!cachedEntry) {
|
|
301216
|
-
logForDebugging("Grove: No cache, fetching config
|
|
301217
|
-
fetchAndStoreGroveConfig(accountId);
|
|
301209
|
+
logForDebugging("Grove: No cache, fetching config synchronously");
|
|
301210
|
+
await fetchAndStoreGroveConfig(accountId);
|
|
301211
|
+
const updatedConfig = getGlobalConfig().groveConfigCache?.[accountId];
|
|
301212
|
+
if (updatedConfig) {
|
|
301213
|
+
return updatedConfig.grove_enabled;
|
|
301214
|
+
}
|
|
301218
301215
|
return false;
|
|
301219
301216
|
}
|
|
301220
301217
|
if (now2 - cachedEntry.timestamp > GROVE_CACHE_EXPIRATION_MS) {
|
|
301221
|
-
logForDebugging("Grove: Cache stale,
|
|
301222
|
-
fetchAndStoreGroveConfig(accountId);
|
|
301218
|
+
logForDebugging("Grove: Cache stale, refreshing config");
|
|
301219
|
+
await fetchAndStoreGroveConfig(accountId);
|
|
301220
|
+
const updatedConfig = getGlobalConfig().groveConfigCache?.[accountId];
|
|
301221
|
+
if (updatedConfig) {
|
|
301222
|
+
return updatedConfig.grove_enabled;
|
|
301223
|
+
}
|
|
301223
301224
|
return cachedEntry.grove_enabled;
|
|
301224
301225
|
}
|
|
301225
301226
|
logForDebugging("Grove: Using fresh cached config");
|
|
@@ -301235,27 +301236,41 @@ async function fetchAndStoreGroveConfig(accountId) {
|
|
|
301235
301236
|
mapRelease();
|
|
301236
301237
|
const release = await mutex.acquire();
|
|
301237
301238
|
try {
|
|
301238
|
-
|
|
301239
|
-
|
|
301240
|
-
|
|
301241
|
-
|
|
301242
|
-
|
|
301243
|
-
|
|
301244
|
-
|
|
301245
|
-
|
|
301246
|
-
|
|
301247
|
-
|
|
301248
|
-
|
|
301249
|
-
|
|
301250
|
-
|
|
301251
|
-
|
|
301252
|
-
|
|
301253
|
-
|
|
301239
|
+
let lastError;
|
|
301240
|
+
for (let attempt = 0;attempt < 3; attempt++) {
|
|
301241
|
+
try {
|
|
301242
|
+
const result = await getGroveNoticeConfig();
|
|
301243
|
+
if (!result.success) {
|
|
301244
|
+
if (attempt < 2) {
|
|
301245
|
+
await new Promise((resolve28) => setTimeout(resolve28, 500));
|
|
301246
|
+
continue;
|
|
301247
|
+
}
|
|
301248
|
+
return;
|
|
301249
|
+
}
|
|
301250
|
+
const groveEnabled = result.data.grove_enabled;
|
|
301251
|
+
const cachedEntry = getGlobalConfig().groveConfigCache?.[accountId];
|
|
301252
|
+
if (cachedEntry?.grove_enabled === groveEnabled && Date.now() - cachedEntry.timestamp <= GROVE_CACHE_EXPIRATION_MS) {
|
|
301253
|
+
return;
|
|
301254
|
+
}
|
|
301255
|
+
saveGlobalConfig((current) => ({
|
|
301256
|
+
...current,
|
|
301257
|
+
groveConfigCache: {
|
|
301258
|
+
...current.groveConfigCache,
|
|
301259
|
+
[accountId]: {
|
|
301260
|
+
grove_enabled: groveEnabled,
|
|
301261
|
+
timestamp: Date.now()
|
|
301262
|
+
}
|
|
301263
|
+
}
|
|
301264
|
+
}));
|
|
301265
|
+
return;
|
|
301266
|
+
} catch (err2) {
|
|
301267
|
+
lastError = err2 instanceof Error ? err2 : new Error(String(err2));
|
|
301268
|
+
if (attempt < 2) {
|
|
301269
|
+
await new Promise((resolve28) => setTimeout(resolve28, 500));
|
|
301254
301270
|
}
|
|
301255
301271
|
}
|
|
301256
|
-
}
|
|
301257
|
-
|
|
301258
|
-
logForDebugging(`Grove: Failed to fetch and store config: ${err2}`);
|
|
301272
|
+
}
|
|
301273
|
+
logForDebugging(`Grove: Failed to fetch and store config after 3 attempts: ${lastError}`);
|
|
301259
301274
|
} finally {
|
|
301260
301275
|
release();
|
|
301261
301276
|
}
|
|
@@ -301348,7 +301363,6 @@ var init_grove = __esm(() => {
|
|
|
301348
301363
|
return { success: true, data: response.data };
|
|
301349
301364
|
} catch (err2) {
|
|
301350
301365
|
logError2(err2);
|
|
301351
|
-
getGroveSettings.cache.clear?.();
|
|
301352
301366
|
return { success: false };
|
|
301353
301367
|
}
|
|
301354
301368
|
}, GROVE_CACHE_EXPIRATION_MS);
|
|
@@ -301390,7 +301404,6 @@ var init_grove = __esm(() => {
|
|
|
301390
301404
|
if (axios_default.isAxiosError(err2) && err2.code === "ECONNABORTED") {
|
|
301391
301405
|
logForDebugging(`Grove: API request timed out after ${GROVE_API_TIMEOUT_MS}ms. This may cause the Grove dialog to be suppressed for users with slow connections.`);
|
|
301392
301406
|
}
|
|
301393
|
-
getGroveNoticeConfig.cache.clear?.();
|
|
301394
301407
|
return { success: false };
|
|
301395
301408
|
}
|
|
301396
301409
|
}, GROVE_CACHE_EXPIRATION_MS);
|
|
@@ -342434,7 +342447,9 @@ async function getSessionLogs(sessionId, url3) {
|
|
|
342434
342447
|
return null;
|
|
342435
342448
|
}
|
|
342436
342449
|
const headers = { Authorization: `Bearer ${sessionToken}` };
|
|
342437
|
-
const
|
|
342450
|
+
const sequential2 = getOrCreateSequential(sessionId);
|
|
342451
|
+
const result = await sequential2(sessionId, url3, headers, true);
|
|
342452
|
+
const logs2 = result;
|
|
342438
342453
|
if (logs2 && logs2.length > 0) {
|
|
342439
342454
|
const lastEntry = logs2.at(-1);
|
|
342440
342455
|
if (lastEntry && "uuid" in lastEntry && lastEntry.uuid) {
|
|
@@ -453787,8 +453802,10 @@ async function fetchReferralEligibility(campaign = "claude_code_guest_pass") {
|
|
|
453787
453802
|
};
|
|
453788
453803
|
const url3 = `${getOauthConfig().BASE_API_URL}/api/oauth/organizations/${orgUUID}/referral/eligibility`;
|
|
453789
453804
|
let resolvePromise;
|
|
453790
|
-
|
|
453805
|
+
let rejectPromise;
|
|
453806
|
+
const promise3 = new Promise((resolve47, reject2) => {
|
|
453791
453807
|
resolvePromise = resolve47;
|
|
453808
|
+
rejectPromise = reject2;
|
|
453792
453809
|
});
|
|
453793
453810
|
fetchInProgressMap.set(orgUUID, promise3);
|
|
453794
453811
|
(async () => {
|
|
@@ -453802,7 +453819,7 @@ async function fetchReferralEligibility(campaign = "claude_code_guest_pass") {
|
|
|
453802
453819
|
} catch (error49) {
|
|
453803
453820
|
logError2(error49);
|
|
453804
453821
|
fetchInProgressMap.delete(orgUUID);
|
|
453805
|
-
|
|
453822
|
+
rejectPromise(error49);
|
|
453806
453823
|
}
|
|
453807
453824
|
})();
|
|
453808
453825
|
return promise3;
|