diff --git a/manifest.json b/manifest.json index 8955266..aa2aabb 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "schema": "arcrun-rag-bundles/v1", "built": "2026-07-31", - "source": "Arcrun@341bcb1", + "source": "Arcrun@9f777ff", "core": [ { "name": "arcrun-array-ops", @@ -503,7 +503,7 @@ "tier": 2, "main_file": "tier2/cypher/index.js", "main_module": "index.js", - "sha256": "0761688567af20a0ccaca1ee07258e5500514703ae1b40d74e5bf6575aad452f", + "sha256": "aa65d7fa72ce4684de4f0289694bac0a988406086c09ebceda4098fded7008be", "compat_date": "2025-02-19", "compat_flags": [ "nodejs_compat", @@ -634,7 +634,7 @@ "tier": 2, "main_file": "tier2/ui/index.js", "main_module": "index.js", - "sha256": "2e6ce19476444e30ec4c0cb2a6869dbb9c50db3d0b82e18adf05830a05514cba", + "sha256": "30ea47698513e66df985cd54a0d3235ca226a8300326c70b2b358f31bc81e44d", "compat_date": "2026-07-01", "compat_flags": [], "modules": [], diff --git a/tier2/cypher/index.js b/tier2/cypher/index.js index 24ea982..6b83464 100644 --- a/tier2/cypher/index.js +++ b/tier2/cypher/index.js @@ -9876,10 +9876,12 @@ init_virtual_unenv_global_polyfill_cloudflare_unenv_preset_node_console(); init_performance2(); init_dist(); var healthRouter = new Hono2(); -healthRouter.get( - "/health", - (c) => c.json({ ok: true }) -); +healthRouter.get("/health", (c) => { + const bundleVersion = c.env.ARCRUN_BUNDLE_VERSION; + return c.json( + bundleVersion ? { ok: true, bundle_version: bundleVersion } : { ok: true } + ); +}); healthRouter.get( "/", (c) => c.json({ diff --git a/tier2/ui/index.js b/tier2/ui/index.js index b5ea795..05ca627 100644 --- a/tier2/ui/index.js +++ b/tier2/ui/index.js @@ -1,5 +1,5 @@ // arcrun-rag-ui — 用戶實例的 GUI(console-ui/public 內嵌;t20④d-2 由 build-ui-bundle.mjs 產生,勿手改) -const FILES = {"/console/dashboard/index.html":{"type":"text/html; charset=utf-8","b64":false,"data":"\n\n\n\n\nArcrun 駕駛艙\n\n\n\n\n\n\n
\n
\n
Arcrun 駕駛艙
\n
\n
\n \n
\n
\n
\n
\n
\n
載入中
\n
\n
\n
\n
\n
\n
今日完成
\n
/
\n
\n
\n
\n
收件匣未處理
\n
\n
來自 Telegram
\n
\n
\n
\n
等你的事
\n
載入中…
\n
\n
\n
今日路線
\n \n
本週
\n \n
系統狀況live 健康信號
\n
載入中…
\n
每 60 秒自動刷新
\n 進入完整控制台 ›\n
\n\n\n\n"},"/console/index.html":{"type":"text/html; charset=utf-8","b64":false,"data":"\n\n\n\n\nArcrun Console\n\n\n\n\n\n\n\n\n
\n
\n
\n
Arcrun
\n
私人系統・僅供擁有者進入
\n
\n
\n \n \n \n
\n
\n
這是一個人的智慧總部。
若你不是擁有者,這裡沒有你要找的東西。
\n \n \n
\n
\n\n\n
\n
\n
\n
Arcrun
\n
首次設定
\n
系統偵測到尚未設定擁有者帳號。
設定一組 Email 與密碼,之後只有你能進入。
\n
\n
\n \n \n \n \n
\n
\n \n
\n
\n\n\n
\n
\n
Arcrun
\n \n
總庫搜尋
\n
工作流
\n \n
設定
\n
☾ 切深色
\n
\n
\n
\n\n \n
\n
Arcrun 控制台
\n
\n
\n
\n
\n
\n
載入中
\n
\n
\n
\n
\n
\n
今日完成
\n
/
\n
\n
\n
\n
收件匣未處理
\n
\n
來自 Telegram
\n
\n
\n
\n
等你的事
\n
載入中…
\n
\n
\n
\n
\n
\n 今日路線狀態即時同步\n
\n
  • 載入中…
\n
本週
\n
    \n
    每 60 秒自動刷新
    \n
    \n
    \n
    \n\n \n
    \n
    總庫搜尋
    \n
    \n
    \n
    \n 藏書地圖\n
    \n
    地圖載入中…
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n \n
    \n
    \n \n 知識卡片\n
    \n
    \n
    載入中…
    \n
    \n
    關聯視圖
    \n
    \n
    \n
    \n
    \n
    \n\n \n
    \n
    工作流
    \n \n
    載入中…
    \n
    \n
    零件與 Recipes(框架資源)
    \n
    \n \n \n
    \n
    \n
    \n
    \n\n \n
    \n
    憑證管理
    \n
    \n 🛡 保險箱原則:系統只保存目錄與加密後的值,任何頁面都看不到密文內容。只能整筆替換或刪除。\n
    \n
    \n
    新增憑證
    \n
    \n \n \n \n \n
    \n
    \n
    \n
    載入中…
    \n
    \n\n \n
    \n
    分流台全部待辦・80/15/5
    \n
    \n
    載入中…
    \n
    \n\n \n
    \n
    設定
    \n
    \n
    \n
    \n
    \n
    深色模式
    \n
    預設淺色(紙感)。切換立即生效,選擇記在這台裝置(localStorage)。
    \n
    \n
    \n
    \n
    \n
    \n \n
    語意搜尋
    \n
    狀態偵測中…
    \n
    \n
    \n
    \n
    MCP token 有效期(TTL)
    \n
    讀取中…
    \n
    \n 誠實佔位:此頁還不能改這個值——可調功能=Arcrun#19(設定頁改→存 KBDB→發 token 時讀)。實作前要調整請在部署端 env MCP_TOKEN_TTL(mcp worker)設定。\n
    \n
    \n
    \n
    更換帳號密碼
    \n
    需輸入舊密碼驗證身分
    \n
    \n \n \n \n \n
    \n
    \n
    \n \n
    \n
    系統資訊
    \n
    載入中…
    \n
    \n \n
    \n
    \n\n
    \n
    \n\n\n
    \n \n
    搜尋
    \n
    工作流
    \n \n
    設定
    \n
    \n\n
    \n\n\n\n\n"},"/index.html":{"type":"text/html; charset=utf-8","b64":false,"data":"\n\n\n\nArcrun RAG\n\n\n\n\n\n\n\n

    正在前往搜尋頁… 沒有自動跳轉請點這裡

    \n\n\n"},"/portal/index.html":{"type":"text/html; charset=utf-8","b64":false,"data":"\n\n\n\n\nArcrun Portal\n\n\n\n\n\n\n\n\n
    \n
    \n
    \n
    Arcrun
    \n
    知識入口・Portal
    \n
    \n
    \n \n \n \n
    \n
    \n
    帳號由管理員發放。忘記密碼請聯絡管理員重設。
    \n \n
    \n
    \n\n\n
    \n
    \n
    \n
    Arcrun
    \n
    歡迎!先建立你的帳號
    \n
    \n
    \n \n \n \n \n
    \n \n \n
    \n
    這組帳密就是之後登入知識庫用的,只需要設定這一次。
    \n
    \n
    \n\n\n
    \n
    \n
    Arcrun
    \n
    搜尋
    \n
    總圖
    \n
    上傳
    \n
    工作流
    \n
    管理
    \n
    設定
    \n
    ☾ 切深色
    \n
    \n
    \n
    \n\n \n
    \n
    搜尋
    \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n \n
    \n
    AI 問答・答案附出處,可回搜尋驗證
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n \n
    \n
    總圖
    \n
    \n
    \n
    \n 點節點可跳到該實體的圖譜搜尋。這張圖由知識庫的三元組即時算出——同一份地圖的文字版\n (給 AI 注入用的總庫目錄)。\n
    \n
    \n
    \n\n \n
    \n
    \n \n 知識卡片\n
    \n
    載入中…
    \n
    \n\n \n
    \n
    上傳Markdown / 純文字
    \n
    \n 上傳的文件會進入知識庫收件管線:約 1 分鐘後可在搜尋頁找到;AI 整理後會以 wiki 卡形式出現。支援 .md / .txt(一律以 .md 收件)。\n
    \n
    \n
    把 .md / .txt 檔案拖放到這裡
    \n
    \n \n \n
    \n
    \n
    \n\n \n
    \n
    工作流唯讀・系統狀態
    \n
    \n 此頁只顯示系統裡的工作流與最近執行狀態,不能觸發執行(觸發屬系統擁有者權限)。\n
    \n
    載入中…
    \n
    \n\n \n
    \n
    設定
    \n
    \n
    \n
    我的帳號
    \n
    載入中…
    \n
    \n
    \n
    \n
    \n
    深色模式
    \n
    預設淺色(紙感)。切換立即生效,選擇記在這台裝置。
    \n
    \n
    \n
    \n
    \n
    \n
    更改密碼
    \n
    需輸入舊密碼驗證身分;新密碼至少 8 碼
    \n
    \n \n \n \n \n
    \n
    \n
    \n \n
    \n \n
    \n 你的知識庫網址(小幫手連線用)\n \n \n
    \n
    同步小幫手
    \n
    把你電腦上的資料夾變成知識庫。換電腦或重裝時可以再下載一次。
    \n
    \n 下載 Mac 版\n
    封測版未簽章,第一次請右鍵→打開。裝好第一次開啟時,貼上這個網址+你的帳號密碼就連上了。
    \n
    \n
    \n \n
    \n
    AI 設定
    \n
    \n \n
    \n
    Gemini API Key
    \n
    聊天問答與文件萃取都用這一把。免費申請,金鑰只存在你自己的知識庫裡。
    \n \n
    \n \n
    \n
    讓知識卡整理得更好(選填)
    \n \n
    \n 讀你文件、整理成知識卡的那個 AI,換成更強的模型。卡片會更抓得到重點、關聯也連得更準,之後搜尋和問答的品質跟著提升。需要你的電腦已安裝 Claude Code。不填就用上面那把 Gemini,一樣能用。\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n\n \n
    \n
    管理帳號與知識庫授權
    \n\n
    帳號管理
    \n
    \n
    新增同仁帳號
    \n
    建立後會產生一組一次性密碼——只顯示這一次,請當場轉交同仁(同仁可在「設定」自行改密)。
    \n
    \n \n \n \n \n
    \n
    \n
    \n
    \n
    載入中…
    \n\n
    庫目錄管理
    \n
    \n 你的知識庫網址(小幫手連線用)\n \n \n
    \n
    \n \n 裝好同步小幫手並選好要看守的資料夾之後,每個資料夾會自動成為一個「庫」出現在下面——不需要人工新增。下面還是空的,代表小幫手還沒裝好或還沒選資料夾。\n
    \n
    載入中…
    \n
    \n\n
    \n
    \n\n\n
    \n
    搜尋
    \n
    總圖
    \n
    上傳
    \n
    工作流
    \n
    管理
    \n
    設定
    \n
    \n\n
    \n\n\n\n"},"/portal/os-split.test.mjs":{"type":"application/octet-stream","b64":true,"data":"aW1wb3J0IGZzIGZyb20gJ25vZGU6ZnMnOwpjb25zdCBodG1sID0gZnMucmVhZEZpbGVTeW5jKG5ldyBVUkwoJy4vaW5kZXguaHRtbCcsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWUsJ3V0ZjgnKTsKLy8g5oq95Ye6IGRhZW1vblBpY2sg55u46Zec5Ye95byP77yI5b6eIERBRU1PTl9CQVNFX0RFRkFVTFQg5YiwIGRhZW1vbkhpbnQg57WQ5bC+77yJCmNvbnN0IHN0YXJ0ID0gaHRtbC5pbmRleE9mKCd2YXIgREFFTU9OX0JBU0VfREVGQVVMVCcpOwpjb25zdCBlbmRNYXJrID0gInJldHVybiAn77yI5bCB5ris54mI5pyq57C956ug77yM56ys5LiA5qyh6KuL5Y+z6Y214oaS5omT6ZaL77yJJztcbiAgfSI7CmNvbnN0IGVuZCA9IGh0bWwuaW5kZXhPZihlbmRNYXJrKSArIGVuZE1hcmsubGVuZ3RoOwppZiAoc3RhcnQgPCAwIHx8IGVuZCA8IHN0YXJ0KSB0aHJvdyBuZXcgRXJyb3IoJ+aKveS4jeWIsOWHveW8j+WNgOWhiicpOwpjb25zdCBzcmMgPSBodG1sLnNsaWNlKHN0YXJ0LCBlbmQpOwoKY29uc3QgY2FzZXMgPSBbCiAgWydXaW5kb3dzJywgJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiBDaHJvbWUvMTIwIFNhZmFyaS81MzcuMzYnXSwKICBbJ01hYycsICAgICAnTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNykgQXBwbGVXZWJLaXQvNjA1LjEuMTUgU2FmYXJpLzYwNS4xLjE1J10sCiAgWydpUGhvbmUnLCAgJ01vemlsbGEvNS4wIChpUGhvbmU7IENQVSBpUGhvbmUgT1MgMTdfMCBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4xNSBTYWZhcmkvNjA0LjEnXSwKICBbJ0xpbnV4JywgICAnTW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgQ2hyb21lLzEyMCBTYWZhcmkvNTM3LjM2J10sCl07CmxldCBwYXNzPTAsIGZhaWw9MDsKY29uc3QgY2hrPShsLGMsZXh0cmE9JycpPT57IGlmKGMpe2NvbnNvbGUubG9nKCdQQVNTOicsbCk7cGFzcysrO30gZWxzZSB7Y29uc29sZS5sb2coJ0ZBSUw6JyxsLGV4dHJhKTtmYWlsKys7fSB9OwoKZm9yIChjb25zdCBbbmFtZSwgdWFdIG9mIGNhc2VzKSB7CiAgY29uc3QgZm4gPSBuZXcgRnVuY3Rpb24oJ25hdmlnYXRvcicsJ3dpbmRvdycsIHNyYyArICc7IHJldHVybiB7ZGFlbW9uUGljazpkYWVtb25QaWNrLCBkYWVtb25IaW50OmRhZW1vbkhpbnQsIGRhZW1vbkJhc2U6ZGFlbW9uQmFzZX07Jyk7CiAgY29uc3QgYXBpID0gZm4oe3VzZXJBZ2VudDogdWF9LCB7fSk7CiAgY29uc3QgZCA9IGFwaS5kYWVtb25QaWNrKCk7CiAgY29uc3QgbGFiZWwgPSBkLnN1cmUgPyBkLnBpY2subGFiZWwgOiAnKOWFqeWAi+mDvee1piknOwogIGNvbnN0IHVybCAgID0gZC5zdXJlID8gZC5waWNrLnVybCA6IGQubWFjLnVybCArICcgKyAnICsgZC53aW4udXJsOwogIGNvbnNvbGUubG9nKGBcblske25hbWV9XSBzdXJlPSR7ZC5zdXJlfSDihpIgJHtsYWJlbH1gKTsKICBjb25zb2xlLmxvZyhgICB1cmw6ICR7dXJsfWApOwogIGlmIChuYW1lPT09J1dpbmRvd3MnKSB7CiAgICBjaGsoJ1dpbmRvd3Mg57WmIHdpbiB6aXAnLCBkLnN1cmUgJiYgZC5waWNrLnVybC5lbmRzV2l0aCgnQXJjcnVuUkFHLXdpbi11bnNpZ25lZC56aXAnKSwgZC5waWNrJiZkLnBpY2sudXJsKTsKICAgIGNoaygnV2luZG93cyDlj6bkuIDniYjmmK8gTWFjJywgZC5vdGhlciAmJiBkLm90aGVyLnVybC5lbmRzV2l0aCgnbWFjLXVuc2lnbmVkLnppcCcpKTsKICAgIGNoaygnV2luZG93cyDoqbHooZPmj5Ag6JeN6Imy6KaW56qXJywgYXBpLmRhZW1vbkhpbnQoJ3dpbicpLmluY2x1ZGVzKCfku43opoHln7fooYwnKSk7CiAgfQogIGlmIChuYW1lPT09J01hYycpIHsKICAgIGNoaygnTWFjIOe1piBtYWMgemlwJywgZC5zdXJlICYmIGQucGljay51cmwuZW5kc1dpdGgoJ0FyY3J1blJBRy1tYWMtdW5zaWduZWQuemlwJykpOwogICAgY2hrKCdNYWMg5Y+m5LiA54mI5pivIFdpbmRvd3MnLCBkLm90aGVyICYmIGQub3RoZXIudXJsLmVuZHNXaXRoKCd3aW4tdW5zaWduZWQuemlwJykpOwogICAgY2hrKCdNYWMg6Kmx6KGT5o+QIOWPs+mNteaJk+mWiycsIGFwaS5kYWVtb25IaW50KCdtYWMnKS5pbmNsdWRlcygn5Y+z6Y21JykpOwogIH0KICBpZiAobmFtZT09PSdpUGhvbmUnIHx8IG5hbWU9PT0nTGludXgnKSB7CiAgICAvLyBpUGhvbmUg5ZCrICJNYWMgT1MgWCIg5L2G5LiN5piv5qGM5qmfIE1hY++8m0xpbnV4IOWFqeiAheeahumdniDihpIg6YO96Kmy6JC95Zyo44CM5LiN56K65a6a77yd5YWp5YCL6YO957Wm44CNCiAgICBpZiAobmFtZT09PSdMaW51eCcpIGNoaygnTGludXgg5Yik5LiN5Ye65L6G4oaS5YWp5YCL6YO957WmJywgZC5zdXJlPT09ZmFsc2UpOwogICAgaWYgKG5hbWU9PT0naVBob25lJykgY2hrKCdpUGhvbmUg5LiN6Kmy6KKr5Yik5oiQIE1hY++8iOaJi+apn+KGkuWFqeWAi+mDvee1pu+8iScsIGQuc3VyZT09PWZhbHNlLCAnc3VyZT0nK2Quc3VyZSk7CiAgfQp9Ci8vIOiIiiBrZXkg55u45a65CmNvbnN0IGZuMiA9IG5ldyBGdW5jdGlvbignbmF2aWdhdG9yJywnd2luZG93Jywgc3JjICsgJzsgcmV0dXJuIGRhZW1vbkJhc2UoKTsnKTsKY29uc29sZS5sb2coJ1xuW+ebuOWuuV0gZGFlbW9uRG93bmxvYWQg6IiKIGtleSDihpInLCBmbjIoe3VzZXJBZ2VudDonJ30se0FSQ1JVTl9DT05GSUc6e2RhZW1vbkRvd25sb2FkOidodHRwczovL3guZGV2L2QvQXJjcnVuUkFHLW1hYy11bnNpZ25lZC56aXAnfX0pKTsKY2hrKCfoiIoga2V5IOaOqOW+l+WHuuebrumMhCcsIGZuMih7dXNlckFnZW50OicnfSx7QVJDUlVOX0NPTkZJRzp7ZGFlbW9uRG93bmxvYWQ6J2h0dHBzOi8veC5kZXYvZC9BcmNydW5SQUctbWFjLXVuc2lnbmVkLnppcCd9fSk9PT0naHR0cHM6Ly94LmRldi9kLycpOwpjaGsoJ2RhZW1vbkJhc2Ug5pawIGtleSDlhKrlhYgnLCBmbjIoe3VzZXJBZ2VudDonJ30se0FSQ1JVTl9DT05GSUc6e2RhZW1vbkJhc2U6J2h0dHBzOi8veS5kZXYveid9fSk9PT0naHR0cHM6Ly95LmRldi96LycpOwpjb25zb2xlLmxvZyhgXG49PT0gJHtwYXNzfSBwYXNzZWQsICR7ZmFpbH0gZmFpbGVkID09PWApOwpwcm9jZXNzLmV4aXQoZmFpbD8xOjApOwo="},"/portal/safejson.test.mjs":{"type":"application/octet-stream","b64":true,"data":"aW1wb3J0IGZzIGZyb20gJ25vZGU6ZnMnOwpjb25zdCBodG1sID0gZnMucmVhZEZpbGVTeW5jKG5ldyBVUkwoJy4vaW5kZXguaHRtbCcsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWUsJ3V0ZjgnKTsKCi8vIOaKveWHuiBzYWZlSnNvbiDoiIcgZnJpZW5kbHlFcnIg5rGC5YC8CmNvbnN0IGdyYWIgPSAobmFtZSkgPT4gewogIGNvbnN0IGkgPSBodG1sLmluZGV4T2YoYGZ1bmN0aW9uICR7bmFtZX0oYCk7CiAgaWYgKGkgPCAwKSB0aHJvdyBuZXcgRXJyb3IoYOaJvuS4jeWIsCAke25hbWV9YCk7CiAgbGV0IGQ9MCwgaj1odG1sLmluZGV4T2YoJ3snLCBpKTsKICBmb3IgKGxldCBrPWo7azxodG1sLmxlbmd0aDtrKyspeyBpZihodG1sW2tdPT09J3snKWQrKzsgaWYoaHRtbFtrXT09PSd9Jyl7ZC0tOyBpZighZCl7IHJldHVybiBodG1sLnNsaWNlKGksaysxKTt9IH0gfQogIHRocm93IG5ldyBFcnJvcign5ous6Jmf5LiN5bmz6KGhJyk7Cn07CmNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKGdyYWIoJ3NhZmVKc29uJykgKyAnXG4nICsgZ3JhYignZnJpZW5kbHlFcnInKSArICdcbnJldHVybiB7c2FmZUpzb24sIGZyaWVuZGx5RXJyfTsnKSgpOwoKbGV0IHBhc3M9MCwgZmFpbD0wOwpjb25zdCB0PShsLGMsZT0nJyk9PntjPyhjb25zb2xlLmxvZygnUEFTUzonLGwpLHBhc3MrKyk6KGNvbnNvbGUubG9nKCdGQUlMOicsbCxlKSxmYWlsKyspfTsKCi8vIOKRoCBzYWZlSnNvbu+8mumdniBKU09OIOS4jeWPr+aLi+S+i+Wklu+8iOWQjOS6i+aSnuWIsOeahCA0MDQgSFRNTCDpoIHvvIkKY29uc3QgaHRtbDQwNCA9ICc8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT40MDQgTm90IEZvdW5kPC9ib2R5PjwvaHRtbD4nOwphd2FpdCBmbi5zYWZlSnNvbih7IHRleHQ6ICgpID0+IFByb21pc2UucmVzb2x2ZShodG1sNDA0KSB9KQogIC50aGVuKGQgPT4gdCgnNDA0IEhUTUwg4oaSIOWbnuepuueJqeS7tuS4jeaLi+mMrycsIHR5cGVvZiBkID09PSAnb2JqZWN0JyAmJiBkICE9PSBudWxsKSkKICAuY2F0Y2goZSA9PiB0KCc0MDQgSFRNTCDihpIg5LiN6Kmy5ouL6YyvJywgZmFsc2UsIGUubWVzc2FnZSkpOwoKYXdhaXQgZm4uc2FmZUpzb24oeyB0ZXh0OiAoKSA9PiBQcm9taXNlLnJlc29sdmUoJycpIH0pCiAgLnRoZW4oZCA9PiB0KCfnqbrlm57mh4kg4oaSIOWbnuepuueJqeS7ticsIEpTT04uc3RyaW5naWZ5KGQpPT09J3t9JykpCiAgLmNhdGNoKCgpID0+IHQoJ+epuuWbnuaHiSDihpIg5LiN6Kmy5ouL6YyvJywgZmFsc2UpKTsKCmF3YWl0IGZuLnNhZmVKc29uKHsgdGV4dDogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCd7ImVycm9yIjoi5biz6Jmf5oiW5a+G56K85LiN5bCNIn0nKSB9KQogIC50aGVuKGQgPT4gdCgn5q2j5bi4IEpTT04g5LuN6KaB6Kej5p6Q5b6X5Ye65L6GJywgZC5lcnJvciA9PT0gJ+W4s+iZn+aIluWvhueivOS4jeWwjScpLCApCiAgLmNhdGNoKCgpID0+IHQoJ+ato+W4uCBKU09OIOS4jeipsuaLi+mMrycsIGZhbHNlKSk7CgovLyDikaEgZnJpZW5kbHlFcnLvvJrkuI3lj6/miormioDooZPoqIrmga/lmbTntabkvb/nlKjogIUKY29uc3QgbGVhayA9IGZuLmZyaWVuZGx5RXJyKG5ldyBFcnJvcignVW5leHBlY3RlZCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgYWZ0ZXIgSlNPTiBhdCBwb3NpdGlvbiA0JykpOwp0KCdKU09OIOmMr+iqpCDihpIg5LiN5aSW5rSp5Y6f5paHJywgIS9KU09OfHBvc2l0aW9uL2kudGVzdChsZWFrKSwgYOWvpuW+lzogJHtsZWFrfWApOwp0KCdKU09OIOmMr+iqpCDihpIg6Kqq5Lq66KmxJywgL+S8uuacjeWZqOWbnuaHieeVsOW4uC8udGVzdChsZWFrKSwgYOWvpuW+lzogJHtsZWFrfWApOwoKY29uc3QgbmV0ID0gZm4uZnJpZW5kbHlFcnIobmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2gnKSk7CnQoJ+e2sui3r+mMr+iqpCDihpIg5pei5pyJ6KiK5oGv5L+d55WZJywgL+mAo+e3muS4reaWty8udGVzdChuZXQpLCBg5a+m5b6XOiAke25ldH1gKTsKCmNvbnN0IG91cnMgPSBmbi5mcmllbmRseUVycihuZXcgRXJyb3IoJ+W4s+iZn+aIluWvhueivOS4jeWwjeKAlOKAlOeUqOS9oOWcqOefpeitmOW6q+e2suermeioreWumueahOmCo+e1hCcpKTsKdCgn5oiR5YCR6Ieq5bex55qE5Lit5paH6KiK5oGvIOKGkiDljp/mqKPpoa/npLonLCAv5biz6Jmf5oiW5a+G56K85LiN5bCNLy50ZXN0KG91cnMpLCBg5a+m5b6XOiAke291cnN9YCk7Cgpjb25zdCBzdGFjayA9IGZuLmZyaWVuZGx5RXJyKG5ldyBFcnJvcignVHlwZUVycm9yOiBDYW5ub3QgcmVhZCBwcm9wZXJ0aWVzIG9mIHVuZGVmaW5lZCcpKTsKdCgn6Iux5paH5oqA6KGT6KiK5oGvIOKGkiDmlLbmloLkuI3lpJbmtKknLCAhL1R5cGVFcnJvcnx1bmRlZmluZWQvLnRlc3Qoc3RhY2spLCBg5a+m5b6XOiAke3N0YWNrfWApOwoKY29uc29sZS5sb2coYFxuPT09ICR7cGFzc30gcGFzc2VkLCAke2ZhaWx9IGZhaWxlZCA9PT1gKTsKcHJvY2Vzcy5leGl0KGZhaWw/MTowKTsK"}}; +const FILES = {"/console/dashboard/index.html":{"type":"text/html; charset=utf-8","b64":false,"data":"\n\n\n\n\nArcrun 駕駛艙\n\n\n\n\n\n\n
    \n
    \n
    Arcrun 駕駛艙
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    載入中
    \n
    \n
    \n
    \n
    \n
    \n
    今日完成
    \n
    /
    \n
    \n
    \n
    \n
    收件匣未處理
    \n
    \n
    來自 Telegram
    \n
    \n
    \n
    \n
    等你的事
    \n
    載入中…
    \n
    \n
    \n
    今日路線
    \n \n
    本週
    \n \n
    系統狀況live 健康信號
    \n
    載入中…
    \n
    每 60 秒自動刷新
    \n 進入完整控制台 ›\n
    \n\n\n\n"},"/console/index.html":{"type":"text/html; charset=utf-8","b64":false,"data":"\n\n\n\n\nArcrun Console\n\n\n\n\n\n\n\n\n
    \n
    \n
    \n
    Arcrun
    \n
    私人系統・僅供擁有者進入
    \n
    \n
    \n \n \n \n
    \n
    \n
    這是一個人的智慧總部。
    若你不是擁有者,這裡沒有你要找的東西。
    \n \n \n
    \n
    \n\n\n
    \n
    \n
    \n
    Arcrun
    \n
    首次設定
    \n
    系統偵測到尚未設定擁有者帳號。
    設定一組 Email 與密碼,之後只有你能進入。
    \n
    \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n\n\n
    \n
    \n
    Arcrun
    \n \n
    總庫搜尋
    \n
    工作流
    \n \n
    設定
    \n
    ☾ 切深色
    \n
    \n
    \n
    \n\n \n
    \n
    Arcrun 控制台
    \n
    \n
    \n
    \n
    \n
    \n
    載入中
    \n
    \n
    \n
    \n
    \n
    \n
    今日完成
    \n
    /
    \n
    \n
    \n
    \n
    收件匣未處理
    \n
    \n
    來自 Telegram
    \n
    \n
    \n
    \n
    等你的事
    \n
    載入中…
    \n
    \n
    \n
    \n
    \n
    \n 今日路線狀態即時同步\n
    \n
    • 載入中…
    \n
    本週
    \n
      \n
      每 60 秒自動刷新
      \n
      \n
      \n
      \n\n \n
      \n
      總庫搜尋
      \n
      \n
      \n
      \n 藏書地圖\n
      \n
      地圖載入中…
      \n
      \n
      \n
      \n \n \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n\n \n
      \n
      \n \n 知識卡片\n
      \n
      \n
      載入中…
      \n
      \n
      關聯視圖
      \n
      \n
      \n
      \n
      \n
      \n\n \n
      \n
      工作流
      \n \n
      載入中…
      \n
      \n
      零件與 Recipes(框架資源)
      \n
      \n \n \n
      \n
      \n
      \n
      \n\n \n
      \n
      憑證管理
      \n
      \n 🛡 保險箱原則:系統只保存目錄與加密後的值,任何頁面都看不到密文內容。只能整筆替換或刪除。\n
      \n
      \n
      新增憑證
      \n
      \n \n \n \n \n
      \n
      \n
      \n
      載入中…
      \n
      \n\n \n
      \n
      分流台全部待辦・80/15/5
      \n
      \n
      載入中…
      \n
      \n\n \n
      \n
      設定
      \n
      \n
      \n
      \n
      \n
      深色模式
      \n
      預設淺色(紙感)。切換立即生效,選擇記在這台裝置(localStorage)。
      \n
      \n
      \n
      \n
      \n
      \n \n
      語意搜尋
      \n
      狀態偵測中…
      \n
      \n
      \n
      \n
      MCP token 有效期(TTL)
      \n
      讀取中…
      \n
      \n 誠實佔位:此頁還不能改這個值——可調功能=Arcrun#19(設定頁改→存 KBDB→發 token 時讀)。實作前要調整請在部署端 env MCP_TOKEN_TTL(mcp worker)設定。\n
      \n
      \n
      \n
      更換帳號密碼
      \n
      需輸入舊密碼驗證身分
      \n
      \n \n \n \n \n
      \n
      \n
      \n \n
      \n
      系統資訊
      \n
      載入中…
      \n
      \n \n
      \n
      \n\n
      \n
      \n\n\n
      \n \n
      搜尋
      \n
      工作流
      \n \n
      設定
      \n
      \n\n
      \n\n\n\n\n"},"/index.html":{"type":"text/html; charset=utf-8","b64":false,"data":"\n\n\n\nArcrun RAG\n\n\n\n\n\n\n\n

      正在前往搜尋頁… 沒有自動跳轉請點這裡

      \n\n\n"},"/portal/index.html":{"type":"text/html; charset=utf-8","b64":false,"data":"\n\n\n\n\nArcrun Portal\n\n\n\n\n\n\n\n\n
      \n
      \n
      \n
      Arcrun
      \n
      知識入口・Portal
      \n
      \n
      \n \n \n \n
      \n
      \n
      帳號由管理員發放。忘記密碼請聯絡管理員重設。
      \n \n
      \n
      \n\n\n
      \n
      \n
      \n
      Arcrun
      \n
      歡迎!先建立你的帳號
      \n
      \n
      \n \n \n \n \n
      \n \n \n
      \n
      這組帳密就是之後登入知識庫用的,只需要設定這一次。
      \n
      \n
      \n\n\n
      \n
      \n
      Arcrun
      \n
      搜尋
      \n
      總圖
      \n
      上傳
      \n
      工作流
      \n
      管理
      \n
      設定
      \n
      ☾ 切深色
      \n
      \n
      \n
      \n\n \n
      \n
      搜尋
      \n
      \n
      \n \n \n
      \n
      \n \n \n \n
      \n \n
      \n
      AI 問答・答案附出處,可回搜尋驗證
      \n
      \n \n \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n\n \n
      \n
      總圖
      \n
      \n
      \n
      \n 點節點可跳到該實體的圖譜搜尋。這張圖由知識庫的三元組即時算出——同一份地圖的文字版\n (給 AI 注入用的總庫目錄)。\n
      \n
      \n
      \n\n \n
      \n
      \n \n 知識卡片\n
      \n
      載入中…
      \n
      \n\n \n
      \n
      上傳Markdown / 純文字
      \n
      \n 上傳的文件會進入知識庫收件管線:約 1 分鐘後可在搜尋頁找到;AI 整理後會以 wiki 卡形式出現。支援 .md / .txt(一律以 .md 收件)。\n
      \n
      \n
      把 .md / .txt 檔案拖放到這裡
      \n
      \n \n \n
      \n
      \n
      \n\n \n
      \n
      工作流唯讀・系統狀態
      \n
      \n 此頁只顯示系統裡的工作流與最近執行狀態,不能觸發執行(觸發屬系統擁有者權限)。\n
      \n
      載入中…
      \n
      \n\n \n
      \n
      設定
      \n
      \n
      \n
      我的帳號
      \n
      載入中…
      \n
      \n
      \n
      \n
      \n
      深色模式
      \n
      預設淺色(紙感)。切換立即生效,選擇記在這台裝置。
      \n
      \n
      \n
      \n
      \n
      \n
      更改密碼
      \n
      需輸入舊密碼驗證身分;新密碼至少 8 碼
      \n
      \n \n \n \n \n
      \n
      \n
      \n \n
      \n \n
      \n 你的知識庫網址(小幫手連線用)\n \n \n
      \n
      同步小幫手
      \n
      把你電腦上的資料夾變成知識庫。換電腦或重裝時可以再下載一次。
      \n
      \n 下載 Mac 版\n
      封測版未簽章,第一次請右鍵→打開。裝好第一次開啟時,貼上這個網址+你的帳號密碼就連上了。
      \n
      \n
      \n \n
      \n
      AI 設定
      \n
      \n \n
      \n
      Gemini API Key
      \n
      聊天問答與文件萃取都用這一把。免費申請,金鑰只存在你自己的知識庫裡。
      \n \n
      \n \n
      \n
      讓知識卡整理得更好(選填)
      \n \n
      \n 讀你文件、整理成知識卡的那個 AI,換成更強的模型。卡片會更抓得到重點、關聯也連得更準,之後搜尋和問答的品質跟著提升。需要你的電腦已安裝 Claude Code。不填就用上面那把 Gemini,一樣能用。\n
      \n
      \n
      \n
      \n \n
      \n
      \n
      \n
      \n \n
      \n
      \n\n \n
      \n
      管理帳號與知識庫授權
      \n\n
      帳號管理
      \n
      \n
      新增同仁帳號
      \n
      建立後會產生一組一次性密碼——只顯示這一次,請當場轉交同仁(同仁可在「設定」自行改密)。
      \n
      \n \n \n \n \n
      \n
      \n
      \n
      \n
      載入中…
      \n\n
      庫目錄管理
      \n
      \n 你的知識庫網址(小幫手連線用)\n \n \n
      \n
      \n \n 裝好同步小幫手並選好要看守的資料夾之後,每個資料夾會自動成為一個「庫」出現在下面——不需要人工新增。下面還是空的,代表小幫手還沒裝好或還沒選資料夾。\n
      \n
      載入中…
      \n
      \n\n
      \n
      \n\n\n
      \n
      搜尋
      \n
      總圖
      \n
      上傳
      \n
      工作流
      \n
      管理
      \n
      設定
      \n
      \n\n
      \n\n\n\n"},"/portal/os-split.test.mjs":{"type":"application/octet-stream","b64":true,"data":"aW1wb3J0IGZzIGZyb20gJ25vZGU6ZnMnOwpjb25zdCBodG1sID0gZnMucmVhZEZpbGVTeW5jKG5ldyBVUkwoJy4vaW5kZXguaHRtbCcsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWUsJ3V0ZjgnKTsKLy8g5oq95Ye6IGRhZW1vblBpY2sg55u46Zec5Ye95byP77yI5b6eIERBRU1PTl9CQVNFX0RFRkFVTFQg5YiwIGRhZW1vbkhpbnQg57WQ5bC+77yJCmNvbnN0IHN0YXJ0ID0gaHRtbC5pbmRleE9mKCd2YXIgREFFTU9OX0JBU0VfREVGQVVMVCcpOwpjb25zdCBlbmRNYXJrID0gInJldHVybiAn77yI5bCB5ris54mI5pyq57C956ug77yM56ys5LiA5qyh6KuL5Y+z6Y214oaS5omT6ZaL77yJJztcbiAgfSI7CmNvbnN0IGVuZCA9IGh0bWwuaW5kZXhPZihlbmRNYXJrKSArIGVuZE1hcmsubGVuZ3RoOwppZiAoc3RhcnQgPCAwIHx8IGVuZCA8IHN0YXJ0KSB0aHJvdyBuZXcgRXJyb3IoJ+aKveS4jeWIsOWHveW8j+WNgOWhiicpOwpjb25zdCBzcmMgPSBodG1sLnNsaWNlKHN0YXJ0LCBlbmQpOwoKY29uc3QgY2FzZXMgPSBbCiAgWydXaW5kb3dzJywgJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiBDaHJvbWUvMTIwIFNhZmFyaS81MzcuMzYnXSwKICBbJ01hYycsICAgICAnTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNykgQXBwbGVXZWJLaXQvNjA1LjEuMTUgU2FmYXJpLzYwNS4xLjE1J10sCiAgWydpUGhvbmUnLCAgJ01vemlsbGEvNS4wIChpUGhvbmU7IENQVSBpUGhvbmUgT1MgMTdfMCBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4xNSBTYWZhcmkvNjA0LjEnXSwKICBbJ0xpbnV4JywgICAnTW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgQ2hyb21lLzEyMCBTYWZhcmkvNTM3LjM2J10sCl07CmxldCBwYXNzPTAsIGZhaWw9MDsKY29uc3QgY2hrPShsLGMsZXh0cmE9JycpPT57IGlmKGMpe2NvbnNvbGUubG9nKCdQQVNTOicsbCk7cGFzcysrO30gZWxzZSB7Y29uc29sZS5sb2coJ0ZBSUw6JyxsLGV4dHJhKTtmYWlsKys7fSB9OwoKZm9yIChjb25zdCBbbmFtZSwgdWFdIG9mIGNhc2VzKSB7CiAgY29uc3QgZm4gPSBuZXcgRnVuY3Rpb24oJ25hdmlnYXRvcicsJ3dpbmRvdycsIHNyYyArICc7IHJldHVybiB7ZGFlbW9uUGljazpkYWVtb25QaWNrLCBkYWVtb25IaW50OmRhZW1vbkhpbnQsIGRhZW1vbkJhc2U6ZGFlbW9uQmFzZX07Jyk7CiAgY29uc3QgYXBpID0gZm4oe3VzZXJBZ2VudDogdWF9LCB7fSk7CiAgY29uc3QgZCA9IGFwaS5kYWVtb25QaWNrKCk7CiAgY29uc3QgbGFiZWwgPSBkLnN1cmUgPyBkLnBpY2subGFiZWwgOiAnKOWFqeWAi+mDvee1piknOwogIGNvbnN0IHVybCAgID0gZC5zdXJlID8gZC5waWNrLnVybCA6IGQubWFjLnVybCArICcgKyAnICsgZC53aW4udXJsOwogIGNvbnNvbGUubG9nKGBcblske25hbWV9XSBzdXJlPSR7ZC5zdXJlfSDihpIgJHtsYWJlbH1gKTsKICBjb25zb2xlLmxvZyhgICB1cmw6ICR7dXJsfWApOwogIGlmIChuYW1lPT09J1dpbmRvd3MnKSB7CiAgICBjaGsoJ1dpbmRvd3Mg57WmIHdpbiB6aXAnLCBkLnN1cmUgJiYgZC5waWNrLnVybC5lbmRzV2l0aCgnQXJjcnVuUkFHLXdpbi11bnNpZ25lZC56aXAnKSwgZC5waWNrJiZkLnBpY2sudXJsKTsKICAgIGNoaygnV2luZG93cyDlj6bkuIDniYjmmK8gTWFjJywgZC5vdGhlciAmJiBkLm90aGVyLnVybC5lbmRzV2l0aCgnbWFjLXVuc2lnbmVkLnppcCcpKTsKICAgIGNoaygnV2luZG93cyDoqbHooZPmj5Ag6JeN6Imy6KaW56qXJywgYXBpLmRhZW1vbkhpbnQoJ3dpbicpLmluY2x1ZGVzKCfku43opoHln7fooYwnKSk7CiAgfQogIGlmIChuYW1lPT09J01hYycpIHsKICAgIGNoaygnTWFjIOe1piBtYWMgemlwJywgZC5zdXJlICYmIGQucGljay51cmwuZW5kc1dpdGgoJ0FyY3J1blJBRy1tYWMtdW5zaWduZWQuemlwJykpOwogICAgY2hrKCdNYWMg5Y+m5LiA54mI5pivIFdpbmRvd3MnLCBkLm90aGVyICYmIGQub3RoZXIudXJsLmVuZHNXaXRoKCd3aW4tdW5zaWduZWQuemlwJykpOwogICAgY2hrKCdNYWMg6Kmx6KGT5o+QIOWPs+mNteaJk+mWiycsIGFwaS5kYWVtb25IaW50KCdtYWMnKS5pbmNsdWRlcygn5Y+z6Y21JykpOwogIH0KICBpZiAobmFtZT09PSdpUGhvbmUnIHx8IG5hbWU9PT0nTGludXgnKSB7CiAgICAvLyBpUGhvbmUg5ZCrICJNYWMgT1MgWCIg5L2G5LiN5piv5qGM5qmfIE1hY++8m0xpbnV4IOWFqeiAheeahumdniDihpIg6YO96Kmy6JC95Zyo44CM5LiN56K65a6a77yd5YWp5YCL6YO957Wm44CNCiAgICBpZiAobmFtZT09PSdMaW51eCcpIGNoaygnTGludXgg5Yik5LiN5Ye65L6G4oaS5YWp5YCL6YO957WmJywgZC5zdXJlPT09ZmFsc2UpOwogICAgaWYgKG5hbWU9PT0naVBob25lJykgY2hrKCdpUGhvbmUg5LiN6Kmy6KKr5Yik5oiQIE1hY++8iOaJi+apn+KGkuWFqeWAi+mDvee1pu+8iScsIGQuc3VyZT09PWZhbHNlLCAnc3VyZT0nK2Quc3VyZSk7CiAgfQp9Ci8vIOiIiiBrZXkg55u45a65CmNvbnN0IGZuMiA9IG5ldyBGdW5jdGlvbignbmF2aWdhdG9yJywnd2luZG93Jywgc3JjICsgJzsgcmV0dXJuIGRhZW1vbkJhc2UoKTsnKTsKY29uc29sZS5sb2coJ1xuW+ebuOWuuV0gZGFlbW9uRG93bmxvYWQg6IiKIGtleSDihpInLCBmbjIoe3VzZXJBZ2VudDonJ30se0FSQ1JVTl9DT05GSUc6e2RhZW1vbkRvd25sb2FkOidodHRwczovL3guZGV2L2QvQXJjcnVuUkFHLW1hYy11bnNpZ25lZC56aXAnfX0pKTsKY2hrKCfoiIoga2V5IOaOqOW+l+WHuuebrumMhCcsIGZuMih7dXNlckFnZW50OicnfSx7QVJDUlVOX0NPTkZJRzp7ZGFlbW9uRG93bmxvYWQ6J2h0dHBzOi8veC5kZXYvZC9BcmNydW5SQUctbWFjLXVuc2lnbmVkLnppcCd9fSk9PT0naHR0cHM6Ly94LmRldi9kLycpOwpjaGsoJ2RhZW1vbkJhc2Ug5pawIGtleSDlhKrlhYgnLCBmbjIoe3VzZXJBZ2VudDonJ30se0FSQ1JVTl9DT05GSUc6e2RhZW1vbkJhc2U6J2h0dHBzOi8veS5kZXYveid9fSk9PT0naHR0cHM6Ly95LmRldi96LycpOwpjb25zb2xlLmxvZyhgXG49PT0gJHtwYXNzfSBwYXNzZWQsICR7ZmFpbH0gZmFpbGVkID09PWApOwpwcm9jZXNzLmV4aXQoZmFpbD8xOjApOwo="},"/portal/safejson.test.mjs":{"type":"application/octet-stream","b64":true,"data":"aW1wb3J0IGZzIGZyb20gJ25vZGU6ZnMnOwpjb25zdCBodG1sID0gZnMucmVhZEZpbGVTeW5jKG5ldyBVUkwoJy4vaW5kZXguaHRtbCcsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWUsJ3V0ZjgnKTsKCi8vIOaKveWHuiBzYWZlSnNvbiDoiIcgZnJpZW5kbHlFcnIg5rGC5YC8CmNvbnN0IGdyYWIgPSAobmFtZSkgPT4gewogIGNvbnN0IGkgPSBodG1sLmluZGV4T2YoYGZ1bmN0aW9uICR7bmFtZX0oYCk7CiAgaWYgKGkgPCAwKSB0aHJvdyBuZXcgRXJyb3IoYOaJvuS4jeWIsCAke25hbWV9YCk7CiAgbGV0IGQ9MCwgaj1odG1sLmluZGV4T2YoJ3snLCBpKTsKICBmb3IgKGxldCBrPWo7azxodG1sLmxlbmd0aDtrKyspeyBpZihodG1sW2tdPT09J3snKWQrKzsgaWYoaHRtbFtrXT09PSd9Jyl7ZC0tOyBpZighZCl7IHJldHVybiBodG1sLnNsaWNlKGksaysxKTt9IH0gfQogIHRocm93IG5ldyBFcnJvcign5ous6Jmf5LiN5bmz6KGhJyk7Cn07CmNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKGdyYWIoJ3NhZmVKc29uJykgKyAnXG4nICsgZ3JhYignZnJpZW5kbHlFcnInKSArICdcbnJldHVybiB7c2FmZUpzb24sIGZyaWVuZGx5RXJyfTsnKSgpOwoKbGV0IHBhc3M9MCwgZmFpbD0wOwpjb25zdCB0PShsLGMsZT0nJyk9PntjPyhjb25zb2xlLmxvZygnUEFTUzonLGwpLHBhc3MrKyk6KGNvbnNvbGUubG9nKCdGQUlMOicsbCxlKSxmYWlsKyspfTsKCi8vIOKRoCBzYWZlSnNvbu+8mumdniBKU09OIOS4jeWPr+aLi+S+i+Wklu+8iOWQjOS6i+aSnuWIsOeahCA0MDQgSFRNTCDpoIHvvIkKY29uc3QgaHRtbDQwNCA9ICc8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT40MDQgTm90IEZvdW5kPC9ib2R5PjwvaHRtbD4nOwphd2FpdCBmbi5zYWZlSnNvbih7IHRleHQ6ICgpID0+IFByb21pc2UucmVzb2x2ZShodG1sNDA0KSB9KQogIC50aGVuKGQgPT4gdCgnNDA0IEhUTUwg4oaSIOWbnuepuueJqeS7tuS4jeaLi+mMrycsIHR5cGVvZiBkID09PSAnb2JqZWN0JyAmJiBkICE9PSBudWxsKSkKICAuY2F0Y2goZSA9PiB0KCc0MDQgSFRNTCDihpIg5LiN6Kmy5ouL6YyvJywgZmFsc2UsIGUubWVzc2FnZSkpOwoKYXdhaXQgZm4uc2FmZUpzb24oeyB0ZXh0OiAoKSA9PiBQcm9taXNlLnJlc29sdmUoJycpIH0pCiAgLnRoZW4oZCA9PiB0KCfnqbrlm57mh4kg4oaSIOWbnuepuueJqeS7ticsIEpTT04uc3RyaW5naWZ5KGQpPT09J3t9JykpCiAgLmNhdGNoKCgpID0+IHQoJ+epuuWbnuaHiSDihpIg5LiN6Kmy5ouL6YyvJywgZmFsc2UpKTsKCmF3YWl0IGZuLnNhZmVKc29uKHsgdGV4dDogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCd7ImVycm9yIjoi5biz6Jmf5oiW5a+G56K85LiN5bCNIn0nKSB9KQogIC50aGVuKGQgPT4gdCgn5q2j5bi4IEpTT04g5LuN6KaB6Kej5p6Q5b6X5Ye65L6GJywgZC5lcnJvciA9PT0gJ+W4s+iZn+aIluWvhueivOS4jeWwjScpLCApCiAgLmNhdGNoKCgpID0+IHQoJ+ato+W4uCBKU09OIOS4jeipsuaLi+mMrycsIGZhbHNlKSk7CgovLyDikaEgZnJpZW5kbHlFcnLvvJrkuI3lj6/miormioDooZPoqIrmga/lmbTntabkvb/nlKjogIUKY29uc3QgbGVhayA9IGZuLmZyaWVuZGx5RXJyKG5ldyBFcnJvcignVW5leHBlY3RlZCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgYWZ0ZXIgSlNPTiBhdCBwb3NpdGlvbiA0JykpOwp0KCdKU09OIOmMr+iqpCDihpIg5LiN5aSW5rSp5Y6f5paHJywgIS9KU09OfHBvc2l0aW9uL2kudGVzdChsZWFrKSwgYOWvpuW+lzogJHtsZWFrfWApOwp0KCdKU09OIOmMr+iqpCDihpIg6Kqq5Lq66KmxJywgL+S8uuacjeWZqOWbnuaHieeVsOW4uC8udGVzdChsZWFrKSwgYOWvpuW+lzogJHtsZWFrfWApOwoKY29uc3QgbmV0ID0gZm4uZnJpZW5kbHlFcnIobmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2gnKSk7CnQoJ+e2sui3r+mMr+iqpCDihpIg5pei5pyJ6KiK5oGv5L+d55WZJywgL+mAo+e3muS4reaWty8udGVzdChuZXQpLCBg5a+m5b6XOiAke25ldH1gKTsKCmNvbnN0IG91cnMgPSBmbi5mcmllbmRseUVycihuZXcgRXJyb3IoJ+W4s+iZn+aIluWvhueivOS4jeWwjeKAlOKAlOeUqOS9oOWcqOefpeitmOW6q+e2suermeioreWumueahOmCo+e1hCcpKTsKdCgn5oiR5YCR6Ieq5bex55qE5Lit5paH6KiK5oGvIOKGkiDljp/mqKPpoa/npLonLCAv5biz6Jmf5oiW5a+G56K85LiN5bCNLy50ZXN0KG91cnMpLCBg5a+m5b6XOiAke291cnN9YCk7Cgpjb25zdCBzdGFjayA9IGZuLmZyaWVuZGx5RXJyKG5ldyBFcnJvcignVHlwZUVycm9yOiBDYW5ub3QgcmVhZCBwcm9wZXJ0aWVzIG9mIHVuZGVmaW5lZCcpKTsKdCgn6Iux5paH5oqA6KGT6KiK5oGvIOKGkiDmlLbmloLkuI3lpJbmtKknLCAhL1R5cGVFcnJvcnx1bmRlZmluZWQvLnRlc3Qoc3RhY2spLCBg5a+m5b6XOiAke3N0YWNrfWApOwoKY29uc29sZS5sb2coYFxuPT09ICR7cGFzc30gcGFzc2VkLCAke2ZhaWx9IGZhaWxlZCA9PT1gKTsKcHJvY2Vzcy5leGl0KGZhaWw/MTowKTsK"}}; function b64ToBytes(b64) { const bin = atob(b64); const a = new Uint8Array(bin.length); for (let i = 0; i < bin.length; i++) a[i] = bin.charCodeAt(i); return a; } export default { async fetch(request, env) {