@seqyuan/annodex 0.1.67 → 0.1.69
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +6 -5
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/runtime/route.js +2 -2
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/login/route.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/auth/status/route.js +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/extensions/discover/route.js +1 -1
- package/.next/server/app/api/extensions/mcp/route.js +1 -1
- package/.next/server/app/api/extensions/plugin/route.js +1 -1
- package/.next/server/app/api/extensions/plugin-marketplace/route.js +1 -1
- package/.next/server/app/api/extensions/route.js +1 -1
- package/.next/server/app/api/extensions/session/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/harness/route.js +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/im/gateway-token/route.js +2 -0
- package/.next/server/app/api/im/gateway-token/route.js.nft.json +1 -0
- package/.next/server/app/api/im/gateway-token/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/im/project/route.js +2 -2
- package/.next/server/app/api/im/projects/route.js +2 -2
- package/.next/server/app/api/im/turn/route.js +4 -2
- package/.next/server/app/api/images/upload/route.js +1 -1
- package/.next/server/app/api/internal/runtime/route.js +1 -1
- package/.next/server/app/api/memory/promote/route.js +2 -2
- package/.next/server/app/api/memory/recall/route.js +4 -4
- package/.next/server/app/api/memory/reflect/route.js +2 -2
- package/.next/server/app/api/memory/retain/route.js +1 -1
- package/.next/server/app/api/memory/status/route.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/projects/browse/route.js +1 -1
- package/.next/server/app/api/projects/route.js +1 -1
- package/.next/server/app/api/search/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/new/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/settings/route.js +1 -1
- package/.next/server/app/api/skills/install/route.js +2 -2
- package/.next/server/app/api/skills/route.js +2 -2
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/soul/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/docs/changelog/page.js +2 -2
- package/.next/server/app/docs/changelog/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs/changelog.html +2 -2
- package/.next/server/app/docs/changelog.rsc +2 -2
- package/.next/server/app/docs/changelog.segments/_full.segment.rsc +2 -2
- package/.next/server/app/docs/changelog.segments/_head.segment.rsc +1 -1
- package/.next/server/app/docs/changelog.segments/_index.segment.rsc +2 -2
- package/.next/server/app/docs/changelog.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/docs/changelog.segments/docs/changelog/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/docs/changelog.segments/docs/changelog.segment.rsc +1 -1
- package/.next/server/app/docs/changelog.segments/docs.segment.rsc +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page.js +2 -2
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspace/page.js +4 -4
- package/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspace.html +1 -1
- package/.next/server/app/workspace.rsc +3 -3
- package/.next/server/app/workspace.segments/_full.segment.rsc +3 -3
- package/.next/server/app/workspace.segments/_head.segment.rsc +1 -1
- package/.next/server/app/workspace.segments/_index.segment.rsc +2 -2
- package/.next/server/app/workspace.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/workspace.segments/workspace/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/workspace.segments/workspace.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +6 -5
- package/.next/server/chunks/6983.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/app/{api/agent/[id]/route-44cbd53a31a3f701.js → _global-error/page-e4c3159b5453fb6b.js} +1 -1
- package/.next/static/chunks/app/api/agent/{new/route-44cbd53a31a3f701.js → [id]/events/route-e4c3159b5453fb6b.js} +1 -1
- package/.next/static/chunks/app/{_global-error/page-44cbd53a31a3f701.js → api/agent/[id]/route-e4c3159b5453fb6b.js} +1 -1
- package/.next/static/chunks/app/api/agent/{[id]/events/route-44cbd53a31a3f701.js → new/route-e4c3159b5453fb6b.js} +1 -1
- package/.next/static/chunks/app/api/agent/runtime/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/extensions/discover/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/extensions/mcp/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/extensions/plugin/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/extensions/plugin-marketplace/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/extensions/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/extensions/session/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/harness/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/home/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/im/gateway-token/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/im/project/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/im/projects/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/im/turn/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/images/upload/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/internal/runtime/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/memory/promote/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/memory/recall/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/memory/reflect/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/memory/retain/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/memory/status/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/models/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/projects/browse/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/projects/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/search/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/sessions/new/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/settings/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/skills/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/soul/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/api/version/route-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/page-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/app/workspace/{page-ff1403a471d556ca.js → page-1eeb93cd845060b2.js} +8 -8
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-e4c3159b5453fb6b.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e4c3159b5453fb6b.js +1 -0
- package/.next/static/css/467c4b6fee759c2e.css +1 -0
- package/.next/static/vqqXuNPGDA1NWhJN5rLvR/_buildManifest.js +1 -0
- package/bin/annodex-im-gateway.js +273 -58
- package/bin/annodex.js +14 -0
- package/package.json +1 -1
- package/.next/static/35GeCDRUeg9OBUsdN7kvk/_buildManifest.js +0 -1
- package/.next/static/chunks/app/api/agent/runtime/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/extensions/discover/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/extensions/mcp/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/extensions/plugin/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/extensions/plugin-marketplace/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/extensions/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/extensions/session/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/harness/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/home/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/im/project/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/im/projects/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/im/turn/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/images/upload/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/internal/runtime/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/memory/promote/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/memory/recall/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/memory/reflect/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/memory/retain/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/memory/status/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/models/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/projects/browse/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/projects/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/search/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/sessions/new/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/settings/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/skills/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/soul/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/api/version/route-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/app/page-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-44cbd53a31a3f701.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-44cbd53a31a3f701.js +0 -1
- package/.next/static/css/344e9ed83d2f01be.css +0 -1
- /package/.next/static/{35GeCDRUeg9OBUsdN7kvk → vqqXuNPGDA1NWhJN5rLvR}/_ssgManifest.js +0 -0
|
@@ -23,6 +23,33 @@ function getAgentDir() {
|
|
|
23
23
|
return envFirst("ANNODEX_CONFIG_DIR", "ANNOVIBE_CONFIG_DIR") ?? path.join(os.homedir(), ".config", "annodex");
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
function ensureAgentDir() {
|
|
27
|
+
const dir = getAgentDir();
|
|
28
|
+
try {
|
|
29
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
30
|
+
fs.accessSync(dir, fs.constants.W_OK);
|
|
31
|
+
} catch (error) {
|
|
32
|
+
const code = error && typeof error === "object" && "code" in error ? error.code : "";
|
|
33
|
+
const user = os.userInfo().username;
|
|
34
|
+
if (code === "EACCES") {
|
|
35
|
+
throw new Error(
|
|
36
|
+
`Cannot write annodex config dir for user ${user}: ${dir}. Check HOME permissions (same model as annodex CLI).`,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
return dir;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function readAnnodexState() {
|
|
45
|
+
const statePath = path.join(getAgentDir(), "annodex.json");
|
|
46
|
+
try {
|
|
47
|
+
return JSON.parse(fs.readFileSync(statePath, "utf8"));
|
|
48
|
+
} catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
26
53
|
function readGatewayToken() {
|
|
27
54
|
const statePath = path.join(getAgentDir(), "im-gateway.json");
|
|
28
55
|
try {
|
|
@@ -33,36 +60,23 @@ function readGatewayToken() {
|
|
|
33
60
|
}
|
|
34
61
|
}
|
|
35
62
|
|
|
36
|
-
function
|
|
37
|
-
const
|
|
38
|
-
if (
|
|
39
|
-
|
|
40
|
-
const port = envFirst("ANNODEX_PORT", "PORT") ?? readStatePort() ?? "30121";
|
|
41
|
-
const hostname = envFirst("ANNODEX_HOST", "HOSTNAME") ?? "127.0.0.1";
|
|
42
|
-
return `http://${hostname}:${port}`;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function readStatePort() {
|
|
46
|
-
const statePath = path.join(getAgentDir(), "annodex.json");
|
|
47
|
-
try {
|
|
48
|
-
const state = JSON.parse(fs.readFileSync(statePath, "utf8"));
|
|
49
|
-
if (state?.port) return String(state.port);
|
|
50
|
-
if (state?.url) {
|
|
51
|
-
const url = new URL(String(state.url));
|
|
52
|
-
return url.port || (url.protocol === "https:" ? "443" : "80");
|
|
53
|
-
}
|
|
54
|
-
} catch {
|
|
55
|
-
// ignore
|
|
63
|
+
function formatImApiError(statusCode, parsed) {
|
|
64
|
+
const message = parsed.error || parsed.reply || `HTTP ${statusCode}`;
|
|
65
|
+
if (statusCode === 401) {
|
|
66
|
+
return `${message}. Ensure annodex is running in this Linux account and gateway token is synced (restart annodex-im-gateway after saving IM settings).`;
|
|
56
67
|
}
|
|
57
|
-
|
|
68
|
+
if (statusCode === 403) {
|
|
69
|
+
return `${message}. annodex-im-gateway must reach annodex on localhost, or configure a gateway token in Settings → Project → WeCom IM.`;
|
|
70
|
+
}
|
|
71
|
+
return message;
|
|
58
72
|
}
|
|
59
73
|
|
|
60
|
-
function
|
|
74
|
+
function requestJsonRaw(method, pathname, body, options = {}) {
|
|
61
75
|
const baseUrl = resolveBaseUrl();
|
|
62
76
|
const url = new URL(pathname, baseUrl);
|
|
63
77
|
const payload = body === undefined ? undefined : JSON.stringify(body);
|
|
64
78
|
const lib = url.protocol === "https:" ? https : http;
|
|
65
|
-
const token = readGatewayToken();
|
|
79
|
+
const token = options.skipAuth ? "" : readGatewayToken();
|
|
66
80
|
|
|
67
81
|
return new Promise((resolve, reject) => {
|
|
68
82
|
const req = lib.request(
|
|
@@ -92,7 +106,7 @@ function requestJson(method, pathname, body) {
|
|
|
92
106
|
return;
|
|
93
107
|
}
|
|
94
108
|
if (res.statusCode && res.statusCode >= 400) {
|
|
95
|
-
reject(new Error(
|
|
109
|
+
reject(new Error(formatImApiError(res.statusCode, parsed)));
|
|
96
110
|
return;
|
|
97
111
|
}
|
|
98
112
|
resolve(parsed);
|
|
@@ -105,12 +119,150 @@ function requestJson(method, pathname, body) {
|
|
|
105
119
|
});
|
|
106
120
|
}
|
|
107
121
|
|
|
108
|
-
function
|
|
122
|
+
function requestJson(method, pathname, body) {
|
|
123
|
+
return requestJsonRaw(method, pathname, body);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function parseSseEvents(buffer) {
|
|
127
|
+
const events = [];
|
|
128
|
+
const parts = buffer.split("\n\n");
|
|
129
|
+
const remainder = parts.pop() ?? "";
|
|
130
|
+
for (const part of parts) {
|
|
131
|
+
for (const line of part.split("\n")) {
|
|
132
|
+
if (!line.startsWith("data: ")) continue;
|
|
133
|
+
try {
|
|
134
|
+
events.push(JSON.parse(line.slice(6)));
|
|
135
|
+
} catch {
|
|
136
|
+
// ignore malformed frames
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return { events, remainder };
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function requestImTurnStream(body, handlers = {}) {
|
|
144
|
+
const baseUrl = resolveBaseUrl();
|
|
145
|
+
const url = new URL("/api/im/turn", baseUrl);
|
|
146
|
+
const payload = JSON.stringify(body);
|
|
147
|
+
const lib = url.protocol === "https:" ? https : http;
|
|
148
|
+
const token = readGatewayToken();
|
|
149
|
+
|
|
150
|
+
return new Promise((resolve, reject) => {
|
|
151
|
+
const req = lib.request(
|
|
152
|
+
url,
|
|
153
|
+
{
|
|
154
|
+
method: "POST",
|
|
155
|
+
headers: {
|
|
156
|
+
"Content-Type": "application/json",
|
|
157
|
+
"Content-Length": Buffer.byteLength(payload),
|
|
158
|
+
Accept: "text/event-stream",
|
|
159
|
+
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
(res) => {
|
|
163
|
+
if (res.statusCode && res.statusCode >= 400) {
|
|
164
|
+
let data = "";
|
|
165
|
+
res.setEncoding("utf8");
|
|
166
|
+
res.on("data", (chunk) => { data += chunk; });
|
|
167
|
+
res.on("end", () => {
|
|
168
|
+
let parsed;
|
|
169
|
+
try {
|
|
170
|
+
parsed = data ? JSON.parse(data) : {};
|
|
171
|
+
} catch {
|
|
172
|
+
parsed = { error: data || `HTTP ${res.statusCode}` };
|
|
173
|
+
}
|
|
174
|
+
reject(new Error(formatImApiError(res.statusCode, parsed)));
|
|
175
|
+
});
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
let buffer = "";
|
|
180
|
+
let doneEvent = null;
|
|
181
|
+
|
|
182
|
+
const handleEvents = (events) => {
|
|
183
|
+
for (const event of events) {
|
|
184
|
+
if (!event || typeof event !== "object") continue;
|
|
185
|
+
if (event.type === "status" && typeof handlers.onStatus === "function") {
|
|
186
|
+
handlers.onStatus(event.phase);
|
|
187
|
+
}
|
|
188
|
+
if (event.type === "delta" && typeof event.text === "string" && typeof handlers.onDelta === "function") {
|
|
189
|
+
handlers.onDelta(event.text);
|
|
190
|
+
}
|
|
191
|
+
if (event.type === "done") {
|
|
192
|
+
doneEvent = event;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
res.setEncoding("utf8");
|
|
198
|
+
res.on("data", (chunk) => {
|
|
199
|
+
buffer += chunk;
|
|
200
|
+
const parsed = parseSseEvents(buffer);
|
|
201
|
+
buffer = parsed.remainder;
|
|
202
|
+
handleEvents(parsed.events);
|
|
203
|
+
});
|
|
204
|
+
res.on("end", () => {
|
|
205
|
+
if (buffer.trim()) {
|
|
206
|
+
const parsed = parseSseEvents(`${buffer}\n\n`);
|
|
207
|
+
handleEvents(parsed.events);
|
|
208
|
+
}
|
|
209
|
+
if (doneEvent) {
|
|
210
|
+
resolve(doneEvent);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
reject(new Error("IM turn stream ended without a done event"));
|
|
214
|
+
});
|
|
215
|
+
},
|
|
216
|
+
);
|
|
217
|
+
req.on("error", reject);
|
|
218
|
+
req.write(payload);
|
|
219
|
+
req.end();
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
function resolveBaseUrl() {
|
|
224
|
+
const explicit = envFirst("ANNODEX_URL", "ANNOVIBE_URL");
|
|
225
|
+
if (explicit) return explicit.replace(/\/$/, "");
|
|
226
|
+
|
|
227
|
+
const state = readAnnodexState();
|
|
228
|
+
if (state?.url) {
|
|
229
|
+
return String(state.url).replace(/\/$/, "");
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
const listenPort = envFirst("ANNODEX_PORT", "PORT") ?? state?.port;
|
|
233
|
+
const listenHost = envFirst("ANNODEX_HOST", "HOSTNAME") ?? state?.hostname ?? "127.0.0.1";
|
|
234
|
+
if (listenPort) {
|
|
235
|
+
return `http://${listenHost}:${listenPort}`;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const user = os.userInfo().username;
|
|
239
|
+
throw new Error(
|
|
240
|
+
`No annodex server for user ${user}. Run annodex in this account first, or set ANNODEX_URL (config: ${getAgentDir()}).`,
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
async function syncGatewayTokenFromServer() {
|
|
109
245
|
try {
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
246
|
+
const payload = await requestJsonRaw("GET", "/api/im/gateway-token", undefined, { skipAuth: true });
|
|
247
|
+
const serverToken = typeof payload.token === "string" ? payload.token.trim() : "";
|
|
248
|
+
const serverConfigDir = typeof payload.configDir === "string" ? payload.configDir.trim() : "";
|
|
249
|
+
const localConfigDir = getAgentDir();
|
|
250
|
+
|
|
251
|
+
if (serverConfigDir && serverConfigDir !== localConfigDir) {
|
|
252
|
+
console.error(
|
|
253
|
+
`[im] note: annodex server config is ${serverConfigDir}; this gateway uses ${localConfigDir}. IM projects and secrets come from the server account.`,
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if (!serverToken) return;
|
|
258
|
+
|
|
259
|
+
const localToken = readGatewayToken();
|
|
260
|
+
if (localToken === serverToken) return;
|
|
261
|
+
|
|
262
|
+
writeGatewayState({ token: serverToken });
|
|
263
|
+
console.error("[im] synced gateway token from annodex server");
|
|
264
|
+
} catch (error) {
|
|
265
|
+
console.error(`[im] could not sync gateway token: ${String(error)}`);
|
|
114
266
|
}
|
|
115
267
|
}
|
|
116
268
|
|
|
@@ -341,6 +493,12 @@ class WeComLiveReply {
|
|
|
341
493
|
this.transport = transport;
|
|
342
494
|
this.reqId = reqId;
|
|
343
495
|
this.revision = 0;
|
|
496
|
+
this.streamId = `${reqId}-stream`;
|
|
497
|
+
this.pushIntervalMs = 300;
|
|
498
|
+
this.lastPushAt = 0;
|
|
499
|
+
this.pendingText = null;
|
|
500
|
+
this.pushTimer = null;
|
|
501
|
+
this.pushChain = Promise.resolve();
|
|
344
502
|
}
|
|
345
503
|
|
|
346
504
|
nextRevision() {
|
|
@@ -349,35 +507,66 @@ class WeComLiveReply {
|
|
|
349
507
|
}
|
|
350
508
|
|
|
351
509
|
async beginProcessing() {
|
|
352
|
-
await this.
|
|
353
|
-
this.reqId,
|
|
354
|
-
`${Date.now()}-start`,
|
|
355
|
-
applyWeComRevisionSuffix(formatProcessingPlaceholder(1), this.nextRevision()),
|
|
356
|
-
true,
|
|
357
|
-
);
|
|
510
|
+
await this.pushImmediate(formatProcessingPlaceholder(1), false);
|
|
358
511
|
}
|
|
359
512
|
|
|
360
513
|
async refreshProcessing(elapsedSeconds) {
|
|
361
|
-
await this.
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
);
|
|
514
|
+
await this.pushImmediate(formatProcessingPlaceholder(elapsedSeconds), false);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
schedulePush(text) {
|
|
518
|
+
this.pendingText = text;
|
|
519
|
+
const now = Date.now();
|
|
520
|
+
if (now - this.lastPushAt >= this.pushIntervalMs) {
|
|
521
|
+
void this.flushPush();
|
|
522
|
+
return;
|
|
523
|
+
}
|
|
524
|
+
if (this.pushTimer) return;
|
|
525
|
+
this.pushTimer = setTimeout(() => {
|
|
526
|
+
void this.flushPush();
|
|
527
|
+
}, this.pushIntervalMs - (now - this.lastPushAt));
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
async push(text) {
|
|
531
|
+
await this.pushImmediate(text, false);
|
|
367
532
|
}
|
|
368
533
|
|
|
369
534
|
async finish(text) {
|
|
370
|
-
|
|
371
|
-
this.
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
);
|
|
535
|
+
if (this.pushTimer) {
|
|
536
|
+
clearTimeout(this.pushTimer);
|
|
537
|
+
this.pushTimer = null;
|
|
538
|
+
}
|
|
539
|
+
this.pendingText = null;
|
|
540
|
+
await this.pushImmediate(text, true);
|
|
376
541
|
}
|
|
377
542
|
|
|
378
543
|
async fail(text) {
|
|
379
544
|
await this.finish(text);
|
|
380
545
|
}
|
|
546
|
+
|
|
547
|
+
async flushPush() {
|
|
548
|
+
if (this.pushTimer) {
|
|
549
|
+
clearTimeout(this.pushTimer);
|
|
550
|
+
this.pushTimer = null;
|
|
551
|
+
}
|
|
552
|
+
const text = this.pendingText;
|
|
553
|
+
if (text === null) return;
|
|
554
|
+
this.pendingText = null;
|
|
555
|
+
await this.pushImmediate(text, false);
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
async pushImmediate(text, finish) {
|
|
559
|
+
this.pushChain = this.pushChain.then(async () => {
|
|
560
|
+
await this.transport.replyStream(
|
|
561
|
+
this.reqId,
|
|
562
|
+
this.streamId,
|
|
563
|
+
applyWeComRevisionSuffix(text, this.nextRevision()),
|
|
564
|
+
finish,
|
|
565
|
+
);
|
|
566
|
+
this.lastPushAt = Date.now();
|
|
567
|
+
});
|
|
568
|
+
await this.pushChain;
|
|
569
|
+
}
|
|
381
570
|
}
|
|
382
571
|
|
|
383
572
|
class ProjectWeComBridge {
|
|
@@ -390,9 +579,9 @@ class ProjectWeComBridge {
|
|
|
390
579
|
|
|
391
580
|
async start() {
|
|
392
581
|
if (this.stopped) return;
|
|
393
|
-
const secret =
|
|
582
|
+
const secret = typeof this.project.botSecret === "string" ? this.project.botSecret.trim() : "";
|
|
394
583
|
if (!secret) {
|
|
395
|
-
console.error(`[im] missing bot secret for ${this.project.cwd}`);
|
|
584
|
+
console.error(`[im] missing bot secret for ${this.project.cwd} (annodex server did not return botSecret)`);
|
|
396
585
|
this.scheduleReconnect(30_000);
|
|
397
586
|
return;
|
|
398
587
|
}
|
|
@@ -439,28 +628,39 @@ class ProjectWeComBridge {
|
|
|
439
628
|
const reply = new WeComLiveReply(this.client, inbound.reqId);
|
|
440
629
|
const startedAt = Date.now();
|
|
441
630
|
let refreshTimer = null;
|
|
631
|
+
let toolsRunning = false;
|
|
442
632
|
|
|
443
633
|
try {
|
|
444
634
|
await reply.beginProcessing();
|
|
445
635
|
refreshTimer = setInterval(() => {
|
|
446
|
-
|
|
447
|
-
|
|
636
|
+
if (toolsRunning) {
|
|
637
|
+
const elapsed = Math.max(1, Math.floor((Date.now() - startedAt) / 1000));
|
|
638
|
+
void reply.refreshProcessing(elapsed).catch(() => undefined);
|
|
639
|
+
}
|
|
448
640
|
}, 5_000);
|
|
449
641
|
|
|
450
|
-
const result = await
|
|
642
|
+
const result = await requestImTurnStream({
|
|
451
643
|
cwd: this.project.cwd,
|
|
452
644
|
userId: inbound.userId,
|
|
453
645
|
message: inbound.content,
|
|
454
646
|
chatId: inbound.chatId,
|
|
647
|
+
}, {
|
|
648
|
+
onStatus: (phase) => {
|
|
649
|
+
toolsRunning = phase === "running_tools" || phase === "waiting_model";
|
|
650
|
+
},
|
|
651
|
+
onDelta: (text) => {
|
|
652
|
+
toolsRunning = false;
|
|
653
|
+
reply.schedulePush(text);
|
|
654
|
+
},
|
|
455
655
|
});
|
|
456
656
|
|
|
457
657
|
if (result.ok === false) {
|
|
458
|
-
console.error(`[im] turn failed for ${this.project.cwd} user ${inbound.userId}: ${result.
|
|
658
|
+
console.error(`[im] turn failed for ${this.project.cwd} user ${inbound.userId}: ${result.reply || "unknown error"}`);
|
|
459
659
|
}
|
|
460
660
|
|
|
461
661
|
const text = typeof result.reply === "string" && result.reply.trim()
|
|
462
662
|
? result.reply.trim()
|
|
463
|
-
:
|
|
663
|
+
: "No reply from annodex.";
|
|
464
664
|
await reply.finish(text);
|
|
465
665
|
} catch (error) {
|
|
466
666
|
console.error(`[im] turn request failed for ${this.project.cwd} user ${inbound.userId}: ${String(error)}`);
|
|
@@ -492,7 +692,7 @@ class ImGateway {
|
|
|
492
692
|
const activeKeys = new Set();
|
|
493
693
|
|
|
494
694
|
for (const project of projects) {
|
|
495
|
-
if (!project?.cwd || !project?.botId || !project?.
|
|
695
|
+
if (!project?.cwd || !project?.botId || !project?.botSecret) continue;
|
|
496
696
|
activeKeys.add(project.cwd);
|
|
497
697
|
if (this.bridges.has(project.cwd)) {
|
|
498
698
|
this.bridges.get(project.cwd).project = project;
|
|
@@ -536,8 +736,19 @@ function writeGatewayState(patch) {
|
|
|
536
736
|
} catch {
|
|
537
737
|
// ignore
|
|
538
738
|
}
|
|
539
|
-
|
|
540
|
-
|
|
739
|
+
try {
|
|
740
|
+
fs.mkdirSync(path.dirname(statePath), { recursive: true });
|
|
741
|
+
fs.writeFileSync(statePath, JSON.stringify({ ...state, ...patch }, null, 2), "utf8");
|
|
742
|
+
} catch (error) {
|
|
743
|
+
if (error && typeof error === "object" && "code" in error && error.code === "EACCES") {
|
|
744
|
+
const user = os.userInfo().username;
|
|
745
|
+
console.error(
|
|
746
|
+
`[im] warning: cannot write ${statePath} for user ${user}. Each account uses its own ~/.config/annodex — do not point ANNODEX_CONFIG_DIR at another user's home.`,
|
|
747
|
+
);
|
|
748
|
+
return;
|
|
749
|
+
}
|
|
750
|
+
throw error;
|
|
751
|
+
}
|
|
541
752
|
}
|
|
542
753
|
|
|
543
754
|
async function main() {
|
|
@@ -550,7 +761,11 @@ async function main() {
|
|
|
550
761
|
process.on("SIGINT", () => { void shutdown(); });
|
|
551
762
|
process.on("SIGTERM", () => { void shutdown(); });
|
|
552
763
|
|
|
553
|
-
|
|
764
|
+
const configDir = ensureAgentDir();
|
|
765
|
+
const user = os.userInfo().username;
|
|
766
|
+
const baseUrl = resolveBaseUrl();
|
|
767
|
+
console.error(`[im] annodex-im-gateway user=${user} config=${configDir} annodex=${baseUrl}`);
|
|
768
|
+
await syncGatewayTokenFromServer();
|
|
554
769
|
await gateway.start();
|
|
555
770
|
}
|
|
556
771
|
|
package/bin/annodex.js
CHANGED
|
@@ -1132,6 +1132,7 @@ Usage:
|
|
|
1132
1132
|
annodex stop Stop background annodex (and orphaned codex app-server processes)
|
|
1133
1133
|
annodex status [--json] Show background server status
|
|
1134
1134
|
annodex logs [-f] Show background server logs
|
|
1135
|
+
annodex im-gateway Run WeCom IM sidecar (uses this user's ~/.config/annodex)
|
|
1135
1136
|
annodex doctor [--json] [--repair] Diagnose local codex/runtime setup
|
|
1136
1137
|
annodex passwd Set or change password (empty = disable auth)
|
|
1137
1138
|
annodex update Update to the latest version
|
|
@@ -1166,6 +1167,19 @@ if (firstPos === "logs") {
|
|
|
1166
1167
|
return;
|
|
1167
1168
|
}
|
|
1168
1169
|
|
|
1170
|
+
if (firstPos === "im-gateway") {
|
|
1171
|
+
const gatewayScript = path.join(__dirname, "annodex-im-gateway.js");
|
|
1172
|
+
const child = spawn(process.execPath, [gatewayScript, ...positionals.slice(1)], {
|
|
1173
|
+
stdio: "inherit",
|
|
1174
|
+
env: process.env,
|
|
1175
|
+
});
|
|
1176
|
+
child.on("exit", (code, signal) => {
|
|
1177
|
+
if (signal) process.exit(1);
|
|
1178
|
+
process.exit(code ?? 0);
|
|
1179
|
+
});
|
|
1180
|
+
return;
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1169
1183
|
if (firstPos === "stop") {
|
|
1170
1184
|
stopManagedServer()
|
|
1171
1185
|
.then((code) => process.exit(code))
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:46,errorRate:1e-4,numBits:882,numHashes:14,bitArray:[1,1,1,0,0,0,1,0,1,0,1,0,0,0,1,1,1,0,0,1,0,1,1,1,1,0,1,1,0,0,1,0,1,0,1,1,1,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,1,0,0,0,1,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,1,0,1,1,0,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,1,1,0,0,1,0,1,0,0,0,1,0,1,1,0,1,1,0,0,1,0,1,1,0,0,1,1,0,0,1,1,1,0,1,0,0,0,1,1,1,0,0,1,1,1,0,1,1,1,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,0,0,1,1,1,0,1,0,1,1,1,1,1,1,0,1,0,1,0,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,0,1,0,1,0,1,1,0,1,1,0,0,1,0,0,0,1,1,1,0,1,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0,1,1,1,0,0,1,0,1,1,1,1,1,0,0,1,0,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,0,0,0,1,0,1,0,1,1,0,1,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,0,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,1,1,0,1,1,0,0,0,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,0,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1,0,1,0,1,1,0,0,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,1,1,0,0,1,1,0,1,1,1,0,0,0,1,0,0,1,1,1,0,1,1,0,1,1,1,0,0,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,0,0,0,1,1,1,0,1,1,0,1,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,0,0,0,0,1,0,0,1,0,1,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,1,1,1,1,0,0,1,1,0,0,0,1,0,1,0,1,1,1,0,1,0,1,1,1,0,1,1,1,0,0,1,0,1,0,1,1,1,1,0,1,0,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,1,0,1,1,0]},__routerFilterDynamic:{numItems:6,errorRate:1e-4,numBits:116,numHashes:14,bitArray:[1,1,0,0,0,1,0,1,1,1,1,0,1,0,1,0,0,1,1,1,0,1,1,0,1,1,0,1,0,1,1,0,0,0,1,0,0,1,0,1,1,0,0,1,1,1,0,0,0,1,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,1,1,1,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,0,0,1,0,1,0,0,1,1,0,0,0]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,186,222,552,976,1004,1097,1109,1327,1541,1852,1921,2234,2752,2922,2976,3412,3785,3851,3955,4037,4352,4368,4610,4896,5177,5221,5281,5738,5781,5907,6202,6450,6709,6819,6849,6919,6988,7070,7473,7483,7758,7778,7812,7851,8167,8658,8733,8743,8933,8974,9787,9949,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|