9remote 2.5.5 → 3.0.0
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/README.md +91 -172
- package/dist/assets/trayIcon.ico +0 -0
- package/dist/cli.cjs +102 -101
- package/dist/ptyDaemon.cjs +10 -9
- package/dist/server.cjs +307 -138
- package/dist/ui/agents/codex.svg +1 -1
- package/dist/ui/assets/index-CAvf0VPf.css +1 -0
- package/dist/ui/assets/index-EXcI2V_p.js +8 -0
- package/dist/ui/favicon.ico +0 -0
- package/dist/ui/index.html +12 -4
- package/dist/vendor/scrcpy-server-v3.1 +0 -0
- package/dist/web/404.html +1 -0
- package/dist/web/__next.__PAGE__.txt +9 -0
- package/dist/web/__next._full.txt +25 -0
- package/dist/web/__next._head.txt +6 -0
- package/dist/web/__next._index.txt +10 -0
- package/dist/web/__next._tree.txt +5 -0
- package/dist/web/_next/static/AUHtJgkYALYyNwHop9pgT/_buildManifest.js +1 -0
- package/dist/web/_next/static/AUHtJgkYALYyNwHop9pgT/_ssgManifest.js +1 -0
- package/dist/web/_next/static/chunks/0a7753a9.4cb02a98e2e453b9.js +1 -0
- package/dist/web/_next/static/chunks/1222.aa4f7f7f397533e9.js +1 -0
- package/dist/web/_next/static/chunks/1228.d291278320bca9ca.js +1 -0
- package/dist/web/_next/static/chunks/1243.f35c2e6494079e05.js +1 -0
- package/dist/web/_next/static/chunks/1311.8c6b8930e22ceea0.js +1 -0
- package/dist/web/_next/static/chunks/132.6032826021079bce.js +1 -0
- package/dist/web/_next/static/chunks/133.1106654a28b5afda.js +1 -0
- package/dist/web/_next/static/chunks/1385.086b560acb0d7a68.js +115 -0
- package/dist/web/_next/static/chunks/1642.cac26d30ac331cb4.js +1 -0
- package/dist/web/_next/static/chunks/1733.f06c240b3ef8a428.js +77 -0
- package/dist/web/_next/static/chunks/1750.f7ba3332b56a8e68.js +1 -0
- package/dist/web/_next/static/chunks/1763.28beedca593b5e19.js +138 -0
- package/dist/web/_next/static/chunks/179.b9e8f385bd414d1c.js +62 -0
- package/dist/web/_next/static/chunks/1838.7c8990f903e3524a.js +215 -0
- package/dist/web/_next/static/chunks/20154aaa.868648f838e03bf1.js +1 -0
- package/dist/web/_next/static/chunks/2038.640b672702093b24.js +1 -0
- package/dist/web/_next/static/chunks/2112.d72eefbdf81659b3.js +23 -0
- package/dist/web/_next/static/chunks/2125.61c6e4a3541e30ad.js +1 -0
- package/dist/web/_next/static/chunks/2129.61afb2f4ff59e46a.js +24 -0
- package/dist/web/_next/static/chunks/213.68ce1361aee3281a.js +1 -0
- package/dist/web/_next/static/chunks/2179.3f55be0b79e3cca7.js +1 -0
- package/dist/web/_next/static/chunks/2180.e6bad8186f52ff89.js +1 -0
- package/dist/web/_next/static/chunks/2264.0fc1474d26067a01.js +1 -0
- package/dist/web/_next/static/chunks/2376.ed6302a91a9de1ae.js +36 -0
- package/dist/web/_next/static/chunks/2545.3ff192a933baf11e.js +1 -0
- package/dist/web/_next/static/chunks/2620.d17f4fac0eec88a5.js +1 -0
- package/dist/web/_next/static/chunks/2847.d3124853ca727b78.js +1 -0
- package/dist/web/_next/static/chunks/2849.f2bcad51c68e44b5.js +1 -0
- package/dist/web/_next/static/chunks/3189.64c6546d621eec0b.js +1 -0
- package/dist/web/_next/static/chunks/3348-9ef29f9cedf6c0df.js +1 -0
- package/dist/web/_next/static/chunks/3429.436b229808b33e81.js +1 -0
- package/dist/web/_next/static/chunks/3514.9643e815d690f2fb.js +1 -0
- package/dist/web/_next/static/chunks/3552.8dd9a3d2c3bcef65.js +86 -0
- package/dist/web/_next/static/chunks/3606.b59e695fd05b4eb3.js +74 -0
- package/dist/web/_next/static/chunks/3692.8c6b8930e22ceea0.js +1 -0
- package/dist/web/_next/static/chunks/3736.4a5662ceeecc6acb.js +94 -0
- package/dist/web/_next/static/chunks/392.842b338137824bb8.js +1 -0
- package/dist/web/_next/static/chunks/3973-9b18bcd9afc0bcb4.js +1 -0
- package/dist/web/_next/static/chunks/3977.8cfd8dec4cb8e893.js +1 -0
- package/dist/web/_next/static/chunks/4090.441fa61655da9b38.js +1 -0
- package/dist/web/_next/static/chunks/4303.54c4aa0b89834fc6.js +1 -0
- package/dist/web/_next/static/chunks/4314.6bbd89507909cad1.js +1 -0
- package/dist/web/_next/static/chunks/4551.d0d6723cacfb90b9.js +226 -0
- package/dist/web/_next/static/chunks/4566.d8e009823b8647d1.js +90 -0
- package/dist/web/_next/static/chunks/4643.dbb152682d076617.js +1 -0
- package/dist/web/_next/static/chunks/4732-76a574510722b2c3.js +11 -0
- package/dist/web/_next/static/chunks/4924.3f5c77a103ac69a9.js +8 -0
- package/dist/web/_next/static/chunks/4930.42e564644c94a93b.js +1 -0
- package/dist/web/_next/static/chunks/5155.d7e8db52ab4c95e0.js +27 -0
- package/dist/web/_next/static/chunks/5158-267908d069475cdc.js +32 -0
- package/dist/web/_next/static/chunks/543.5636e97aa68eb9c8.js +41 -0
- package/dist/web/_next/static/chunks/5506.98304a1821200439.js +1 -0
- package/dist/web/_next/static/chunks/5622.5ead5e748ecedbd1.js +1 -0
- package/dist/web/_next/static/chunks/565f33a6-fd3410bd29f39fdf.js +1 -0
- package/dist/web/_next/static/chunks/5708.22b4531ceebf3eca.js +1 -0
- package/dist/web/_next/static/chunks/5804.ff72a927135eb74c.js +93 -0
- package/dist/web/_next/static/chunks/588.78e2528ff24df85c.js +287 -0
- package/dist/web/_next/static/chunks/6001.e5bcb28bb9ce6571.js +1 -0
- package/dist/web/_next/static/chunks/6075.a6b8434732056526.js +1 -0
- package/dist/web/_next/static/chunks/6180.82fa683aa16f21df.js +1 -0
- package/dist/web/_next/static/chunks/6274.a3795ca6dacb3d62.js +32 -0
- package/dist/web/_next/static/chunks/635-d6ae421935055337.js +1 -0
- package/dist/web/_next/static/chunks/6419.842467d9a877e770.js +1 -0
- package/dist/web/_next/static/chunks/6420.bfa7bc86d03dcefc.js +1 -0
- package/dist/web/_next/static/chunks/6552-145e634541b5b66c.js +1 -0
- package/dist/web/_next/static/chunks/6647.740ec32a32201eab.js +64 -0
- package/dist/web/_next/static/chunks/6730.88fc6f2ccc49496c.js +1 -0
- package/dist/web/_next/static/chunks/6739.82570eba0a02cb26.js +1 -0
- package/dist/web/_next/static/chunks/674.2b5ffad0676aedbe.js +1 -0
- package/dist/web/_next/static/chunks/6742.8e137138a5d1c9e1.js +1 -0
- package/dist/web/_next/static/chunks/6987.743a63813c6288ce.js +79 -0
- package/dist/web/_next/static/chunks/7202.dad90ce4a1d78f67.js +1 -0
- package/dist/web/_next/static/chunks/7233.0f252f6c1cce8058.js +1 -0
- package/dist/web/_next/static/chunks/7248.d89bf328a0dc1b4c.js +1 -0
- package/dist/web/_next/static/chunks/7263.6f224c3924155294.js +1 -0
- package/dist/web/_next/static/chunks/7341.6958eac888a96823.js +34 -0
- package/dist/web/_next/static/chunks/7424.c8c9f85c8ea65885.js +1 -0
- package/dist/web/_next/static/chunks/7507.1204ae29f46e3f01.js +1 -0
- package/dist/web/_next/static/chunks/7629-16de8d4154923623.js +1 -0
- package/dist/web/_next/static/chunks/7811.19082afa63eb73ba.js +1 -0
- package/dist/web/_next/static/chunks/7853.d01982fa0afc1ee2.js +24 -0
- package/dist/web/_next/static/chunks/7908.432ab9feeb9ae756.js +1 -0
- package/dist/web/_next/static/chunks/7960.3b1c77b882ba4bb1.js +1 -0
- package/dist/web/_next/static/chunks/7967.6c62be01fad1603c.js +1 -0
- package/dist/web/_next/static/chunks/7c89255b.f727562586fa21cc.js +153 -0
- package/dist/web/_next/static/chunks/8044.5f87392585c9f3e4.js +38 -0
- package/dist/web/_next/static/chunks/8054.feeb01b8acdb31d4.js +1 -0
- package/dist/web/_next/static/chunks/8115.68d46fb961c724e0.js +172 -0
- package/dist/web/_next/static/chunks/817.cd0f4d221eca4c8b.js +104 -0
- package/dist/web/_next/static/chunks/8334-0e9493cfa1547244.js +1 -0
- package/dist/web/_next/static/chunks/8467.f34d938a32d40325.js +1 -0
- package/dist/web/_next/static/chunks/8495.d6cea1be03635fa8.js +148 -0
- package/dist/web/_next/static/chunks/8516-b3694c9156666b12.js +152 -0
- package/dist/web/_next/static/chunks/8638.03c6480d4aaeb5b3.js +1 -0
- package/dist/web/_next/static/chunks/8716.1ad6febb58e8560e.js +1 -0
- package/dist/web/_next/static/chunks/8839.1ad64faf06fb4a33.js +1 -0
- package/dist/web/_next/static/chunks/8922-a9cee4a104876005.js +1 -0
- package/dist/web/_next/static/chunks/910.43be9c3be85c7fa0.js +21 -0
- package/dist/web/_next/static/chunks/925.7ef504ee39f11840.js +1 -0
- package/dist/web/_next/static/chunks/9259.f4337cbb56e2e0b6.js +1 -0
- package/dist/web/_next/static/chunks/9299.af2a95f6ece07482.js +1 -0
- package/dist/web/_next/static/chunks/9387.96263a2d1602a078.js +1 -0
- package/dist/web/_next/static/chunks/9568-0bfadca4fcb105aa.js +1 -0
- package/dist/web/_next/static/chunks/9641.f6f2982fc4b4735f.js +1 -0
- package/dist/web/_next/static/chunks/9675.be4a175f92aa2f26.js +1 -0
- package/dist/web/_next/static/chunks/9860.05fa134ae44699e0.js +1 -0
- package/dist/web/_next/static/chunks/9b87412a.d2cfae4121762dec.js +122 -0
- package/dist/web/_next/static/chunks/a012e9f0.7dbb2fe05ec0b816.js +82 -0
- package/dist/web/_next/static/chunks/a096f98a-5a93977f5f5de413.js +1 -0
- package/dist/web/_next/static/chunks/ab1da478.d051e56375dab6d8.js +1 -0
- package/dist/web/_next/static/chunks/adcd17ec-9a2791632136b67b.js +18 -0
- package/dist/web/_next/static/chunks/app/_global-error/page-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/app/_not-found/page-877523282abd5a7c.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/admins/page-0f20b93a1fbe900c.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/login/page-dbcfb21ebbd0bb00.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/modes/page-8f292692166b56fc.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/ota/page-c9fe76f24ac08288.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/page-622381f5dac39ddb.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/turn/page-8f6b835a319f3fe3.js +1 -0
- package/dist/web/_next/static/chunks/app/dev/question/page-5fd80ae293617365.js +1 -0
- package/dist/web/_next/static/chunks/app/layout-341400810c81f67e.js +1 -0
- package/dist/web/_next/static/chunks/app/login/page-31786ee656da76b1.js +1 -0
- package/dist/web/_next/static/chunks/app/page-1cf39061b48db156.js +22 -0
- package/dist/web/_next/static/chunks/app/workspace/browse/page-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/editor/page-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/files/page-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/git/page-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/layout-5e8f95fbc4ebaa6b.js +14 -0
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/page-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/remote/page-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/bbfbfb6c.069db3c4cc981ed3.js +1 -0
- package/dist/web/_next/static/chunks/c7879cf7-0d16fce1674078f9.js +1 -0
- package/dist/web/_next/static/chunks/c7ea4e13.6153499d4c2fb1f2.js +1 -0
- package/dist/web/_next/static/chunks/cdcce140.7a440644c3dd52b8.js +1 -0
- package/dist/web/_next/static/chunks/da9a53d6.df25e193f1f5bcae.js +62 -0
- package/dist/web/_next/static/chunks/framework-42053c69543a55f9.js +1 -0
- package/dist/web/_next/static/chunks/main-255c95c36766ce86.js +5 -0
- package/dist/web/_next/static/chunks/main-app-1831d4f902c3fcb9.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/global-error-76800531999827bd.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-5bd6526483106080.js +1 -0
- package/dist/web/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/dist/web/_next/static/chunks/webpack-c971919003362f96.js +1 -0
- package/dist/web/_next/static/css/56adcd4d72bf2d84.css +1 -0
- package/dist/web/_next/static/css/5c40e58137a11306.css +1 -0
- package/dist/web/_next/static/css/b496025c9cd768cc.css +1 -0
- package/dist/web/_next/static/media/013b72fa676f92e0-s.woff2 +0 -0
- package/dist/web/_next/static/media/22a5144ee8d83bca-s.p.woff2 +0 -0
- package/dist/web/_next/static/media/2b5b02fc7e511755-s.woff2 +0 -0
- package/dist/web/_next/static/media/65f03d54ccadf4a8-s.woff2 +0 -0
- package/dist/web/_next/static/media/7d4881bb7e1bf84d-s.p.woff2 +0 -0
- package/dist/web/_next/static/media/9766a7e9e2e0ad5a-s.woff2 +0 -0
- package/dist/web/_next/static/media/aa016aab0e6d1295-s.woff2 +0 -0
- package/dist/web/_next/static/media/b66cf8e69499582a-s.woff2 +0 -0
- package/dist/web/_next/static/media/b9408752a0c24fb9-s.woff2 +0 -0
- package/dist/web/_next/static/media/e038a29029a234f2-s.woff2 +0 -0
- package/dist/web/_next/static/media/f639721981034f88-s.woff2 +0 -0
- package/dist/web/_not-found/__next._full.txt +23 -0
- package/dist/web/_not-found/__next._head.txt +6 -0
- package/dist/web/_not-found/__next._index.txt +10 -0
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +5 -0
- package/dist/web/_not-found/__next._not-found.txt +5 -0
- package/dist/web/_not-found/__next._tree.txt +5 -0
- package/dist/web/_not-found.html +1 -0
- package/dist/web/_not-found.txt +23 -0
- package/dist/web/admin/__next._full.txt +27 -0
- package/dist/web/admin/__next._head.txt +6 -0
- package/dist/web/admin/__next._index.txt +10 -0
- package/dist/web/admin/__next._tree.txt +5 -0
- package/dist/web/admin/__next.admin.__PAGE__.txt +9 -0
- package/dist/web/admin/__next.admin.txt +5 -0
- package/dist/web/admin/admins/__next._full.txt +27 -0
- package/dist/web/admin/admins/__next._head.txt +6 -0
- package/dist/web/admin/admins/__next._index.txt +10 -0
- package/dist/web/admin/admins/__next._tree.txt +5 -0
- package/dist/web/admin/admins/__next.admin.admins.__PAGE__.txt +9 -0
- package/dist/web/admin/admins/__next.admin.admins.txt +5 -0
- package/dist/web/admin/admins/__next.admin.txt +5 -0
- package/dist/web/admin/admins.html +1 -0
- package/dist/web/admin/admins.txt +27 -0
- package/dist/web/admin/login/__next._full.txt +27 -0
- package/dist/web/admin/login/__next._head.txt +6 -0
- package/dist/web/admin/login/__next._index.txt +10 -0
- package/dist/web/admin/login/__next._tree.txt +5 -0
- package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +9 -0
- package/dist/web/admin/login/__next.admin.login.txt +5 -0
- package/dist/web/admin/login/__next.admin.txt +5 -0
- package/dist/web/admin/login.html +1 -0
- package/dist/web/admin/login.txt +27 -0
- package/dist/web/admin/modes/__next._full.txt +27 -0
- package/dist/web/admin/modes/__next._head.txt +6 -0
- package/dist/web/admin/modes/__next._index.txt +10 -0
- package/dist/web/admin/modes/__next._tree.txt +5 -0
- package/dist/web/admin/modes/__next.admin.modes.__PAGE__.txt +9 -0
- package/dist/web/admin/modes/__next.admin.modes.txt +5 -0
- package/dist/web/admin/modes/__next.admin.txt +5 -0
- package/dist/web/admin/modes.html +1 -0
- package/dist/web/admin/modes.txt +27 -0
- package/dist/web/admin/ota/__next._full.txt +27 -0
- package/dist/web/admin/ota/__next._head.txt +6 -0
- package/dist/web/admin/ota/__next._index.txt +10 -0
- package/dist/web/admin/ota/__next._tree.txt +5 -0
- package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +9 -0
- package/dist/web/admin/ota/__next.admin.ota.txt +5 -0
- package/dist/web/admin/ota/__next.admin.txt +5 -0
- package/dist/web/admin/ota.html +1 -0
- package/dist/web/admin/ota.txt +27 -0
- package/dist/web/admin/turn/__next._full.txt +27 -0
- package/dist/web/admin/turn/__next._head.txt +6 -0
- package/dist/web/admin/turn/__next._index.txt +10 -0
- package/dist/web/admin/turn/__next._tree.txt +5 -0
- package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +9 -0
- package/dist/web/admin/turn/__next.admin.turn.txt +5 -0
- package/dist/web/admin/turn/__next.admin.txt +5 -0
- package/dist/web/admin/turn.html +1 -0
- package/dist/web/admin/turn.txt +27 -0
- package/dist/web/admin.html +1 -0
- package/dist/web/admin.txt +27 -0
- package/dist/web/agent-icons/aider.svg +1 -0
- package/dist/web/agent-icons/amp.png +0 -0
- package/dist/web/agent-icons/ante.png +0 -0
- package/dist/web/agent-icons/antigravity.png +0 -0
- package/dist/web/agent-icons/auggie.png +0 -0
- package/dist/web/agent-icons/autohand.png +0 -0
- package/dist/web/agent-icons/claude-ui.png +0 -0
- package/dist/web/agent-icons/claude.svg +1 -0
- package/dist/web/agent-icons/cline.png +0 -0
- package/dist/web/agent-icons/codebuff.png +0 -0
- package/dist/web/agent-icons/codex-ui.png +0 -0
- package/dist/web/agent-icons/codex.svg +1 -0
- package/dist/web/agent-icons/command-code.png +0 -0
- package/dist/web/agent-icons/continue.png +0 -0
- package/dist/web/agent-icons/copilot.png +0 -0
- package/dist/web/agent-icons/crush.png +0 -0
- package/dist/web/agent-icons/cursor.png +0 -0
- package/dist/web/agent-icons/devin.png +0 -0
- package/dist/web/agent-icons/droid.png +0 -0
- package/dist/web/agent-icons/gemini.png +0 -0
- package/dist/web/agent-icons/goose.png +0 -0
- package/dist/web/agent-icons/grok.png +0 -0
- package/dist/web/agent-icons/hermes.png +0 -0
- package/dist/web/agent-icons/kilo.png +0 -0
- package/dist/web/agent-icons/kimi.png +0 -0
- package/dist/web/agent-icons/kiro.png +0 -0
- package/dist/web/agent-icons/mimo-code.png +0 -0
- package/dist/web/agent-icons/mistral-vibe.png +0 -0
- package/dist/web/agent-icons/omp.svg +1 -0
- package/dist/web/agent-icons/openclaude.png +0 -0
- package/dist/web/agent-icons/openclaw.png +0 -0
- package/dist/web/agent-icons/opencode.png +0 -0
- package/dist/web/agent-icons/pi.svg +1 -0
- package/dist/web/agent-icons/prime-agent.png +0 -0
- package/dist/web/agent-icons/qwen-code.png +0 -0
- package/dist/web/agent-icons/rovo.png +0 -0
- package/dist/web/agent-icons/trae.png +0 -0
- package/dist/web/agents/claude.svg +1 -0
- package/dist/web/agents/codex.svg +1 -0
- package/dist/web/agents/gemini.svg +1 -0
- package/dist/web/agents/opencode.svg +1 -0
- package/dist/web/backgrounds/bg10.jpg +0 -0
- package/dist/web/backgrounds/bg11.jpg +0 -0
- package/dist/web/backgrounds/bg12.jpg +0 -0
- package/dist/web/backgrounds/bg13.jpg +0 -0
- package/dist/web/backgrounds/bg2.jpg +0 -0
- package/dist/web/backgrounds/bg3.jpg +0 -0
- package/dist/web/backgrounds/bg4.jpg +0 -0
- package/dist/web/backgrounds/bg5.jpg +0 -0
- package/dist/web/backgrounds/bg6.jpg +0 -0
- package/dist/web/backgrounds/bg7.jpg +0 -0
- package/dist/web/backgrounds/bg8.jpg +0 -0
- package/dist/web/backgrounds/bg9.jpg +0 -0
- package/dist/web/dev/question/__next._full.txt +27 -0
- package/dist/web/dev/question/__next._head.txt +6 -0
- package/dist/web/dev/question/__next._index.txt +10 -0
- package/dist/web/dev/question/__next._tree.txt +5 -0
- package/dist/web/dev/question/__next.dev.question.__PAGE__.txt +9 -0
- package/dist/web/dev/question/__next.dev.question.txt +5 -0
- package/dist/web/dev/question/__next.dev.txt +5 -0
- package/dist/web/dev/question.html +1 -0
- package/dist/web/dev/question.txt +27 -0
- package/dist/web/favicon.ico +0 -0
- package/dist/web/file.svg +1 -0
- package/dist/web/globe.svg +1 -0
- package/dist/web/icon-192.png +0 -0
- package/dist/web/icon-192.svg +3 -0
- package/dist/web/icon-512.png +0 -0
- package/dist/web/icon-512.svg +3 -0
- package/dist/web/icons/file-types/astro.svg +1 -0
- package/dist/web/icons/file-types/audio.svg +1 -0
- package/dist/web/icons/file-types/avif.svg +1 -0
- package/dist/web/icons/file-types/bat.svg +1 -0
- package/dist/web/icons/file-types/c.svg +1 -0
- package/dist/web/icons/file-types/cheader.svg +1 -0
- package/dist/web/icons/file-types/clojure.svg +1 -0
- package/dist/web/icons/file-types/clojurescript.svg +1 -0
- package/dist/web/icons/file-types/cloudfoundry.svg +1 -0
- package/dist/web/icons/file-types/cpp.svg +1 -0
- package/dist/web/icons/file-types/cppheader.svg +1 -0
- package/dist/web/icons/file-types/csharp.svg +1 -0
- package/dist/web/icons/file-types/css.svg +1 -0
- package/dist/web/icons/file-types/dartlang.svg +1 -0
- package/dist/web/icons/file-types/datadog.svg +1 -0
- package/dist/web/icons/file-types/default.svg +1 -0
- package/dist/web/icons/file-types/diff.svg +1 -0
- package/dist/web/icons/file-types/django.svg +1 -0
- package/dist/web/icons/file-types/docker.svg +1 -0
- package/dist/web/icons/file-types/dotenv.svg +1 -0
- package/dist/web/icons/file-types/editorconfig.svg +1 -0
- package/dist/web/icons/file-types/elixir.svg +1 -0
- package/dist/web/icons/file-types/erlang.svg +1 -0
- package/dist/web/icons/file-types/esphome.svg +1 -0
- package/dist/web/icons/file-types/font.svg +1 -0
- package/dist/web/icons/file-types/git.svg +1 -0
- package/dist/web/icons/file-types/gnu.svg +1 -0
- package/dist/web/icons/file-types/go.svg +1 -0
- package/dist/web/icons/file-types/graphql.svg +1 -0
- package/dist/web/icons/file-types/haskell.svg +1 -0
- package/dist/web/icons/file-types/html.svg +1 -0
- package/dist/web/icons/file-types/image.svg +1 -0
- package/dist/web/icons/file-types/ini.svg +1 -0
- package/dist/web/icons/file-types/janet.svg +1 -0
- package/dist/web/icons/file-types/jar.svg +1 -0
- package/dist/web/icons/file-types/java.svg +1 -0
- package/dist/web/icons/file-types/js.svg +1 -0
- package/dist/web/icons/file-types/json.svg +1 -0
- package/dist/web/icons/file-types/json5.svg +1 -0
- package/dist/web/icons/file-types/kotlin.svg +1 -0
- package/dist/web/icons/file-types/less.svg +1 -0
- package/dist/web/icons/file-types/license.svg +1 -0
- package/dist/web/icons/file-types/locale.svg +1 -0
- package/dist/web/icons/file-types/log.svg +1 -0
- package/dist/web/icons/file-types/lua.svg +1 -0
- package/dist/web/icons/file-types/markdown.svg +1 -0
- package/dist/web/icons/file-types/mdx.svg +1 -0
- package/dist/web/icons/file-types/npm.svg +1 -0
- package/dist/web/icons/file-types/objectivec.svg +1 -0
- package/dist/web/icons/file-types/ocaml.svg +1 -0
- package/dist/web/icons/file-types/parcel.svg +1 -0
- package/dist/web/icons/file-types/pddl_happenings.svg +1 -0
- package/dist/web/icons/file-types/pdf.svg +1 -0
- package/dist/web/icons/file-types/php.svg +1 -0
- package/dist/web/icons/file-types/powershell.svg +1 -0
- package/dist/web/icons/file-types/protobuf.svg +1 -0
- package/dist/web/icons/file-types/python.svg +1 -0
- package/dist/web/icons/file-types/r.svg +1 -0
- package/dist/web/icons/file-types/reactjs.svg +1 -0
- package/dist/web/icons/file-types/reactts.svg +1 -0
- package/dist/web/icons/file-types/ruby.svg +1 -0
- package/dist/web/icons/file-types/rust.svg +1 -0
- package/dist/web/icons/file-types/sass.svg +1 -0
- package/dist/web/icons/file-types/scala.svg +1 -0
- package/dist/web/icons/file-types/scss.svg +1 -0
- package/dist/web/icons/file-types/shell.svg +1 -0
- package/dist/web/icons/file-types/sql.svg +1 -0
- package/dist/web/icons/file-types/sqlite.svg +1 -0
- package/dist/web/icons/file-types/stylus.svg +1 -0
- package/dist/web/icons/file-types/svelte.svg +1 -0
- package/dist/web/icons/file-types/svg.svg +1 -0
- package/dist/web/icons/file-types/swift.svg +1 -0
- package/dist/web/icons/file-types/text.svg +1 -0
- package/dist/web/icons/file-types/toml.svg +1 -0
- package/dist/web/icons/file-types/typescript.svg +1 -0
- package/dist/web/icons/file-types/video.svg +1 -0
- package/dist/web/icons/file-types/vue.svg +1 -0
- package/dist/web/icons/file-types/xml.svg +1 -0
- package/dist/web/icons/file-types/yaml.svg +1 -0
- package/dist/web/icons/file-types/zip.svg +1 -0
- package/dist/web/icons/folder-types/android-open.svg +1 -0
- package/dist/web/icons/folder-types/android.svg +1 -0
- package/dist/web/icons/folder-types/api-open.svg +1 -0
- package/dist/web/icons/folder-types/api.svg +1 -0
- package/dist/web/icons/folder-types/app-open.svg +1 -0
- package/dist/web/icons/folder-types/app.svg +1 -0
- package/dist/web/icons/folder-types/asset-open.svg +1 -0
- package/dist/web/icons/folder-types/asset.svg +1 -0
- package/dist/web/icons/folder-types/azurepipelines-open.svg +1 -0
- package/dist/web/icons/folder-types/azurepipelines.svg +1 -0
- package/dist/web/icons/folder-types/blueprint-open.svg +1 -0
- package/dist/web/icons/folder-types/blueprint.svg +1 -0
- package/dist/web/icons/folder-types/bower-open.svg +1 -0
- package/dist/web/icons/folder-types/bower.svg +1 -0
- package/dist/web/icons/folder-types/component-open.svg +1 -0
- package/dist/web/icons/folder-types/component.svg +1 -0
- package/dist/web/icons/folder-types/config-open.svg +1 -0
- package/dist/web/icons/folder-types/config.svg +1 -0
- package/dist/web/icons/folder-types/controller-open.svg +1 -0
- package/dist/web/icons/folder-types/controller.svg +1 -0
- package/dist/web/icons/folder-types/css-open.svg +1 -0
- package/dist/web/icons/folder-types/css.svg +1 -0
- package/dist/web/icons/folder-types/db-open.svg +1 -0
- package/dist/web/icons/folder-types/db.svg +1 -0
- package/dist/web/icons/folder-types/default-open.svg +1 -0
- package/dist/web/icons/folder-types/default.svg +1 -0
- package/dist/web/icons/folder-types/dist-open.svg +1 -0
- package/dist/web/icons/folder-types/dist.svg +1 -0
- package/dist/web/icons/folder-types/docs-open.svg +1 -0
- package/dist/web/icons/folder-types/docs.svg +1 -0
- package/dist/web/icons/folder-types/fonts-open.svg +1 -0
- package/dist/web/icons/folder-types/fonts.svg +1 -0
- package/dist/web/icons/folder-types/git-open.svg +1 -0
- package/dist/web/icons/folder-types/git.svg +1 -0
- package/dist/web/icons/folder-types/github-open.svg +1 -0
- package/dist/web/icons/folder-types/github.svg +1 -0
- package/dist/web/icons/folder-types/helper-open.svg +1 -0
- package/dist/web/icons/folder-types/helper.svg +1 -0
- package/dist/web/icons/folder-types/hook-open.svg +1 -0
- package/dist/web/icons/folder-types/hook.svg +1 -0
- package/dist/web/icons/folder-types/husky-open.svg +1 -0
- package/dist/web/icons/folder-types/husky.svg +1 -0
- package/dist/web/icons/folder-types/idea-open.svg +1 -0
- package/dist/web/icons/folder-types/idea.svg +1 -0
- package/dist/web/icons/folder-types/images-open.svg +1 -0
- package/dist/web/icons/folder-types/images.svg +1 -0
- package/dist/web/icons/folder-types/interfaces-open.svg +1 -0
- package/dist/web/icons/folder-types/interfaces.svg +1 -0
- package/dist/web/icons/folder-types/ios-open.svg +1 -0
- package/dist/web/icons/folder-types/ios.svg +1 -0
- package/dist/web/icons/folder-types/library-open.svg +1 -0
- package/dist/web/icons/folder-types/library.svg +1 -0
- package/dist/web/icons/folder-types/locale-open.svg +1 -0
- package/dist/web/icons/folder-types/locale.svg +1 -0
- package/dist/web/icons/folder-types/middleware-open.svg +1 -0
- package/dist/web/icons/folder-types/middleware.svg +1 -0
- package/dist/web/icons/folder-types/model-open.svg +1 -0
- package/dist/web/icons/folder-types/model.svg +1 -0
- package/dist/web/icons/folder-types/node-open.svg +1 -0
- package/dist/web/icons/folder-types/node.svg +1 -0
- package/dist/web/icons/folder-types/public-open.svg +1 -0
- package/dist/web/icons/folder-types/public.svg +1 -0
- package/dist/web/icons/folder-types/redux-open.svg +1 -0
- package/dist/web/icons/folder-types/redux.svg +1 -0
- package/dist/web/icons/folder-types/route-open.svg +1 -0
- package/dist/web/icons/folder-types/route.svg +1 -0
- package/dist/web/icons/folder-types/script-open.svg +1 -0
- package/dist/web/icons/folder-types/script.svg +1 -0
- package/dist/web/icons/folder-types/seedkit-open.svg +1 -0
- package/dist/web/icons/folder-types/seedkit.svg +1 -0
- package/dist/web/icons/folder-types/server-open.svg +1 -0
- package/dist/web/icons/folder-types/server.svg +1 -0
- package/dist/web/icons/folder-types/services-open.svg +1 -0
- package/dist/web/icons/folder-types/services.svg +1 -0
- package/dist/web/icons/folder-types/src-open.svg +1 -0
- package/dist/web/icons/folder-types/src.svg +1 -0
- package/dist/web/icons/folder-types/story-open.svg +1 -0
- package/dist/web/icons/folder-types/story.svg +1 -0
- package/dist/web/icons/folder-types/style-open.svg +1 -0
- package/dist/web/icons/folder-types/style.svg +1 -0
- package/dist/web/icons/folder-types/template-open.svg +1 -0
- package/dist/web/icons/folder-types/template.svg +1 -0
- package/dist/web/icons/folder-types/test-open.svg +1 -0
- package/dist/web/icons/folder-types/test.svg +1 -0
- package/dist/web/icons/folder-types/theme-open.svg +1 -0
- package/dist/web/icons/folder-types/theme.svg +1 -0
- package/dist/web/icons/folder-types/tools-open.svg +1 -0
- package/dist/web/icons/folder-types/tools.svg +1 -0
- package/dist/web/icons/folder-types/typescript-open.svg +1 -0
- package/dist/web/icons/folder-types/typescript.svg +1 -0
- package/dist/web/icons/folder-types/typings-open.svg +1 -0
- package/dist/web/icons/folder-types/typings.svg +1 -0
- package/dist/web/icons/folder-types/view-open.svg +1 -0
- package/dist/web/icons/folder-types/view.svg +1 -0
- package/dist/web/icons/folder-types/vscode-open.svg +1 -0
- package/dist/web/icons/folder-types/vscode.svg +1 -0
- package/dist/web/index.html +1 -0
- package/dist/web/index.txt +25 -0
- package/dist/web/login/__next._full.txt +27 -0
- package/dist/web/login/__next._head.txt +6 -0
- package/dist/web/login/__next._index.txt +10 -0
- package/dist/web/login/__next._tree.txt +5 -0
- package/dist/web/login/__next.login.__PAGE__.txt +9 -0
- package/dist/web/login/__next.login.txt +5 -0
- package/dist/web/login.html +1 -0
- package/dist/web/login.txt +27 -0
- package/dist/web/manifest.json +53 -0
- package/dist/web/maskable-192.png +0 -0
- package/dist/web/maskable-512.png +0 -0
- package/dist/web/next.svg +1 -0
- package/dist/web/proxy.html +179 -0
- package/dist/web/screenshot-desktop.png +0 -0
- package/dist/web/screenshot-mobile.png +0 -0
- package/dist/web/screenshots/desktop-ide.webp +0 -0
- package/dist/web/screenshots/mobile-1.webp +0 -0
- package/dist/web/screenshots/mobile-2.webp +0 -0
- package/dist/web/screenshots/mobile-3.webp +0 -0
- package/dist/web/sw-site.js +283 -0
- package/dist/web/sw.js +88 -0
- package/dist/web/swBridgeClaim.js +57 -0
- package/dist/web/vercel.svg +1 -0
- package/dist/web/window.svg +1 -0
- package/dist/web/workspace/__next._full.txt +25 -0
- package/dist/web/workspace/__next._head.txt +6 -0
- package/dist/web/workspace/__next._index.txt +10 -0
- package/dist/web/workspace/__next._tree.txt +6 -0
- package/dist/web/workspace/__next.workspace.__PAGE__.txt +5 -0
- package/dist/web/workspace/__next.workspace.txt +8 -0
- package/dist/web/workspace/browse/__next._full.txt +27 -0
- package/dist/web/workspace/browse/__next._head.txt +6 -0
- package/dist/web/workspace/browse/__next._index.txt +10 -0
- package/dist/web/workspace/browse/__next._tree.txt +6 -0
- package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +5 -0
- package/dist/web/workspace/browse/__next.workspace.browse.txt +5 -0
- package/dist/web/workspace/browse/__next.workspace.txt +8 -0
- package/dist/web/workspace/browse.html +1 -0
- package/dist/web/workspace/browse.txt +27 -0
- package/dist/web/workspace/editor/__next._full.txt +27 -0
- package/dist/web/workspace/editor/__next._head.txt +6 -0
- package/dist/web/workspace/editor/__next._index.txt +10 -0
- package/dist/web/workspace/editor/__next._tree.txt +6 -0
- package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +5 -0
- package/dist/web/workspace/editor/__next.workspace.editor.txt +5 -0
- package/dist/web/workspace/editor/__next.workspace.txt +8 -0
- package/dist/web/workspace/editor.html +1 -0
- package/dist/web/workspace/editor.txt +27 -0
- package/dist/web/workspace/files/__next._full.txt +27 -0
- package/dist/web/workspace/files/__next._head.txt +6 -0
- package/dist/web/workspace/files/__next._index.txt +10 -0
- package/dist/web/workspace/files/__next._tree.txt +6 -0
- package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +5 -0
- package/dist/web/workspace/files/__next.workspace.files.txt +5 -0
- package/dist/web/workspace/files/__next.workspace.txt +8 -0
- package/dist/web/workspace/files.html +1 -0
- package/dist/web/workspace/files.txt +27 -0
- package/dist/web/workspace/git/__next._full.txt +27 -0
- package/dist/web/workspace/git/__next._head.txt +6 -0
- package/dist/web/workspace/git/__next._index.txt +10 -0
- package/dist/web/workspace/git/__next._tree.txt +6 -0
- package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +5 -0
- package/dist/web/workspace/git/__next.workspace.git.txt +5 -0
- package/dist/web/workspace/git/__next.workspace.txt +8 -0
- package/dist/web/workspace/git.html +1 -0
- package/dist/web/workspace/git.txt +27 -0
- package/dist/web/workspace/mobile/__next._full.txt +27 -0
- package/dist/web/workspace/mobile/__next._head.txt +6 -0
- package/dist/web/workspace/mobile/__next._index.txt +10 -0
- package/dist/web/workspace/mobile/__next._tree.txt +6 -0
- package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +5 -0
- package/dist/web/workspace/mobile/__next.workspace.mobile.txt +5 -0
- package/dist/web/workspace/mobile/__next.workspace.txt +8 -0
- package/dist/web/workspace/mobile.html +1 -0
- package/dist/web/workspace/mobile.txt +27 -0
- package/dist/web/workspace/remote/__next._full.txt +27 -0
- package/dist/web/workspace/remote/__next._head.txt +6 -0
- package/dist/web/workspace/remote/__next._index.txt +10 -0
- package/dist/web/workspace/remote/__next._tree.txt +6 -0
- package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +5 -0
- package/dist/web/workspace/remote/__next.workspace.remote.txt +5 -0
- package/dist/web/workspace/remote/__next.workspace.txt +8 -0
- package/dist/web/workspace/remote.html +1 -0
- package/dist/web/workspace/remote.txt +27 -0
- package/dist/web/workspace/terminal/default/__next._full.txt +27 -0
- package/dist/web/workspace/terminal/default/__next._head.txt +6 -0
- package/dist/web/workspace/terminal/default/__next._index.txt +10 -0
- package/dist/web/workspace/terminal/default/__next._tree.txt +6 -0
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +5 -0
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +5 -0
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +5 -0
- package/dist/web/workspace/terminal/default/__next.workspace.txt +8 -0
- package/dist/web/workspace/terminal/default.html +1 -0
- package/dist/web/workspace/terminal/default.txt +27 -0
- package/dist/web/workspace/workspaces/__next._full.txt +27 -0
- package/dist/web/workspace/workspaces/__next._head.txt +6 -0
- package/dist/web/workspace/workspaces/__next._index.txt +10 -0
- package/dist/web/workspace/workspaces/__next._tree.txt +6 -0
- package/dist/web/workspace/workspaces/__next.workspace.txt +8 -0
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +5 -0
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +5 -0
- package/dist/web/workspace/workspaces.html +1 -0
- package/dist/web/workspace/workspaces.txt +27 -0
- package/dist/web/workspace.html +1 -0
- package/dist/web/workspace.txt +25 -0
- package/package.json +4 -4
- package/dist/ui/assets/index-CLABbREo.css +0 -1
- package/dist/ui/assets/index-MX08IV5-.js +0 -58
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{"use strict";let e="u">typeof createImageBitmap,t={1:24,2:28};async function a(i,s,h=1){let l=new DataView(i),g=l.getUint32(0,!0),n=l.getFloat64(4,!1),f=t[h]||24,m=[],p=12;for(let e=0;e<g&&!(p+f>i.byteLength);e++){let e=l.getUint32(p,!0),t=l.getUint32(p+4,!0),a=l.getUint32(p+8,!0),s=l.getUint32(p+12,!0),g=l.getUint32(p+16,!0),n=l.getUint32(p+20,!0),r=2===h?l.getUint32(p+24,!0):null;if(p+f+n>i.byteLength)break;let o=i.slice(p+f,p+f+n);m.push({tileIndex:e,x:t,y:a,width:s,height:g,imageBuffer:o,hash:r}),p+=f+n}if(e){let e=await Promise.all(m.map(e=>createImageBitmap(new Blob([e.imageBuffer])).catch(()=>null))),t=m.map((t,a)=>({tileIndex:t.tileIndex,x:t.x,y:t.y,width:t.width,height:t.height,hash:t.hash,bitmap:e[a]})),a=e.filter(Boolean);self.postMessage({tiles:t,timestamp:n,id:s,hasBitmap:!0},a)}else{let e=m.map(e=>e.imageBuffer),t=m.map(e=>({tileIndex:e.tileIndex,x:e.x,y:e.y,width:e.width,height:e.height,hash:e.hash,imageBuffer:e.imageBuffer}));self.postMessage({tiles:t,timestamp:n,id:s,hasBitmap:!1},e)}}self.onmessage=({data:{buffer:e,id:t,v:i}})=>{a(e,t,i).catch(e=>{self.postMessage({error:e.message,id:t})})}})(),_N_E={};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3736],{8974:(t,e,s)=>{s.d(e,{diagram:()=>k});var i=s(32631),r=s(25292),a=s(27546);s(11016),s(42982),s(88921),s(34939),s(49877),s(16111),s(12989);var n=s(49519),l=s(84187),o=s(14561),c=s(68567),h=s(10312),u=s(20271),d=s(76682),y=function(){var t=(0,c.K)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[6,9,21,23,25,27,34,37,38,39,40,41,43,46,47,51,53,54,55],s=[2,2],i=[1,7],r=[1,9],a=[1,10],n=[1,11],l=[1,12],o=[1,30],h=[1,23],u=[1,24],d=[1,25],y=[1,26],p=[1,27],b=[1,19],g=[1,28],_=[1,29],f=[1,20],m=[1,18],k=[1,21],E=[1,22],S=[2,6],$=[6,9,21,23,25,27,33,34,37,38,39,40,41,43,46,47,51,53,54,55],T=[1,36],O=[1,37],N=[1,38],x=[1,39],C=[1,40],A=[6,9,12,14,16,19,20,21,23,25,27,33,34,37,38,39,40,41,43,46,47,50,51,53,54,55,69,70,71,72,73],R=[1,46],I=[1,47],D=[1,57],v=[43,51,53,54,55,74,75],L=[1,70],w=[1,68],K=[1,65],M=[1,69],B=[1,71],G=[6,9,12,16,21,23,25,27,33,34,37,38,39,40,41,43,44,45,46,47,51,52,53,54,55,69,70,71,72,73],F=[1,78],Y=[1,77],P=[1,76],z=[69,70,71,72,73],U=[1,91],Z=[6,9,45,50],j=[6,9,12,44,45,50,51,52],W=[1,101],q=[1,100],X=[1,99],V=[18,61],H=[1,110],Q=[1,109],J=[20,43,51,53,54,55],tt=[18,61,64,66],te={trace:(0,c.K)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,statement:8,NEWLINE:9,entityName:10,relSpec:11,COLON:12,role:13,STYLE_SEPARATOR:14,idList:15,BLOCK_START:16,attributes:17,BLOCK_STOP:18,SQS:19,SQE:20,title:21,title_value:22,acc_title:23,acc_title_value:24,acc_descr:25,acc_descr_value:26,acc_descr_multiline_value:27,direction:28,classDefStatement:29,classStatement:30,styleStatement:31,subgraphHeader:32,END:33,SUBGRAPH:34,separator:35,subgraphTitle:36,direction_tb:37,direction_bt:38,direction_rl:39,direction_lr:40,CLASSDEF:41,stylesOpt:42,UNICODE_TEXT:43,STYLE_TEXT:44,COMMA:45,CLASS:46,STYLE:47,style:48,styleComponent:49,SEMI:50,NUM:51,BRKT:52,ENTITY_NAME:53,DECIMAL_NUM:54,ENTITY_ONE:55,attribute:56,attributeType:57,attributeName:58,attributeKeyTypeList:59,attributeComment:60,ATTRIBUTE_WORD:61,"?":62,attributeKeyType:63,",":64,ATTRIBUTE_KEY:65,COMMENT:66,cardinality:67,relType:68,ZERO_OR_ONE:69,ZERO_OR_MORE:70,ONE_OR_MORE:71,ONLY_ONE:72,MD_PARENT:73,NON_IDENTIFYING:74,IDENTIFYING:75,WORD:76,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"NEWLINE",12:"COLON",14:"STYLE_SEPARATOR",16:"BLOCK_START",18:"BLOCK_STOP",19:"SQS",20:"SQE",21:"title",22:"title_value",23:"acc_title",24:"acc_title_value",25:"acc_descr",26:"acc_descr_value",27:"acc_descr_multiline_value",33:"END",34:"SUBGRAPH",37:"direction_tb",38:"direction_bt",39:"direction_rl",40:"direction_lr",41:"CLASSDEF",43:"UNICODE_TEXT",44:"STYLE_TEXT",45:"COMMA",46:"CLASS",47:"STYLE",50:"SEMI",51:"NUM",52:"BRKT",53:"ENTITY_NAME",54:"DECIMAL_NUM",55:"ENTITY_ONE",61:"ATTRIBUTE_WORD",62:"?",64:",",65:"ATTRIBUTE_KEY",66:"COMMENT",69:"ZERO_OR_ONE",70:"ZERO_OR_MORE",71:"ONE_OR_MORE",72:"ONLY_ONE",73:"MD_PARENT",74:"NON_IDENTIFYING",75:"IDENTIFYING",76:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[7,1],[8,5],[8,9],[8,7],[8,7],[8,4],[8,6],[8,3],[8,5],[8,1],[8,3],[8,7],[8,9],[8,6],[8,8],[8,4],[8,6],[8,2],[8,2],[8,2],[8,1],[8,1],[8,1],[8,1],[8,1],[8,3],[32,3],[32,6],[36,1],[36,2],[28,1],[28,1],[28,1],[28,1],[29,4],[15,1],[15,1],[15,3],[15,3],[30,3],[31,4],[42,1],[42,3],[48,1],[48,2],[35,1],[35,1],[35,1],[49,1],[49,1],[49,1],[49,1],[10,1],[10,1],[10,1],[10,1],[10,1],[17,1],[17,2],[56,2],[56,3],[56,3],[56,4],[57,1],[57,2],[58,1],[59,1],[59,3],[63,1],[60,1],[11,3],[67,1],[67,1],[67,1],[67,1],[67,1],[68,1],[68,1],[13,1],[13,1],[13,1]],performAction:(0,c.K)(function(t,e,s,i,r,a,n){var l=a.length-1;switch(r){case 1:break;case 2:case 5:case 6:this.$=[];break;case 3:this.$=a[l-1].concat(a[l]);break;case 4:case 34:case 59:case 60:case 61:case 62:case 86:case 69:case 71:case 74:this.$=a[l];break;case 7:i.addEntity(a[l-4]),i.addEntity(a[l-2]),i.addRelationship(a[l-4],a[l],a[l-2],a[l-3]),this.$=[a[l-4],a[l-2]];break;case 8:i.addEntity(a[l-8]),i.addEntity(a[l-4]),i.addRelationship(a[l-8],a[l],a[l-4],a[l-5]),i.setClass([a[l-8]],a[l-6]),i.setClass([a[l-4]],a[l-2]),this.$=[a[l-8],a[l-4]];break;case 9:i.addEntity(a[l-6]),i.addEntity(a[l-2]),i.addRelationship(a[l-6],a[l],a[l-2],a[l-3]),i.setClass([a[l-6]],a[l-4]),this.$=[a[l-6],a[l-2]];break;case 10:i.addEntity(a[l-6]),i.addEntity(a[l-4]),i.addRelationship(a[l-6],a[l],a[l-4],a[l-5]),i.setClass([a[l-4]],a[l-2]),this.$=[a[l-6],a[l-4]];break;case 11:i.addEntity(a[l-3]),i.addAttributes(a[l-3],a[l-1]),this.$=[a[l-3]];break;case 12:i.addEntity(a[l-5]),i.addAttributes(a[l-5],a[l-1]),i.setClass([a[l-5]],a[l-3]),this.$=[a[l-5]];break;case 13:i.addEntity(a[l-2]),this.$=[a[l-2]];break;case 14:i.addEntity(a[l-4]),i.setClass([a[l-4]],a[l-2]),this.$=[a[l-4]];break;case 15:i.addEntity(a[l]),this.$=[a[l]];break;case 16:i.addEntity(a[l-2]),i.setClass([a[l-2]],a[l]),this.$=[a[l-2]];break;case 17:i.addEntity(a[l-6],a[l-4]),i.addAttributes(a[l-6],a[l-1]),this.$=[a[l-6]];break;case 18:i.addEntity(a[l-8],a[l-6]),i.addAttributes(a[l-8],a[l-1]),i.setClass([a[l-8]],a[l-3]),this.$=[a[l-8]];break;case 19:i.addEntity(a[l-5],a[l-3]),this.$=[a[l-5]];break;case 20:i.addEntity(a[l-7],a[l-5]),i.setClass([a[l-7]],a[l-2]),this.$=[a[l-7]];break;case 21:i.addEntity(a[l-3],a[l-1]);break;case 22:i.addEntity(a[l-5],a[l-3]),i.setClass([a[l-5]],a[l]);break;case 23:case 24:this.$=a[l].trim(),i.setAccTitle(this.$);break;case 25:case 26:this.$=a[l].trim(),i.setAccDescription(this.$);break;case 27:i.subgraphDepth?this.$=a[l]:(i.setDirection(a[l].value),this.$=[]);break;case 31:i.subgraphDepth=(i.subgraphDepth||1)-1,this.$=i.addSubGraph({text:a[l-2].id},a[l-1],{text:a[l-2].text});break;case 32:i.subgraphDepth=(i.subgraphDepth||0)+1,this.$={id:a[l-1],text:a[l-1]};break;case 33:i.subgraphDepth=(i.subgraphDepth||0)+1,this.$={id:a[l-4],text:a[l-2]};break;case 35:this.$=a[l-1]+" "+a[l];break;case 36:this.$={stmt:"dir",value:"TB"};break;case 37:this.$={stmt:"dir",value:"BT"};break;case 38:this.$={stmt:"dir",value:"RL"};break;case 39:this.$={stmt:"dir",value:"LR"};break;case 40:this.$=a[l-3],i.addClass(a[l-2],a[l-1]);break;case 41:case 42:case 63:case 72:case 47:this.$=[a[l]];break;case 43:case 44:this.$=a[l-2].concat([a[l]]);break;case 45:this.$=a[l-2],i.setClass(a[l-1],a[l]);break;case 46:this.$=a[l-3],i.addCssStyles(a[l-2],a[l-1]);break;case 48:case 73:a[l-2].push(a[l]),this.$=a[l-2];break;case 50:case 70:this.$=a[l-1]+a[l];break;case 58:case 84:case 85:case 75:this.$=a[l].replace(/"/g,"");break;case 64:a[l].push(a[l-1]),this.$=a[l];break;case 65:this.$={type:a[l-1],name:a[l]};break;case 66:this.$={type:a[l-2],name:a[l-1],keys:a[l]};break;case 67:this.$={type:a[l-2],name:a[l-1],comment:a[l]};break;case 68:this.$={type:a[l-3],name:a[l-2],keys:a[l-1],comment:a[l]};break;case 76:this.$={cardA:a[l],relType:a[l-1],cardB:a[l-2]};break;case 77:this.$=i.Cardinality.ZERO_OR_ONE;break;case 78:this.$=i.Cardinality.ZERO_OR_MORE;break;case 79:this.$=i.Cardinality.ONE_OR_MORE;break;case 80:this.$=i.Cardinality.ONLY_ONE;break;case 81:this.$=i.Cardinality.MD_PARENT;break;case 82:this.$=i.Identification.NON_IDENTIFYING;break;case 83:this.$=i.Identification.IDENTIFYING}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,s,{5:3}),{6:[1,4],7:5,8:6,9:i,10:8,21:r,23:a,25:n,27:l,28:13,29:14,30:15,31:16,32:17,34:o,37:h,38:u,39:d,40:y,41:p,43:b,46:g,47:_,51:f,53:m,54:k,55:E},t(e,S,{1:[2,1]}),t($,[2,3]),t($,[2,4]),t($,[2,5]),t($,[2,15],{11:31,67:35,14:[1,32],16:[1,33],19:[1,34],69:T,70:O,71:N,72:x,73:C}),{22:[1,41]},{24:[1,42]},{26:[1,43]},t($,[2,26]),t($,[2,27]),t($,[2,28]),t($,[2,29]),t($,[2,30]),t($,s,{5:44}),t(A,[2,58]),t(A,[2,59]),t(A,[2,60]),t(A,[2,61]),t(A,[2,62]),t($,[2,36]),t($,[2,37]),t($,[2,38]),t($,[2,39]),{15:45,43:R,44:I},{15:48,43:R,44:I},{15:49,43:R,44:I},{10:50,43:b,51:f,53:m,54:k,55:E},{10:51,43:b,51:f,53:m,54:k,55:E},{15:52,43:R,44:I},{17:53,18:[1,54],56:55,57:56,61:D},{10:58,43:b,51:f,53:m,54:k,55:E},{68:59,74:[1,60],75:[1,61]},t(v,[2,77]),t(v,[2,78]),t(v,[2,79]),t(v,[2,80]),t(v,[2,81]),t($,[2,23]),t($,[2,24]),t($,[2,25]),{6:[1,63],7:5,8:6,9:i,10:8,21:r,23:a,25:n,27:l,28:13,29:14,30:15,31:16,32:17,33:[1,62],34:o,37:h,38:u,39:d,40:y,41:p,43:b,46:g,47:_,51:f,53:m,54:k,55:E},{12:L,42:64,44:w,45:K,48:66,49:67,51:M,52:B},t(G,[2,41]),t(G,[2,42]),{15:72,43:R,44:I,45:K},{12:L,42:73,44:w,45:K,48:66,49:67,51:M,52:B},{6:F,9:Y,19:[1,75],35:74,50:P},{12:[1,79],14:[1,80]},t($,[2,16],{67:35,11:81,16:[1,82],45:K,69:T,70:O,71:N,72:x,73:C}),{18:[1,83]},t($,[2,13]),{17:84,18:[2,63],56:55,57:56,61:D},{58:85,61:[1,86]},{61:[2,69],62:[1,87]},{20:[1,88]},{67:89,69:T,70:O,71:N,72:x,73:C},t(z,[2,82]),t(z,[2,83]),t($,[2,31]),t($,S),{6:F,9:Y,35:90,45:U,50:P},{43:[1,92],44:[1,93]},t(Z,[2,47],{49:94,12:L,44:w,51:M,52:B}),t(j,[2,49]),t(j,[2,54]),t(j,[2,55]),t(j,[2,56]),t(j,[2,57]),t($,[2,45],{45:K}),{6:F,9:Y,35:95,45:U,50:P},t($,[2,32]),{10:97,36:96,43:b,51:f,53:m,54:k,55:E},t($,[2,51]),t($,[2,52]),t($,[2,53]),{13:98,43:W,53:q,76:X},{15:102,43:R,44:I},{10:103,43:b,51:f,53:m,54:k,55:E},{17:104,18:[1,105],56:55,57:56,61:D},t($,[2,11]),{18:[2,64]},t(V,[2,65],{59:106,60:107,63:108,65:H,66:Q}),t([18,61,65,66],[2,71]),{61:[2,70]},t($,[2,21],{14:[1,112],16:[1,111]}),t([43,51,53,54,55],[2,76]),t($,[2,40]),{12:L,44:w,48:113,49:67,51:M,52:B},t(G,[2,43]),t(G,[2,44]),t(j,[2,50]),t($,[2,46]),{10:115,20:[1,114],43:b,51:f,53:m,54:k,55:E},t(J,[2,34]),t($,[2,7]),t($,[2,84]),t($,[2,85]),t($,[2,86]),{12:[1,116],45:K},{12:[1,118],14:[1,117]},{18:[1,119]},t($,[2,14]),t(V,[2,66],{60:120,64:[1,121],66:Q}),t(V,[2,67]),t(tt,[2,72]),t(V,[2,75]),t(tt,[2,74]),{17:122,18:[1,123],56:55,57:56,61:D},{15:124,43:R,44:I},t(Z,[2,48],{49:94,12:L,44:w,51:M,52:B}),{6:F,9:Y,35:125,50:P},t(J,[2,35]),{13:126,43:W,53:q,76:X},{15:127,43:R,44:I},{13:128,43:W,53:q,76:X},t($,[2,12]),t(V,[2,68]),{63:129,65:H},{18:[1,130]},t($,[2,19]),t($,[2,22],{16:[1,131],45:K}),t($,[2,33]),t($,[2,10]),{12:[1,132],45:K},t($,[2,9]),t(tt,[2,73]),t($,[2,17]),{17:133,18:[1,134],56:55,57:56,61:D},{13:135,43:W,53:q,76:X},{18:[1,136]},t($,[2,20]),t($,[2,8]),t($,[2,18])],defaultActions:{84:[2,64],87:[2,70]},parseError:(0,c.K)(function(t,e){if(e.recoverable)this.trace(t);else{var s=Error(t);throw s.hash=e,s}},"parseError"),parse:(0,c.K)(function(t){var e=this,s=[0],i=[],r=[null],a=[],n=this.table,l="",o=0,h=0,u=0,d=a.slice.call(arguments,1),y=Object.create(this.lexer),p={};for(var b in this.yy)Object.prototype.hasOwnProperty.call(this.yy,b)&&(p[b]=this.yy[b]);y.setInput(t,p),p.lexer=y,p.parser=this,void 0===y.yylloc&&(y.yylloc={});var g=y.yylloc;a.push(g);var _=y.options&&y.options.ranges;function f(){var t;return"number"!=typeof(t=i.pop()||y.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.parseError?this.parseError=p.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K)(function(t){s.length=s.length-2*t,r.length=r.length-t,a.length=a.length-t},"popStack"),(0,c.K)(f,"lex");for(var m,k,E,S,$,T,O,N,x,C={};;){if(E=s[s.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==m&&(m=f()),S=n[E]&&n[E][m]),void 0===S||!S.length||!S[0]){var A="";for(T in x=[],n[E])this.terminals_[T]&&T>2&&x.push("'"+this.terminals_[T]+"'");A=y.showPosition?"Parse error on line "+(o+1)+":\n"+y.showPosition()+"\nExpecting "+x.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(A,{text:y.match,token:this.terminals_[m]||m,line:y.yylineno,loc:g,expected:x})}if(S[0]instanceof Array&&S.length>1)throw Error("Parse Error: multiple actions possible at state: "+E+", token: "+m);switch(S[0]){case 1:s.push(m),r.push(y.yytext),a.push(y.yylloc),s.push(S[1]),m=null,k?(m=k,k=null):(h=y.yyleng,l=y.yytext,o=y.yylineno,g=y.yylloc,u>0&&u--);break;case 2:if(O=this.productions_[S[1]][1],C.$=r[r.length-O],C._$={first_line:a[a.length-(O||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(O||1)].first_column,last_column:a[a.length-1].last_column},_&&(C._$.range=[a[a.length-(O||1)].range[0],a[a.length-1].range[1]]),void 0!==($=this.performAction.apply(C,[l,h,o,p,S[1],r,a].concat(d))))return $;O&&(s=s.slice(0,-1*O*2),r=r.slice(0,-1*O),a=a.slice(0,-1*O)),s.push(this.productions_[S[1]][0]),r.push(C.$),a.push(C._$),N=n[s[s.length-2]][s[s.length-1]],s.push(N);break;case 3:return!0}}return!0},"parse")};function ts(){this.yy={}}return te.lexer={EOF:1,parseError:(0,c.K)(function(t,e){if(this.yy.parser)this.yy.parser.parseError(t,e);else throw Error(t)},"parseError"),setInput:(0,c.K)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K)(function(){return this._more=!0,this},"more"),reject:(0,c.K)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K)(function(){var t=this.pastInput(),e=Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K)(function(t,e){var s,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack)for(var a in r)this[a]=r[a];return!1},"test_match"),next:(0,c.K)(function(){if(this.done)return this.EOF;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var t,e,s,i,r=this._currentRules(),a=0;a<r.length;a++)if((s=this._input.match(this.rules[r[a]]))&&(!e||s[0].length>e[0].length)){if(e=s,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,r[a])))return t;if(!this._backtrack)return!1;e=!1;continue}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K)(function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),23;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),25;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:case 28:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 37;case 8:return 38;case 9:return 39;case 10:return 40;case 11:case 22:case 30:case 37:break;case 12:return 9;case 13:return 53;case 14:return 76;case 15:return 4;case 16:return this.begin("block"),16;case 17:case 18:case 40:return 52;case 19:case 39:return 45;case 20:return 14;case 21:case 38:return 12;case 23:return 65;case 24:case 25:case 27:return 61;case 26:this.begin("block_bq");break;case 29:return 66;case 31:return this.popState(),18;case 32:case 81:return e.yytext[0];case 33:return 19;case 34:return 20;case 35:return this.begin("style"),47;case 36:return this.popState(),9;case 41:return this.begin("style"),41;case 42:return 46;case 43:return 34;case 44:return 33;case 45:case 49:case 50:case 68:return 69;case 46:case 47:case 48:case 56:case 58:case 70:return 71;case 51:case 52:case 53:case 54:case 55:case 57:case 69:return 70;case 59:case 60:case 62:case 63:case 64:case 67:return 72;case 61:return 54;case 65:return 55;case 66:return 51;case 71:return 73;case 72:case 75:case 76:case 77:return 74;case 73:case 74:return 75;case 78:return 44;case 79:return 50;case 80:return 43;case 82:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[ \t\r]+)/i,/^(?:[\n]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\.,\u00C0-\uFFFF\*]*))/i,/^(?:[`])/i,/^(?:[^`]+)/i,/^(?:[`])/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:subgraph\b)/i,/^(?:end\b\s*)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:[0-9]+\.[0-9]+)/i,/^(?:1(?=\s+[A-Za-z_"']))/i,/^(?:1(?=\s+[0-9]))/i,/^(?:1(?=(--|\.\.|\.-|-\.)))/i,/^(?:1\b)/i,/^(?:[0-9]+)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:u(?=[\.\-\|]))/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[36,37,38,39,40,78,79],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block_bq:{rules:[27,28],inclusive:!1},block:{rules:[22,23,24,25,26,29,30,31,32],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,33,34,35,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,80,81,82],inclusive:!0}}},(0,c.K)(ts,"Parser"),ts.prototype=te,te.Parser=ts,new ts}();y.parser=y;var p=class{constructor(){this.entities=new Map,this.relationships=[],this.classes=new Map,this.subgraphDepth=0,this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.direction="TB",this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},this.setAccTitle=l.SV,this.getAccTitle=l.iN,this.setAccDescription=l.EI,this.getAccDescription=l.m7,this.setDiagramTitle=l.ke,this.getDiagramTitle=l.ab,this.getConfig=(0,c.K)(()=>(0,l.D7)().er,"getConfig"),this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this),this.addSubGraph=this.addSubGraph.bind(this)}static{(0,c.K)(this,"ErDB")}addEntity(t,e=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&e&&(this.entities.get(t).alias=e,o.R.info(`Add alias '${e}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-${this.entities.size}`,label:t,attributes:[],alias:e,shape:"erBox",look:(0,l.D7)().look??"default",cssClasses:"default",cssStyles:[],labelType:"markdown"}),o.R.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,e){let s,i=this.addEntity(t);for(s=e.length-1;s>=0;s--)e[s].keys||(e[s].keys=[]),e[s].comment||(e[s].comment=""),i.attributes.push(e[s]),o.R.debug("Added attribute ",e[s].name)}addRelationship(t,e,s,i){let r,a;if(this.subGraphLookup.has(t))r=t;else{let e=this.addEntity(t);if(!e)return;r=e.id}if(this.subGraphLookup.has(s))a=s;else{let t=this.addEntity(s);if(!t)return;a=t.id}let n={entityA:r,roleA:e,entityB:a,relSpec:i};this.relationships.push(n),o.R.debug("Added new relationship :",n)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let e=[];for(let s of t){let t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map(t=>t.trim())),t?.textStyles&&(e=[...e,...t.textStyles??[]].map(t=>t.trim()))}return e}addCssStyles(t,e){for(let s of t){let t=this.entities.get(s),i=this.subGraphLookup.get(s);if(e){if(t)for(let s of e)t.cssStyles.push(s);if(i)for(let t of(i.cssStyles||(i.cssStyles=[]),e))i.cssStyles.push(t)}}}addClass(t,e){t.forEach(t=>{let s=this.classes.get(t);void 0===s&&(s={id:t,styles:[],textStyles:[]},this.classes.set(t,s)),e&&e.forEach(function(t){if(/color/.exec(t)){let e=t.replace("fill","bgFill");s.textStyles.push(e)}s.styles.push(t)})})}addSubGraph(t,e,s){let i=t.text.trim(),r=s.text,a=(0,c.K)(t=>{let e,s=new Set;return{nodeList:t.filter(t=>{if(t?.stmt)return"dir"===t.stmt&&(e=t.value),!1;if("string"!=typeof t)return!1;let i=t.trim();return!(!i||s.has(i))&&(s.add(i),!0)}),dir:e}},"uniq")(e.flat()),n=a.nodeList,l=a.dir;i=i??"subGraph"+this.subCount,r=r||"",r=this.sanitizeText(r),this.subCount=this.subCount+1;let h={id:i,nodes:n,title:r.trim(),classes:[],cssStyles:[],dir:l,labelType:this.sanitizeNodeLabelType(s?.type)};return o.R.info("Adding",h.id,h.nodes,h.dir),h.nodes=this.makeUniq(h,this.subGraphs).nodes,this.subGraphs.push(h),this.subGraphLookup.set(i,h),i}getSubGraphs(){return this.subGraphs}setClass(t,e){for(let s of t){let t=this.entities.get(s);if(t)for(let s of e)t.cssClasses+=" "+s;let i=this.subGraphLookup.get(s);if(i)for(let t of e)i.classes.push(t)}}subgraphNodeCache(t){let e=new Set;for(let s of t)for(let t of s.nodes)e.add(t);return e}makeUniq(t,e){let s=this.subgraphNodeCache(e),i=[];return t.nodes.forEach((e,r)=>{s.has(e)?o.R.warn(`Entity '${e}' already belongs to another subgraph and will be ignored`):i.push(t.nodes[r])}),{nodes:i}}sanitizeText(t){return l.Y2.sanitizeText(t,(0,l.D7)())}sanitizeNodeLabelType(t){switch(t){case"markdown":case"string":case"text":return t;default:return"markdown"}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.subgraphDepth=0,(0,l.IU)()}getData(){let t=[],e=[],s=(0,l.D7)(),i=this.getSubGraphs(),r=new Map,a=new Map;for(let t=i.length-1;t>=0;t--){let e=i[t];for(let t of(e.nodes.length>0&&a.set(e.id,!0),e.nodes))r.set(t,e.id)}for(let e=i.length-1;e>=0;e--){let a=i[e];t.push({id:a.id,label:a.title,labelStyle:"",labelType:a.labelType,parentId:r.get(a.id),padding:8,cssCompiledStyles:this.getCompiledStyles(a.classes),cssStyles:a.cssStyles,cssClasses:a.classes.join(" "),shape:"rect",dir:a.dir,isGroup:!0,look:s.look})}let o=new Set(i.map(t=>t.id)),c=0;for(let e of this.entities.keys()){if(o.has(e))continue;let s=this.entities.get(e);s&&(s.cssCompiledStyles=this.getCompiledStyles(s.cssClasses.split(" ")),s.colorIndex=c++,t.push({...s,parentId:r.get(e),isGroup:!1}))}let h=0;for(let t of this.relationships){let i={id:(0,n.rY)(t.entityA,t.entityB,{prefix:"id",counter:h++}),type:"normal",curve:"basis",start:t.entityA,end:t.entityB,label:t.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:t.relSpec.cardB.toLowerCase(),arrowTypeEnd:t.relSpec.cardA.toLowerCase(),pattern:"IDENTIFYING"==t.relSpec.relType?"solid":"dashed",look:s.look,labelType:"markdown"};e.push(i)}return{nodes:t,edges:e,other:{},config:s,direction:this.direction}}},b={};(0,c.V)(b,{draw:()=>g});var g=(0,c.K)(async function(t,e,s,c){o.R.info("REF0:"),o.R.info("Drawing er diagram (unified)",e);let{securityLevel:u,er:d,layout:y}=(0,l.D7)(),p=c.db.getData(),b=(0,i.A)(e,u);p.type=c.type,p.layoutAlgorithm=(0,a.q7)(y),p.config.flowchart.nodeSpacing=d?.nodeSpacing||140,p.config.flowchart.rankSpacing=d?.rankSpacing||80,p.direction=c.db.getDirection();let{config:g}=p,{look:_}=g;"neo"===_?p.markers=["only_one_neo","zero_or_one_neo","one_or_more_neo","zero_or_more_neo"]:p.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],p.diagramId=e,await (0,a.XX)(p,b),"elk"===p.layoutAlgorithm&&b.select(".edges").lower();let f=b.selectAll('[id*="-background"]');Array.from(f).length>0&&f.each(function(){let t=(0,h.Ltv)(this),e=t.attr("id").replace("-background",""),s=b.select(`#${CSS.escape(e)}`);if(!s.empty()){let e=s.attr("transform");t.attr("transform",e)}}),n._K.insertTitle(b,"erDiagramTitleText",d?.titleTopMargin??25,c.db.getDiagramTitle()),(0,r.P)(b,8,"erDiagram",d?.useMaxWidth??!0)},"draw"),_=(0,c.K)((t,e)=>{let s=u.A,i=s(t,"r"),r=s(t,"g"),a=s(t,"b");return d.A(i,r,a,e)},"fade"),f=new Set(["redux-color","redux-dark-color"]),m=(0,c.K)(t=>{let{theme:e,look:s,bkgColorArray:i,borderColorArray:r}=t;if(!f.has(e))return"";let a=i?.length>0,n="";for(let e=0;e<t.THEME_COLOR_LIMIT;e++)n+=`
|
|
2
|
+
|
|
3
|
+
[data-look="${s}"][data-color-id="color-${e}"].node path {
|
|
4
|
+
stroke: ${r[e]};
|
|
5
|
+
${a?`fill: ${i[e]};`:""}
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
[data-look="${s}"][data-color-id="color-${e}"].node rect {
|
|
9
|
+
stroke: ${r[e]};
|
|
10
|
+
${a?`fill: ${i[e]};`:""}
|
|
11
|
+
}
|
|
12
|
+
`;return n},"genColor"),k={parser:y,get db(){return new p},renderer:b,styles:(0,c.K)(t=>{let{look:e,theme:s,erEdgeLabelBackground:i,strokeWidth:r}=t;return`
|
|
13
|
+
${m(t)}
|
|
14
|
+
.entityBox {
|
|
15
|
+
fill: ${t.mainBkg};
|
|
16
|
+
stroke: ${t.nodeBorder};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.relationshipLabelBox {
|
|
20
|
+
fill: ${t.tertiaryColor};
|
|
21
|
+
opacity: 0.7;
|
|
22
|
+
background-color: ${t.tertiaryColor};
|
|
23
|
+
rect {
|
|
24
|
+
opacity: 0.5;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.labelBkg {
|
|
29
|
+
background-color: ${f.has(s)&&i?i:_(t.tertiaryColor,.5)};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.edgeLabel {
|
|
33
|
+
background-color: ${f.has(s)&&i?i:t.edgeLabelBackground};
|
|
34
|
+
}
|
|
35
|
+
.edgeLabel .label rect {
|
|
36
|
+
fill: ${f.has(s)&&i?i:t.edgeLabelBackground};
|
|
37
|
+
}
|
|
38
|
+
.edgeLabel .label text {
|
|
39
|
+
fill: ${t.textColor};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.edgeLabel .label {
|
|
43
|
+
fill: ${t.nodeBorder};
|
|
44
|
+
font-size: 14px;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.label {
|
|
48
|
+
font-family: ${t.fontFamily};
|
|
49
|
+
color: ${t.nodeTextColor||t.textColor};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.edge-pattern-dashed {
|
|
53
|
+
stroke-dasharray: 8,8;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.node rect,
|
|
57
|
+
.node circle,
|
|
58
|
+
.node ellipse,
|
|
59
|
+
.node polygon
|
|
60
|
+
{
|
|
61
|
+
fill: ${t.mainBkg};
|
|
62
|
+
stroke: ${t.nodeBorder};
|
|
63
|
+
stroke-width: ${"neo"===e?r:"1px"};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.relationshipLine {
|
|
67
|
+
stroke: ${t.lineColor};
|
|
68
|
+
stroke-width: ${"neo"===e?r:"1px"};
|
|
69
|
+
fill: none;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.marker {
|
|
73
|
+
fill: none !important;
|
|
74
|
+
stroke: ${t.lineColor} !important;
|
|
75
|
+
stroke-width: 1;
|
|
76
|
+
}
|
|
77
|
+
[data-look=neo].labelBkg {
|
|
78
|
+
background-color: ${_(t.tertiaryColor,.5)};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.cluster rect {
|
|
82
|
+
fill: ${t.clusterBkg??t.mainBkg};
|
|
83
|
+
stroke: ${t.clusterBorder??t.nodeBorder};
|
|
84
|
+
stroke-width: 1px;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.cluster text {
|
|
88
|
+
fill: ${t.titleColor??t.textColor};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.cluster-label text {
|
|
92
|
+
fill: ${t.titleColor??t.textColor};
|
|
93
|
+
}
|
|
94
|
+
`},"getStyles")}},20271:(t,e,s)=>{s.d(e,{A:()=>a});var i=s(99900),r=s(47722);let a=(t,e)=>i.A.lang.round(r.A.parse(t)[e])},25292:(t,e,s)=>{s.d(e,{P:()=>n});var i=s(84187),r=s(14561),a=s(68567),n=(0,a.K)((t,e,s,a)=>{t.attr("class",s);let{width:n,height:c,x:h,y:u}=l(t,e);(0,i.a$)(t,c,n,a);let d=o(h,u,n,c,e);t.attr("viewBox",d),r.R.debug(`viewBox configured: ${d} with padding: ${e}`)},"setupViewPortForSVG"),l=(0,a.K)((t,e)=>{let s=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*e,height:s.height+2*e,x:s.x,y:s.y}},"calculateDimensionsWithPadding"),o=(0,a.K)((t,e,s,i,r)=>`${t-r} ${e-r} ${s} ${i}`,"createViewBox")},32631:(t,e,s)=>{s.d(e,{A:()=>a});var i=s(68567),r=s(10312),a=(0,i.K)((t,e)=>{let s;return"sandbox"===e&&(s=(0,r.Ltv)("#i"+t)),("sandbox"===e?(0,r.Ltv)(s.nodes()[0].contentDocument.body):(0,r.Ltv)("body")).select(`[id="${t}"]`)},"getDiagramElement")}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[392],{392:(e,r,t)=>{t.d(r,{diagram:()=>g});var a=t(77731),n=t(96910);t(58609),t(84187);var s=t(14561),l=t(68567),p=t(97811),i=(0,p.Pz)().RailroadPeg.parser.LangiumParser,o=(0,l.K)(e=>{let r=e.alternatives.map(u);return 1===r.length?r[0]:{type:"choice",alternatives:r}},"transformOrderedChoice"),u=(0,l.K)(e=>{let r=e.elements.map(m);return 1===r.length?r[0]:{type:"sequence",elements:r}},"transformSequence"),m=(0,l.K)(e=>{let r=c(e.suffix);return e.operator?{type:"special",text:"&"===e.operator?`&${d(r)}`:`!${d(r)}`}:r},"transformPrefix"),d=(0,l.K)(e=>{switch(e.type){case"terminal":return`"${e.value}"`;case"nonterminal":return e.name;case"special":return e.text;default:return"(...)"}},"nodeToLabel"),c=(0,l.K)(e=>{let r=f(e.primary);if(!e.operator)return r;switch(e.operator){case"?":return{type:"optional",element:r};case"*":return{type:"repetition",element:r,min:0,max:1/0};case"+":return{type:"repetition",element:r,min:1,max:1/0};default:throw Error(`Unsupported PEG suffix operator: ${e.operator}`)}},"transformSuffix"),f=(0,l.K)(e=>{switch(e.$type){case"PegLiteral":return{type:"terminal",value:e.value};case"PegIdentifier":return{type:"nonterminal",name:e.name};case"PegGroup":return o(e.element);case"PegAny":return{type:"special",text:e.dot};default:throw Error(`Unsupported PEG primary node: ${e.$type}`)}},"transformPrimary"),y=(0,l.K)(e=>({name:e.name,definition:o(e.definition)}),"transformRule"),P=(0,l.K)(e=>{(0,n.S)(e,a.db),e.title&&a.db.setTitle(e.title),e.rules.map(e=>a.db.addRule(y(e)))},"populateDb"),g={parser:{parse:(0,l.K)(e=>{a.db.clear(),s.R.debug("[PEG Parser] Starting Langium parse");let r=i.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new p.zg(r);let t=r.value;s.R.debug("[PEG Parser] Parsed rules:",t.rules.length),P(t),s.R.debug("[PEG Parser] Parse complete")},"parse"),parser:{yy:a.db}},db:a.db,renderer:a.U,styles:a.$}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3973],{2163:(e,t,o)=>{"use strict";function a(e){if(!e)return"";if(e.length<=14)return e;let t=e.substring(0,8),o=e.substring(e.length-6),a="•".repeat(12);return`${t}${a}${o}`}o.d(t,{o:()=>a})},2805:(e,t,o)=>{"use strict";o.d(t,{_r:()=>n,d8:()=>i,es:()=>l});var a=o(90076);let r=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;function n(){let e=window.location.hostname;return"localhost"===e||"::1"===e||"[::1]"===e||e.startsWith("127.")}function i(){if(n())return!0;let e=r.exec(window.location.hostname);if(!e||e.slice(1).some(e=>Number(e)>255))return!1;let t=Number(e[1]),o=Number(e[2]);return 10===t||192===t&&168===o||172===t&&!!(o>=16)&&!!(o<=31)}function l(e){return n()&&window.location.port!==String(a._8)?e?.loopbackOrigin||a.lE:null}},4018:(e,t,o)=>{"use strict";o.d(t,{u:()=>i});var a=o(1521);let r="9remote_api_keys";function n(e){try{return btoa(e)}catch{return e}}function i(){let e=(0,a.useCallback)(()=>{try{let e=localStorage.getItem(r);if(!e)return[];return JSON.parse(e).map(e=>({...e,key:function(e){try{return atob(e)}catch{return e}}(e.key)}))}catch(e){return console.error("Failed to load API keys:",e),[]}},[!0]),t=(0,a.useCallback)((t,o="")=>{if(t&&1)try{let a=e(),i=a.findIndex(e=>e.key===t);if(-1!==i){let e=a.map((e,t)=>({...e,key:n(e.key),lastLoginDate:t===i?new Date().toISOString():e.lastLoginDate}));localStorage.setItem(r,JSON.stringify(e));return}let l={id:Date.now().toString(),key:n(t),label:o||`Key ${a.length+1}`,createdAt:new Date().toISOString(),lastLoginDate:new Date().toISOString()},s=[...a.map(e=>({...e,key:n(e.key)})),l];localStorage.setItem(r,JSON.stringify(s))}catch(e){console.error("Failed to save API key:",e)}},[!0,e]),o=(0,a.useCallback)(t=>{try{let o=e().filter(e=>e.id!==t).map(e=>({...e,key:n(e.key)}));localStorage.setItem(r,JSON.stringify(o))}catch(e){console.error("Failed to remove API key:",e)}},[!0,e]),i=(0,a.useCallback)(()=>{try{localStorage.removeItem(r)}catch(e){console.error("Failed to clear API keys:",e)}},[!0]),l=(0,a.useCallback)(()=>{try{let e=localStorage.getItem(r);if(!e)return!1;return JSON.parse(e).length>0}catch{return!1}},[!0]),s=(0,a.useCallback)((t,o)=>{try{let a=e().map(e=>({...e,key:n(e.key),label:e.id===t?o:e.label||""}));localStorage.setItem(r,JSON.stringify(a))}catch(e){console.error("Failed to rename API key:",e)}},[!0,e]),c=(0,a.useCallback)(t=>{if(t&&1)try{let o=e().map(e=>({...e,key:n(e.key),lastLoginDate:e.key===t?new Date().toISOString():e.lastLoginDate}));localStorage.setItem(r,JSON.stringify(o))}catch(e){console.error("Failed to update last login date:",e)}},[!0,e]);return{saveKey:t,loadKeys:e,removeKey:o,renameKey:s,clearKeys:i,hasStoredKeys:l,updateLastLogin:c}}},7938:(e,t,o)=>{"use strict";o.d(t,{D5:()=>i,FO:()=>c,I9:()=>s,Ic:()=>l,eR:()=>a,ij:()=>n,tC:()=>r});let a={namespace:"/remote",enableWebRTC:!0,enableTurn:!1,debug:{transport:!1,remote:!1,panel:!1,showButton:!1},dcChunkSize:8,dcReliable:!1,dcOrdered:!1,hashRequestInterval:1500,lastDataThreshold:500,restreamDelay:200,mouseThrottle:8,keyThrottle:25,scrollInterval:100,tileLoadTimeout:600,batchSize:16,batchDelay:3,decodeQueueCap:48,resizeDebounceMs:100,resizeStableFrames:3,resizeMaxFrames:30,focusDebounce:50,longPressDelay:1e3,doubleClickDelay:300,moveThreshold:10,edgeScrollThreshold:15,edgeScrollMultiplier:1.5,momentumFriction:.94,momentumMinVelocity:.3,pointerMode:"trackpad",trackpadSensitivity:1.3,trackpadAcceleration:1.5,trackpadTapMaxMove:8,trackpadTapMaxDuration:220,trackpadCursorSize:20,trackpadEdgeMarginRatio:.25,clipboardBadgeTimeout:1e4,gestureLockDelay:80,gestureDistanceThreshold:15,gestureCentroidThreshold:10,gestureDominanceRatio:2,wheelScrollMultiplier:2.5,wheelLineHeight:40,wheelPageHeight:400,wheelZoomStep:.1,wheelBoostInterval:250,mouseButtonMap:{0:"left",1:"middle",2:"right"},pcModeControls:{rectangleSelect:!1,pointerModeToggle:!1,handMode:!1,keyboardToggle:!1,textPanel:!0,modifierRow:!0,help:!0}},r={ctrl:"control",cmd:"command",alt:"alt",shift:"shift"},n=[{id:"ctrl",label:"Ctrl",modifier:"ctrl",type:"modifier"},{id:"alt",label:"Alt",modifier:"alt",type:"modifier"},{id:"shift",label:"Shift",modifier:"shift",type:"modifier"},{id:"cmd",label:"⌘",modifier:"cmd",type:"modifier"},{id:"esc",label:"Esc",key:"escape",type:"key"},{id:"tab",label:"Tab",key:"tab",type:"key"},{id:"enter",label:"↵",key:"enter",type:"key",primary:!0},{id:"backspace",label:"⌫",key:"backspace",type:"key"},{id:"undo",label:"Undo",key:"z",modifiers:["control"],type:"combo",osAdaptive:!0},{id:"redo",label:"Redo",key:"z",modifiers:["control","shift"],type:"combo",osAdaptive:!0},{id:"up",label:"↑",key:"up",type:"arrow"},{id:"down",label:"↓",key:"down",type:"arrow"},{id:"left",label:"←",key:"left",type:"arrow"},{id:"right",label:"→",key:"right",type:"arrow"},{id:"home",label:"Home",key:"home",type:"key"},{id:"end",label:"End",key:"end",type:"key"},{id:"pgup",label:"PgUp",key:"pageup",type:"key"},{id:"pgdn",label:"PgDn",key:"pagedown",type:"key"},{id:"del",label:"Del",key:"delete",type:"key"},{id:"ins",label:"Ins",key:"insert",type:"key"},{id:"f1",label:"F1",key:"f1",type:"key"},{id:"f2",label:"F2",key:"f2",type:"key"},{id:"f3",label:"F3",key:"f3",type:"key"},{id:"f4",label:"F4",key:"f4",type:"key"},{id:"f5",label:"F5",key:"f5",type:"key"},{id:"f6",label:"F6",key:"f6",type:"key"},{id:"f7",label:"F7",key:"f7",type:"key"},{id:"f8",label:"F8",key:"f8",type:"key"},{id:"f9",label:"F9",key:"f9",type:"key"},{id:"f10",label:"F10",key:"f10",type:"key"},{id:"f11",label:"F11",key:"f11",type:"key"},{id:"f12",label:"F12",key:"f12",type:"key"},{id:"ctrlAltDel",label:"Ctl+Alt+Del",key:"delete",modifiers:["control","alt"],type:"combo"},{id:"ctrlShiftEsc",label:"Task Mgr",key:"escape",modifiers:["control","shift"],type:"combo"},{id:"altTab",label:"Alt+Tab",key:"tab",modifiers:["alt"],type:"combo"},{id:"altF4",label:"Alt+F4",key:"f4",modifiers:["alt"],type:"combo"},{id:"winKey",label:"Win",key:"command",type:"key"},{id:"printScreen",label:"PrtSc",key:"printscreen",type:"key"},{id:"paste",label:"Paste",key:"v",modifiers:["control"],type:"combo",osAdaptive:!0},{id:"cut",label:"Cut",key:"x",modifiers:["control"],type:"combo",osAdaptive:!0},{id:"selectAll",label:"All",key:"a",modifiers:["control"],type:"combo",osAdaptive:!0},{id:"desktopPrev",label:"◀ Desk",type:"desktop",direction:"prev"},{id:"desktopNext",label:"Desk ▶",type:"desktop",direction:"next"},{id:"desktopNew",label:"+ Desk",type:"desktop",direction:"new"}],i=["esc","undo","up","down","tab","ctrl","alt","shift","cmd","backspace"],l="enter",s=[["left","right","home","end","pgup","pgdn","del"],["f1","f2","f3","f4","f5","f6","f7","altTab"],["f9","f10","f11","f12","ctrlAltDel",,"desktopPrev","desktopNext","desktopNew"]],c={enter:"enter",return:"enter",space:" ",backspace:"backspace",tab:"tab",escape:"escape",Enter:"enter"," ":"space",Backspace:"backspace",Tab:"tab",Escape:"escape",ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",Home:"home",End:"end",PageUp:"pageup",PageDown:"pagedown",Delete:"delete",Insert:"insert",F1:"f1",F2:"f2",F3:"f3",F4:"f4",F5:"f5",F6:"f6",F7:"f7",F8:"f8",F9:"f9",F10:"f10",F11:"f11",F12:"f12",CapsLock:"capslock",NumLock:"numlock",ScrollLock:"scrolllock",PrintScreen:"printscreen",ContextMenu:"menu"}},11155:(e,t,o)=>{"use strict";function a(e){if("string"!=typeof e||!e)return!1;let t=function(e){if(!e||!e.startsWith("sk-"))return null;if(/^sk-[a-z0-9]{8}-[a-np-z1-9]{8}-[a-np-z1-9]{8}$/.test(e)){let[,t,o,a]=e.split("-");return{machineId:t,keyId:o,version:2,tail:a}}if(/^sk-[a-z0-9]{8}-[a-np-z1-9]{8}$/.test(e)){let[,t,o]=e.split("-");return{machineId:t,keyId:o,version:2}}let t=e.match(/^sk-([a-z0-9]{8})-([a-z0-9]{4})-([0-9a-f]{6})$/);return t?{machineId:t[1],keyId:t[2],crc:t[3]}:null}(e.trim().toLowerCase());return!!t&&2!==t.version}function r(e){if("string"!=typeof e||!/^sk-[a-z0-9]{8}-[a-np-z1-9]{8}-[a-np-z1-9]{8}$/.test(e))return e||null;let t=e.split("-");return`${t[0]}-${t[1]}-${t[2]}`}function n(e){return"string"==typeof e&&/^sk-[a-z0-9]{8}-[a-np-z1-9]{8}-[a-np-z1-9]{8}$/.test(e)?e.split("-")[3]:null}o.d(t,{Cj:()=>n,PF:()=>a,Uo:()=>r})},18057:(e,t,o)=>{"use strict";o.d(t,{A:()=>c});var a=o(73365),r=o(1521),n=o(64683),i=o(8910),l=o(78762),s=o(52345);function c({isOpen:e,onClose:t}){let{t:o,locale:d,setLocale:p}=(0,l.s)();return((0,r.useEffect)(()=>{if(!e)return;let o=e=>{"Escape"===e.key&&t()};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[e,t]),e)?(0,a.jsxs)("div",{className:"fixed inset-0 z-[60] flex items-center justify-center p-4",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-[2px] animate-in fade-in duration-200",onClick:t}),(0,a.jsxs)("div",{className:"relative card-elev max-w-lg w-full max-h-[90dvh] flex flex-col animate-in zoom-in-95 duration-200",children:[(0,a.jsxs)("div",{className:"px-5 py-4 flex items-center justify-between flex-shrink-0",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold text-text",children:o("menu.language")}),(0,a.jsx)("button",{onClick:t,className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-all duration-150 ease-out","aria-label":o("common.close"),children:(0,a.jsx)(n.X,{size:20})})]}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto modal-scrollable p-3",children:(0,a.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-2",children:s.dI.map(e=>{let o=e.code===d;return(0,a.jsxs)("button",{onClick:()=>{var o;return o=e.code,void((0,i.e)(),p(o),t())},className:`px-2 py-2 rounded-brand flex items-center gap-2 transition-all duration-150 ease-out active:scale-[0.97] min-w-0 ${o?"bg-brand-500 text-white":"text-text hover:bg-surface-2"}`,children:[(0,a.jsx)("img",{src:`https://flagcdn.com/w80/${e.country}.png`,alt:e.label,className:"w-5 h-[14px] object-cover rounded-[2px] flex-shrink-0",loading:"lazy"}),(0,a.jsx)("span",{className:"flex-1 text-sm font-medium truncate text-left",children:e.label}),o&&(0,a.jsx)(n.aJ,{size:14,className:"flex-shrink-0"})]},e.code)})})})]})]}):null}},20464:(e,t,o)=>{"use strict";o.d(t,{As:()=>h,zg:()=>p});var a=o(1521),r=o(29717),n=o(90076),i=o(11155),l=o(90084),s=o(2805),c=o(97711);let d="wrong-key-tail";async function p(e,t,o=n.qn){try{let t=new AbortController,a=setTimeout(()=>t.abort(),o),r=await fetch(`${e}/api/health`,{signal:t.signal});return clearTimeout(a),r.ok}catch{return!1}}async function u(e,{tail:t,tempKey:o},a=n.qn){try{let r=new AbortController,n=setTimeout(()=>r.abort(),a),i=await fetch(`${e}/api/verify-key`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tail:t||null,tempKey:o||null}),signal:r.signal});if(clearTimeout(n),!i.ok)return null;return(await i.json())?.ok===!0}catch{return null}}async function m(){return(0,s._r)()?(0,s.es)(await g()):(0,s.d8)()?window.location.origin:null}async function g(){try{let e=await fetch(n.Go);return e.ok?await e.json():null}catch{return null}}function h(){let[e,t]=(0,a.useState)(!1),[o,s]=(0,a.useState)(""),p=(0,r.useRouter)(),{setAuth:g}=(0,c.F)(),h=(0,a.useCallback)(async e=>{t(!0),s("");try{let t,o=await m();if(o){let t=e.tail||(0,i.Cj)(e.apiKey||""),a=e.tempKey||(e.token?.length<=8?e.token:null);try{let r=await u(o,{tail:t,tempKey:a});if(!0===r){let r=e.apiKey||a||"",n=(0,i.Uo)(r)||"direct";return t&&(0,l.LG)(n,{tail:t}),g({apiKey:n,tunnelUrl:o,mode:"local",tempKey:a?a.toUpperCase():null,localIp:null}),{success:!0,shouldAskToSave:!0,apiKey:n}}if(!1===r)return s(d),{success:!1,wrongTail:!0}}catch{}}let a=new AbortController,r=setTimeout(()=>a.abort(),n.cC);try{t=await fetch(n.Sn.connect,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,apiKey:(0,i.Uo)(e.apiKey)}),signal:a.signal})}catch(e){throw Error(e?.name==="AbortError"?"Connection timed out. Please try again.":"Network error. Please try again.")}finally{clearTimeout(r)}if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error||"Authentication failed")}let c=await t.json(),p=(0,i.Uo)(e.apiKey||c.apiKey);c.hostKeys?.x&&(0,l.LG)(p,{hostSealKey:c.hostKeys.x,hostPubKey:c.hostKeys.ed||null});let h=e.tail||(0,i.Cj)(e.apiKey||"");if(c.tunnelUrl&&(h||e.tempKey)){let t=await u(c.tunnelUrl,{tail:h,tempKey:e.tempKey||null});if(!1===t)return s(d),{success:!1,wrongTail:!0}}return g({apiKey:p,tunnelUrl:c.tunnelUrl||null,mode:"remote",tempKey:e.tempKey?e.tempKey.toUpperCase():null,localIp:c.localIp||null}),{success:!0,shouldAskToSave:!0,apiKey:p}}catch(e){return s(e.message),{success:!1,error:e.message}}finally{t(!1)}},[p,g]);return{loading:e,error:o,authenticateWithToken:(0,a.useCallback)(async(e,t=!1,o=null)=>t?h({token:e,tempKey:e,tail:o}):h({token:e}),[h]),authenticateWithApiKey:(0,a.useCallback)(async e=>h({apiKey:e}),[h])}}},38415:(e,t,o)=>{"use strict";o.d(t,{Gf:()=>s,Gi:()=>u,Hu:()=>l,Nn:()=>d,O8:()=>n,cu:()=>c,ij:()=>p,l7:()=>i,no:()=>m,pe:()=>a,rl:()=>r,xO:()=>g});let a="https://api.github.com",r="https://github.com/decolua/9remote",n=`${a}/repos/decolua/9remote`,i=!1,l=".devcontainer/devcontainer.json",s="NREMOTE_API_KEY",c={name:"9Remote",image:"mcr.microsoft.com/devcontainers/universal:latest",postCreateCommand:"npm install -g 9remote@latest",postAttachCommand:"nohup 9remote start > /tmp/9remote.log 2>&1 &",forwardPorts:[2208],portsAttributes:{2208:{label:"9Remote Server",onAutoForward:"silent",visibility:"public"}}},d=3e3,p=60,u={available:"Available",starting:"Starting",shutdown:"Shutdown",unknown:"Unknown"},m={user:"/user",codespaces:"/user/codespaces",codespaceByName:e=>`/user/codespaces/${e}`,startCodespace:e=>`/user/codespaces/${e}/start`,userReposList:"/user/repos?per_page=100&sort=updated&affiliation=owner,collaborator",repoContents:(e,t,o)=>`/repos/${e}/${t}/contents/${o}`,createCodespaceForRepo:(e,t)=>`/repos/${e}/${t}/codespaces`,codespaceSecretsPublicKey:"/user/codespaces/secrets/public-key",codespaceSecret:e=>`/user/codespaces/secrets/${e}`,codespaceSecretRepos:(e,t)=>`/user/codespaces/secrets/${e}/repositories/${t}`};function g(e){return`https://${e}-2208.app.github.dev`}},42174:(e,t,o)=>{"use strict";o.d(t,{A:()=>c});var a=o(73365),r=o(1521),n=o(98196),i=o(8910),l=o(78762),s=o(64683);function c({isOpen:e,onClose:t,onConfirm:o,title:d,message:p,confirmText:u,cancelText:m}){let{t:g}=(0,l.s)(),h=(0,r.useRef)(null),y=(0,r.useRef)(null),f=u??g("common.confirm"),k=m??g("common.cancel");return((0,r.useEffect)(()=>{if(!e)return;let t=requestAnimationFrame(()=>{y.current?.focus()});return()=>cancelAnimationFrame(t)},[e]),(0,r.useEffect)(()=>{if(!e)return;let a=e=>{if("Escape"===e.key)e.preventDefault(),e.stopPropagation(),t();else if("Enter"===e.key){if(h.current&&document.activeElement===h.current){e.preventDefault(),e.stopPropagation(),t();return}e.preventDefault(),e.stopPropagation(),(0,i.e)(),o?.(),t()}};return window.addEventListener("keydown",a,!0),()=>window.removeEventListener("keydown",a,!0)},[e,t,o]),!e||"u"<typeof document)?null:(0,n.createPortal)((0,a.jsxs)("div",{className:"fixed inset-0 z-[100] flex items-center justify-center px-4",style:{paddingTop:"max(1rem, env(safe-area-inset-top))",paddingBottom:"max(1rem, env(safe-area-inset-bottom))"},children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-[4px] animate-in fade-in duration-150",onClick:t}),(0,a.jsxs)("div",{role:"dialog","aria-modal":"true",className:"relative card-elev max-w-md w-full mt-4 mb-auto sm:my-auto max-h-[min(85%,calc(var(--app-height,85vh)-2rem))] overflow-y-auto animate-in zoom-in-95 duration-200",onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:[(0,a.jsx)("div",{className:"px-6 py-4",children:(0,a.jsx)("h3",{className:"text-lg font-semibold text-text",children:d})}),(0,a.jsx)("div",{className:"px-6 pb-4",children:(0,a.jsx)("p",{className:"text-text whitespace-pre-line",children:p})}),(0,a.jsxs)("div",{className:"px-6 py-4 flex justify-end gap-3",children:[(0,a.jsxs)("button",{ref:h,onClick:()=>{(0,i.e)(),t()},className:"px-4 py-2 bg-surface-2 hover:bg-surface-3 text-text rounded-brand transition-all duration-150 ease-out active:scale-[0.98] font-medium flex items-center gap-1.5",children:[(0,a.jsx)("span",{children:k}),(0,a.jsx)("kbd",{className:"hidden sm:inline-flex items-center text-[10px] font-mono px-1 py-0.5 rounded bg-surface-3 text-text-muted leading-none",children:"Esc"})]}),(0,a.jsxs)("button",{ref:y,onClick:()=>{(0,i.e)(),o?.(),t()},className:"px-4 py-2 bg-red-600 hover:bg-red-700 text-white rounded-brand transition-all duration-150 ease-out active:scale-[0.98] font-medium flex items-center gap-1.5 focus:outline-none focus:ring-2 focus:ring-red-500/50",children:[(0,a.jsx)("span",{children:f}),(0,a.jsx)("kbd",{className:"hidden sm:inline-flex items-center justify-center w-4 h-4 rounded bg-white/20 text-white",children:(0,a.jsx)(s.Lt,{size:10,strokeWidth:2.5})})]})]})]})]}),document.body)}},45111:(e,t,o)=>{"use strict";o.d(t,{A:()=>r});var a=o(73365);function r({size:e="md",text:t,className:o=""}){return(0,a.jsxs)("div",{className:`flex flex-col items-center justify-center gap-3 ${o}`,children:[(0,a.jsx)("div",{className:`animate-spin rounded-full border-brand-500 border-t-transparent ${{sm:"h-4 w-4 border-2",md:"h-8 w-8 border-2",lg:"h-12 w-12 border-b-2"}[e]}`}),t&&(0,a.jsx)("p",{className:"text-brand-500 text-sm font-medium",children:t})]})}},49262:(e,t,o)=>{var a={"./ar.js":[22180,2180],"./de.js":[81228,1228],"./en.js":[58628],"./es.js":[9259,9259],"./fa.js":[68638,8638],"./fr.js":[87507,7507],"./he.js":[27960,7960],"./hi.js":[20132,132],"./id.js":[41222,1222],"./it.js":[46742,6742],"./ja.js":[40674,674],"./ko.js":[50213,213],"./ms.js":[98467,8467],"./nl.js":[30925,925],"./pl.js":[91243,1243],"./pt.js":[24643,4643],"./ru.js":[82038,2038],"./sv.js":[83514,3514],"./th.js":[96419,6419],"./tr.js":[2849,2849],"./uk.js":[29299,9299],"./vi.js":[71750,1750],"./zh.js":[43429,3429]};function r(e){if(!o.o(a,e))return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t});var t=a[e],r=t[0];return Promise.all(t.slice(1).map(o.e)).then(()=>o(r))}r.keys=()=>Object.keys(a),r.id=49262,e.exports=r},52159:(e,t,o)=>{"use strict";o.d(t,{c:()=>r});var a=o(7938);function r(e,...t){a.eR.debug?.[e]&&console.log(...t)}},52345:(e,t,o)=>{"use strict";o.d(t,{Xn:()=>r,dI:()=>a,zl:()=>n});let a=[{code:"en",label:"English",flag:"\uD83C\uDDFA\uD83C\uDDF8",country:"us"},{code:"vi",label:"Tiếng Việt",flag:"\uD83C\uDDFB\uD83C\uDDF3",country:"vn"},{code:"zh",label:"中文",flag:"\uD83C\uDDE8\uD83C\uDDF3",country:"cn"},{code:"es",label:"Espa\xf1ol",flag:"\uD83C\uDDEA\uD83C\uDDF8",country:"es"},{code:"hi",label:"हिन्दी",flag:"\uD83C\uDDEE\uD83C\uDDF3",country:"in"},{code:"ar",label:"العربية",flag:"\uD83C\uDDF8\uD83C\uDDE6",country:"sa"},{code:"pt",label:"Portugu\xeas",flag:"\uD83C\uDDE7\uD83C\uDDF7",country:"br"},{code:"ru",label:"Русский",flag:"\uD83C\uDDF7\uD83C\uDDFA",country:"ru"},{code:"ja",label:"日本語",flag:"\uD83C\uDDEF\uD83C\uDDF5",country:"jp"},{code:"de",label:"Deutsch",flag:"\uD83C\uDDE9\uD83C\uDDEA",country:"de"},{code:"fr",label:"Fran\xe7ais",flag:"\uD83C\uDDEB\uD83C\uDDF7",country:"fr"},{code:"ko",label:"한국어",flag:"\uD83C\uDDF0\uD83C\uDDF7",country:"kr"},{code:"it",label:"Italiano",flag:"\uD83C\uDDEE\uD83C\uDDF9",country:"it"},{code:"tr",label:"T\xfcrk\xe7e",flag:"\uD83C\uDDF9\uD83C\uDDF7",country:"tr"},{code:"id",label:"Bahasa Indonesia",flag:"\uD83C\uDDEE\uD83C\uDDE9",country:"id"},{code:"th",label:"ไทย",flag:"\uD83C\uDDF9\uD83C\uDDED",country:"th"},{code:"pl",label:"Polski",flag:"\uD83C\uDDF5\uD83C\uDDF1",country:"pl"},{code:"nl",label:"Nederlands",flag:"\uD83C\uDDF3\uD83C\uDDF1",country:"nl"},{code:"uk",label:"Українська",flag:"\uD83C\uDDFA\uD83C\uDDE6",country:"ua"},{code:"fa",label:"فارسی",flag:"\uD83C\uDDEE\uD83C\uDDF7",country:"ir"},{code:"ms",label:"Bahasa Melayu",flag:"\uD83C\uDDF2\uD83C\uDDFE",country:"my"},{code:"sv",label:"Svenska",flag:"\uD83C\uDDF8\uD83C\uDDEA",country:"se"},{code:"el",label:"Ελληνικά",flag:"\uD83C\uDDEC\uD83C\uDDF7",country:"gr"},{code:"he",label:"עברית",flag:"\uD83C\uDDEE\uD83C\uDDF1",country:"il"}],r="en",n="9remote_locale"},58628:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>a});let a={common:{statusIdle:"Idle",statusWorking:"Working",statusBlocked:"Needs input",statusDone:"Your turn",loading:"Loading...",cancel:"Cancel",confirm:"Confirm",save:"Save",delete:"Delete",close:"Close",back:"Back",next:"Next",edit:"Edit",rename:"Rename",remove:"Remove",open:"Open",yes:"Yes",no:"No",ok:"OK",error:"Error",success:"Success",failed:"Failed",retry:"Retry",refresh:"Refresh",clipboard:"Clipboard",clipboardCopy:"Copy",clipboardEmpty:"Clipboard is empty",search:"Search",create:"Create",new:"New",add:"Add",copy:"Copy",copied:"Copied",download:"Download",upload:"Upload",enabled:"Enabled",disabled:"Disabled",on:"on",off:"off",minute:"min",hour:"h",day:"d",minutesAgo:"{n} min ago",hoursAgo:"{n} hours ago",daysAgo:"{n} days ago",done:"Done"},agentSwitcher:{title:"Your devices",active:"ACTIVE",unnamed:"Untitled",connecting:"Connecting…",unreachable:"Can't reach this device. Is it online?"},login:{tagline:"Access your terminal from anywhere",heroLine1:"Any machine.",heroLine2:"One terminal.",heroLine3:"In your pocket.",featureTerminal:"Terminal",featureDesktop:"Desktop",featureFiles:"Files",termConnected:"agent connected",termTunnel:"tunnel established",termReady:"ready",accessKey:"Access Key",placeholder:"sk-xxx... or One-Time Key (ABC123)",rememberKey:"Remember this key",connect:"Connect",connecting:"Connecting...",authenticating:"Authenticating with token...",invalidKeyTail:"Wrong access key — check the last characters and try again.",scanQr:"Scan QR to login",qrScanTitle:"Scan QR Code",qrHint:"Point the camera at the QR code shown on the machine running 9Remote.",qrDetected:"QR Code detected!",qrAuthenticating:"Authenticating...",qrPleaseWait:"Please wait...",qrLibFail:"Failed to load the QR scanner library.",qrInitFail:"Could not start the scanner.",qrCamDenied:"Camera permission denied. Allow camera access and try again.",qrNoCamera:"No camera found on this device.",qrCamBusy:"Camera is in use by another app.",qrCamError:"Could not open the camera.",agentOffline:"This machine isn't running 9remote. Start the agent, then try again.",legacyKeyUpdateRequired:"Agent update required",legacyKeyUpdateHint:"This device uses an older key format. Update 9remote on that machine to connect:",legacyKeyError:"This access key uses an older format. Please update 9remote to the latest version on your host machine.",updateRequired:"Update required",savedKeys:"Saved Keys",login:"Login",lastLogin:"Last login",namePlaceholder:"Name this key (optional)",rename:"Rename",deleteKeyTitle:"Delete key",deleteKeyConfirm:'Are you sure you want to delete "{name}"?',justNow:"Just now",minutesAgo:"{n}m ago",hoursAgo:"{n}h ago",daysAgo:"{n}d ago",tapToScan:"Tap to scan",orEnterManually:"or enter key manually",addKey:"Add Key",secureTitle:"Secure & Encrypted",secureDesc:"All connections are end-to-end encrypted and secure.",featAccessTitle:"Access Anywhere",featAccessDesc:"Connect from any device, anywhere.",featSecureTitle:"Secure Connection",featSecureDesc:"End-to-end encryption keeps you safe.",featFastTitle:"Fast & Reliable",featFastDesc:"Low latency and high performance.",featSessionsTitle:"Multiple Sessions",featSessionsDesc:"Manage and switch between sessions.",home:"Home",docs:"Docs"},menu:{reloadRestart:"Reload & Restart",restartHost:"Restart 9remote host",restartConfirmTitle:"Restart 9remote host?",restartConfirmMessage:"This restarts the agent process (no reinstall). Terminal sessions are preserved. It takes a few seconds.",restartStarting:"Restarting host…",restartRestarting:"Restarting 9remote…",restartDone:"Restarted! Reconnecting…",restartTimeout:"Restart is taking too long",restartTimeoutHint:"Reconnect manually if it doesn't recover.",title:"Menu",language:"Language",theme:"Theme",notifications:"Notifications",webgl:"GPU Render (Faster)",webglHint:"Turn off if text looks wrong",notificationsHint:"Notify when agent finishes",files:"File Explorer",downloading:"Downloading",copying:"Copying",conflictTitle:"File already exists",conflictMessage:"{name} already exists. Replace or skip?",skip:"Skip",skipAll:"Skip all",replace:"Replace",replaceAll:"Replace all",sites:"Local Sites",terminalSettings:"Terminal Settings",fontSize:"Font Size",terminalTheme:"Terminal Theme",terminalBackground:"Background",bgDim:"Background dim",bgApplyAll:"Apply to all",bgUrlPlaceholder:"Image URL (https://…)",bgSave:"Save",bgSaveFailed:"Could not save background",bgFromDevice:"Choose from device",bgFromUrl:"Paste image URL",bgChange:"Change image",bgAdd:"Add",bgCustomLabel:"Custom",bgDeleteFailed:"Could not delete background",bgCustomTitle:"Custom background",commandNotes:"Command Notes",showButtons:"Quick Buttons",showFolder:"Folder & Git Button",showNote:"Checklist Button",artifactHint:"The AI can preview html, docx, pdf, images and more instantly, beside your terminal.",artifactPanel:"Artifact preview",settingsJarvis:"Jarvis",jarvisToggle:"Jarvis coordinator",jarvisToggleHint:"Show the Jarvis button in the header. Its tools need the MCP switch in Plugins.",jarvisMcpOff:"The MCP switch in Plugins is off - Jarvis will start without its coordinator tools.",community:"Community",installApp:"Install App",upgrade:"Upgrade",upgradeExpires:"Expires",upgradeRestore:"Restore Purchases",codespace:"Codespace",logout:"Logout",settingsGeneral:"General",settingsAppearance:"Appearance",settingsTerminalTab:"Terminal",settingsMcp:"Plugins",mcpIntro:"Extra abilities you can give your AI coding tools.",mcpTools:"Allow",mcpRestartHint:"Turning it off applies at once. Turning it on needs the AI tool restarted.",mcpUnavailable:"Update this host to use MCP.",artifactFormats:"Formats it can show",mcpClients:"Works with",settingsWorkspace:"Workspace",settingsApplication:"Application",settingsAccount:"Account",themeLight:"Light",themeDark:"Dark",reload:"Reload App",remoteDesktop:"Remote Desktop",headerButtons:"Header buttons",settingsButtons:"Buttons",notificationsButton:"Notifications",settings:"Settings",enablePush:"Enable Push Notifications",disablePush:"Disable Push Notifications",pushHint:"Enable push notifications to get alerted when AI completes tasks",pushActiveHint:"Push notifications are on for this device. You'll be alerted when AI completes tasks.",versionMismatch:"9remote {version} is outdated",versionMismatchHint:"Some features may not work. Run:",updateNow:"Update now",updating:"Updating… reconnecting",webReloadTitle:"New web version available",webReloadHint:"Reload to get the latest interface.",reloadWeb:"Reload",updateAvailableTitle:"9Remote host update available",updateConfirmTitle:"Update 9remote?",updateConfirmMessage:"This installs the latest version and restarts the connection. It takes about a minute.",updateStarting:"Starting update…",updateInstalling:"Installing new version…",updateTimeout:"Update is taking too long",updateTimeoutHint:"Reload manually if it doesn't recover.",updateRestarting:"Updating 9remote…",updateReconnecting:"Reconnecting…",updateDone:"Updated! Reloading…",version:"Version"},workspace:{loading:"Loading...",logoutTitle:"Logout",logoutMessage:"Are you sure you want to logout?",failedCreateSession:"Failed to create session: {error}",failedRenameSession:"Failed to rename session: {error}"},sessions:{headerTitle:"9remote.cc",connected:"Connected",disconnected:"Disconnected",codespaceStopped:"Codespace stopped",placeholder:"Terminal name (optional)",newButton:"+ New",empty:"No active sessions",emptyHint:"Create a new session to get started",created:"Created {time}",deleteTitle:"Delete Session",deleteMessage:'Are you sure you want to delete "{name}"?',editName:"Edit name",resumeSession:"Resume session",restartAi:"Restart AI",markRead:"Mark as read",openAsUi:"Open as chat UI",openAsTerminal:"Open as terminal",modeSwitchFailed:"Could not switch this terminal",newTerminal:"New terminal",options:"Options"},agentHistory:{title:"History",empty:"No past conversations here yet",untitled:"Untitled",openNow:"Open in a terminal",minutesAgo:"{n}m",hoursAgo:"{n}h",daysAgo:"{n}d",showAll:"View all history",searchPlaceholder:"Search conversations…",allAgents:"All agents",delete:"Delete session",deleteTitle:"Delete conversation",deleteMessage:'Delete "{title}"? This permanently deletes the conversation transcript.',noResults:"No matching conversations"},workspaces:{title:"Workspaces",newWorkspace:"Add workspace",newWorkspacePrompt:"Workspace name",defaultName:"New workspace",ungrouped:"No workspace",addTerminal:"New terminal here",moveToWorkspace:"Move to workspace",rename:"Rename workspace",delete:"Remove workspace",emptyWorkspace:"No terminals here",selectFolder:"Choose folder",browse:"Browse",recentFolders:"Recent",searchFolders:"Search folders...",parentFolder:"Up one level",drives:"Drives",homeFolder:"Home",hiddenFolders:"Hidden folders",selectNamed:'Choose "{name}"',enterPath:"Type a path and press Enter",pathNotFolder:"That path is not a folder",filterOrPath:"Search, or type a path like /home/me",notADirectory:'"{name}" is not a folder in {dir}',multipleDirMatches:'"{name}" matches several folders in {dir}',invalidPath:"Invalid path",openHere:"New terminal here",tabFiles:"Files",tabGit:"Git",tabTrees:"Trees",refreshRepos:"Rescan repos",onlyChanged:"Only changed files",openFullFiles:"Open full file explorer",emptyTitle:"Nothing open yet",cardWorkspaceTitle:"Workspace",cardWorkspaceDesc:"Open a folder and run terminals in it",cardRemoteTitle:"Remote desktop",cardRemoteDesc:"Control this machine's screen",emptyWordTerminal:"Remote Terminal",emptyWordRemote:"Remote Desktop",emptyTagWorkspace:"workspace \xb7 pty",emptyTagRemote:"remote \xb7 webrtc",emptyMetaWorkspace:"open a folder \xb7 <b>sessions persist</b>",emptyMetaRemote:"control this machine \xb7 <b>low latency</b>",worktrees:"Worktrees",branches:"Branches",newWorktree:"New worktree",worktreeName:"Branch name",worktreeRepoLabel:"Repo to add the worktree in",worktreeNameAscii:"This name can't become a branch — type it in Latin letters.",addWorktree:"Add worktree",removeWorktree:"Remove worktree",removeWorktreeMessage:'Remove worktree at "{path}"?',removeWorktreeFolder:"Folder: {path}",removeWorktreeBranchDelete:"Branch: {branch} (fully merged — deleted too)",removeWorktreeBranchKeep:"Branch: {branch} (not fully merged — kept)",removeWorktreeSessions:"{count} session(s) inside: {names}",removeWorktreeBranch:'Branch "{branch}" is deleted too (when fully merged).',worktreeBranchKept:'Branch "{branch}" kept: not fully merged.',worktreeBusy:"{count} terminal(s) still run in this worktree: {names}",checkedOut:"checked out",newBranch:"New branch",checkout:"Checkout",searchBranch:"Search branches",worktreePath:"Worktree path",nestedRepos:"{count} repos",showCleanRepos:"Show {count} unchanged repo(s)",showHiddenRepos:"Unhide {count} repo(s)",hideRepo:"Hide this repo",scanDeeper:"Scan subfolders deeper",deleteTitle:"Remove workspace",deleteMessage:'Remove workspace "{name}"? Its terminals are closed. Files on disk are untouched.'},terminal:{quotaNoData:"No quota data",quotaUsageTitle:"usage",back:"Back",menu:"Menu",newTerminal:"New terminal",remoteDesktop:"Remote Desktop",defaultName:"Term",searchAgents:"Search terminal or agent",noAgentsFound:"No match",skipPermissions:"Skip permission prompts",plainShell:"Terminal",nameLabel:"Name (optional)",workspaceRoot:"Workspace root",detachedHead:"detached",browseFolders:"Browse folders…",shell:"Shell"},files:{selectWorkspace:"Select Workspace",recentWorkspaces:"Recent Workspaces",home:"Home",root:"Root",drive:"Drive {letter}",codespaces:"Codespaces",removeRecent:"Remove from recent",removeTitle:"Remove Workspace",removeMessage:'Remove "{name}" from recent workspaces?',setAsWorkspace:"Set as Workspace",openFolder:"Open Folder",newFile:"New File",newFolder:"New Folder",rename:"Rename",delete:"Delete",deleteFile:"Delete File",deleteFolder:"Delete Folder",deleteFileMessage:'Delete "{name}"?',deleteFolderMessage:'Delete folder "{name}" and all its contents?',emptyFolder:"Empty folder",git:"Git",parent:"Parent folder",workspace:"Workspace",failedLoad:"Failed to load: {error}",failedDelete:"Failed to delete: {error}",failedCreate:"Failed to create: {error}",failedRename:"Failed to rename: {error}",enterName:"Enter name",confirmRename:"Rename to:",setWorkspace:"Set Workspace",setAsWorkspaceTitle:"Set as workspace",switchWorkspace:"Switch workspace",searchFiles:"Search files",toggleHidden:"Toggle hidden files",searchPlaceholder:"Search files...",searching:"Searching...",noFilesFound:"No files found",noGitRepo:"No git repository",cannotOpenBinary:"Cannot open binary file",createNew:"Create New",file:"File",folder:"Folder",placeholderFile:"filename.js",placeholderFolder:"folder-name",pickFile:"Choose files",pickFolder:"Choose folder",copyPath:"Copy path",copyRelPath:"Copy Relative Path",copyName:"Copy Filename",delete:"Delete",rename:"Rename",deleteConfirmTitle:"Delete",deleteConfirmMessage:'Delete "{name}"?'},fileKind:{web:"Web pages",document:"Documents",sheet:"Spreadsheets",image:"Images",media:"Audio & video",diagram:"Diagrams",code:"Code & text"},editor:{save:"Save",saving:"Saving...",saved:"Saved",unsaved:"Unsaved changes",close:"Close",discard:"Discard",discardTitle:"Discard Changes",discardMessage:"You have unsaved changes. Discard them?",unsavedTitle:"Save changes to {name}?",unsavedBody:"Your changes will be lost if you don't save them.",failedLoad:"Failed to load file: {error}",failedSave:"Failed to save: {error}",openFull:"Open in full editor",artifact:"Artifact",preview:"Preview",editCode:"Edit code",reload:"Reload",previewFailed:"Preview failed",previewNoRoute:"No LAN or tunnel route to the agent",previewBack:"Back",previewForward:"Forward",previewOpenTab:"Open in a new tab",changedOnDisk:"Changed on disk",reloadFromDisk:"Reload",mermaidEmpty:"Nothing to draw",readOnly:"Read only",line:"Line",column:"Column",gitDiff:"Git Diff",typeText:"Type text and insert...",insert:"Insert",statusModified:"Modified",statusAdded:"Added",statusUntracked:"Untracked"},git:{title:"Git",branch:"Branch",changes:"Changes",staged:"Staged",unstaged:"Unstaged",untracked:"Untracked",commit:"Commit",commitAndPush:"Commit & Push",commitSuccess:"Commit successful",pushSuccess:"Push successful",stageFailed:"Failed to stage changes",commitFailed:"Commit failed",pushFailed:"Push failed",pullSuccess:"Pull successful",pullFailed:"Pull failed",stageAllConfirmTitle:"Stage All & Commit",stageAllConfirmMessage:"No changes are staged. Stage all changes and commit?",stageAndCommit:"Stage & Commit",gitActions:"Git actions",commitPlaceholder:"Commit message…",stageAllNote:"Stage all \xb7 {count}",upToDate:"Everything up-to-date",commitMessage:"Commit message",push:"Push",pull:"Pull",fetch:"Fetch",stage:"Stage",stageAll:"Stage All",unstage:"Unstage",discard:"Discard",discardChanges:"Discard Changes",discardMessage:'Discard changes to "{name}"?',noChanges:"No changes",diff:"Diff",pushing:"Pushing...",pulling:"Pulling...",committing:"Committing...",failedCommit:"Failed to commit: {error}",failedPush:"Failed to push: {error}",failedPull:"Failed to pull: {error}",status:"Status",diffTab:"Diff",modified:"Modified",added:"Added",deleted:"Deleted",untrackedTitle:"Untracked",openFile:"Open file",discardChangesTitle:"Discard changes",discardConfirmTitle:"Discard Changes",discardConfirmDelete:'Are you sure you want to delete "{name}"? This cannot be undone.',discardConfirmDiscard:'Are you sure you want to discard changes in "{name}"? This cannot be undone.',addToGitignore:"Add to .gitignore"},fileExplorer:{explorer:"Explorer",search:"Search",sourceControl:"Source Control",settings:"Settings",outline:"Outline",noFolderOpen:"No folder open",uploadingCount:"Uploading {{n}}/{{total}}…",uploadFailedCount:"{{n}} of {{total}} files failed to upload",openFolder:"Open Folder",recentWorkspaces:"Recent Workspaces",openedEditors:"Open Editors",closeEditor:"Close",closeOthers:"Close Others",closeAll:"Close All",closeAllSaved:"Close All Saved",saveAll:"Save All",newFile:"New File",newFolder:"New Folder",refreshExplorer:"Refresh Explorer",collapseAll:"Collapse All",searchInFiles:"Search in files",replaceInFiles:"Replace in files",searchPlaceholder:"Search",replacePlaceholder:"Replace",caseSensitive:"Match Case",wholeWord:"Match Whole Word",useRegex:"Use Regular Expression",filesToInclude:"files to include",filesToExclude:"files to exclude",noResults:"No results found",resultCount:"{count} results in {fileCount} files",replaceAll:"Replace All",replaceConfirmTitle:"Replace in Files",replaceConfirmMessage:"Replace {count} occurrences in {fileCount} files?",commandPalette:"Command Palette",quickOpen:"Quick Open File",typeCommand:"Type a command",typeFileName:"Type a file name",noCommandsFound:"No commands found",workspaceSwitcher:"Switch Workspace",pinWorkspace:"Pin",unpinWorkspace:"Unpin",renameWorkspace:"Rename Workspace",workspaceNamePlaceholder:"Workspace display name",pinned:"Pinned",recent:"Recent",searchWorkspaces:"Search workspaces",welcomeTitle:"Welcome",welcomeSubtitle:"Open a folder to start working",welcomeOpenFolder:"Open Folder",welcomeRecent:"Recent",toggleSidebar:"Toggle Sidebar",togglePanel:"Toggle Panel",togglePanelBottom:"Toggle Bottom Panel",toggleWordWrap:"Toggle Word Wrap",zoomIn:"Zoom In",zoomOut:"Zoom Out",resetZoom:"Reset Zoom",formatDocument:"Format Document",findInFile:"Find",replaceInFile:"Replace",goToLine:"Go to Line",goToFile:"Go to File",revealInOS:"Reveal in Finder/Explorer",openInTerminal:"Open in Terminal",copyPath:"Copy Path",copyRelativePath:"Copy Relative Path",duplicate:"Duplicate",cut:"Cut",paste:"Paste",autoSave:"Auto Save",autoSaveOff:"Off",autoSaveAfterDelay:"After Delay",autoSaveOnFocusChange:"On Focus Change",fontSize:"Font Size",wordWrap:"Word Wrap",language:"Language",encoding:"Encoding",spaces:"Spaces",branch:"Branch",noBranch:"No branch",commitMessage:"Commit Message",commitMessagePlaceholder:"Message (Cmd+Enter to commit)",stage:"Stage",stageAll:"Stage All",unstage:"Unstage",push:"Push",pull:"Pull",sync:"Sync",staged:"Staged Changes",changes:"Changes",untracked:"Untracked",bottomPanelTerminal:"Terminal",bottomPanelOutput:"Output",bottomPanelProblems:"Problems",expandAll:"Expand All",recentFiles:"Recent Files",closedTabReopen:"Reopen Closed Tab",unsavedDot:"●",loadingTree:"Loading...",fileWatcherActive:"Watching for changes"},mobile:{title:"Android Device",refreshDevices:"Refresh devices",pickDevice:"Pick a device to mirror",noDevices:"No Android device found. Start an emulator or attach a device with USB debugging on.",starting:"Starting stream…",unsupportedBrowser:"This browser cannot decode the video stream. Use Chrome, Edge, or Safari 16.4+.",back:"Back",home:"Home",recents:"Recents",power:"Lock screen",shutdownDevice:"Shut down the emulator",shutdownTitle:"Shut down emulator?",shutdownMessage:"{name} will stop, losing anything running on it. Starting it again takes around 20 seconds.",shutdownConfirm:"Shut down",androidDevice:"Android Device",deviceRunning:"Android Device — {count} running",rotate:"Rotate",stopped:"Stopped",startDevice:"Start device",stopDevice:"Stop device",switchDevice:"Switch device",lowPower:"Low power mode",lowPowerHint:"No emulator window — much less CPU, fewer frames",noDevicesWithSdk:"No device running. Start an emulator below, or attach a phone with USB debugging on.",phaseLaunching:"Starting emulator…",phaseBooting:"Booting Android…",phaseReady:"Almost ready…",backToScreen:"Back to the device screen",tabApps:"Apps",tabLogs:"Logs",dropApk:"Install an APK",dropApkHint:"Drop a file here, or tap to choose",installing:"Installing…",installedApps:"Installed apps",noApps:"No user apps installed",launch:"Launch",forceStop:"Force stop",clearData:"Clear data",uninstall:"Uninstall",deepLinkPlaceholder:"myapp://path or https://…",filterByApp:"Filter by app",allApps:"All apps",minLevel:"Level",clearLog:"Clear log",pauseLog:"Pause",resumeLog:"Resume",logPaused:"Paused — new lines are not shown",noLogs:"Waiting for log output…",hideNoise:"Hide driver noise",showNoise:"Show driver noise (hidden by default)",modeFloat:"Unpin (float over the page)",modePin:"Pin to the right",resize:"Resize",setupTitle:"Android tooling",setupInstall:"Install",setupExtracting:"Extracting…",setupInstallTo:"Installs to",setupLowDisk:"Not enough disk space at the install location",setupRequires:"Needs {deps} first",setupDepsCmdline:"command line tools",setupDepsJdk:"Java 17",setupDepsEmulator:"emulator",setupBannerHint:"Some Android tools are missing — tap to install",addDevice:"Add device",noDevicesHint:"No device yet — tap + to create one, or plug in a phone with USB debugging on.",presetReady:"Ready — nothing to download",presetDownload:"Android 16 \xb7 ~1.5 GB download","provisionStep_platform-tools":"Downloading adb…",provisionStep_jdk:"Downloading Java…","provisionStep_cmdline-tools":"Downloading SDK tools…",provisionStep_emulator:"Downloading the emulator…",provisionStep_image:"Downloading Android…",provisionStep_create:"Creating the device…",imagesTitle:"System images",imagesSearch:"Search system images…",imagesNone:"No system images match",imageInstall:"Install image",imageRemove:"Remove image",imageRemoveTitle:"Remove system image?",imageRemoveMessage:"{path} will be deleted from the host. AVDs using it will no longer start.",avdCreateTitle:"Create Virtual Device",avdStep1:"Hardware",avdStep2:"System Image",avdStep3:"Name",avdNoProfiles:"No device profiles available",avdNamePlaceholder:"AVD name",avdInstalledBelow:"Installed images are marked",avdMenu:"AVD options",avdWipe:"Wipe data",avdWipeTitle:"Wipe AVD data?",avdWipeMessage:"{name} will lose all apps, accounts and files — back to a fresh device.",avdDelete:"Delete",avdDeleteTitle:"Delete AVD?",avdDeleteMessage:"{name} and its storage on the host will be removed permanently."},remote:{title:"Remote Desktop",connecting:"Connecting...",disconnected:"Disconnected",fullscreen:"Fullscreen",exitFullscreen:"Exit Fullscreen",receivingImage:"Receiving screen…",keyboard:"Keyboard",mouse:"Mouse",fps:"FPS",debug:"Debug",help:"Help",close:"Close",sendKey:"Send Key",helpTitle:"Remote Desktop Help",notAvailable:"Remote desktop is not available",customizeKeys:"Customize keys",back:"Back",resetZoom:"Reset zoom",refresh:"Refresh",rectangleSelection:"Rectangle selection",handMode:"Hand mode",toggleKeyboard:"Toggle native keyboard",hideControls:"Hide controls",showControls:"Show controls",textBatchInput:"Text batch input",extraKeys:"Extra keys",customizeRemoteKeys:"Customize Remote Keys",exitRemote:"Exit remote desktop",debugTitle:"Debug Stats",minimize:"Minimize",transport:"Transport",latency:"Latency",tilesPerSec:"Tiles/sec",bandwidth:"Bandwidth",clearStats:"Clear Stats",lockTitle:"Windows is locked",lockGrantDesc:'Turn on "Unlock PC remotely" in 9remote host on this PC.',lockDesc:"Enter the Windows PIN or password for this computer",lockPlaceholder:"Windows PIN or password",unlock:"Unlock",unlocking:"Unlocking…",unlockFailed:"Unlock failed — check your PIN/password and try again."},remoteHelp:{modePc:"PC / Mouse",modeTrackpad:"Touch \xb7 Trackpad",modeDirect:"Touch \xb7 Direct",mouseTitle:"Mouse",keyboardTitle:"Keyboard",gesturesTrackpadTitle:"Gestures (Trackpad ✋)",gesturesDirectTitle:"Gestures (Direct)",toolbarTitle:"Toolbar",mouseClickKey:"Click / Drag",mouseClickDesc:"Left-click, drag to select/move",mouseRightKey:"Right-click",mouseRightDesc:"Context menu on remote",mouseWheelKey:"Wheel",mouseWheelDesc:"Scroll remote (Shift + Wheel = horizontal)",mouseDoubleKey:"Double-click",mouseDoubleDesc:"Double-click on remote",keyPhysicalKey:"Physical keys",keyPhysicalDesc:"Sent directly (Tab, F-keys, etc. captured)",keyModifierKey:"Ctrl / Alt / Shift / ⌘",keyModifierDesc:"Sticky modifier — combine with next key",trackpadSwipeKey:"1 finger swipe",trackpadSwipeDesc:"Move virtual cursor",trackpadTapKey:"1 finger tap",trackpadTapDesc:"Left-click at cursor",trackpad2TapKey:"2 fingers tap",trackpad2TapDesc:"Right-click at cursor",trackpad2SwipeKey:"2 fingers swipe",trackpad2SwipeDesc:"Scroll at cursor position",trackpadPinchKey:"2 fingers pinch",trackpadPinchDesc:"Zoom canvas",trackpadScrollLockKey:"Hold + drag",trackpadScrollLockDesc:"Hold to lock scroll, drag any direction",directTapKey:"1 finger tap",directTapDesc:"Click at tap position",directLongKey:"1 finger long-press",directLongDesc:"Right-click",directDoubleKey:"1 finger double-tap",directDoubleDesc:"Double-click",directScrollKey:"2 fingers swipe",directScrollDesc:"Scroll remote",directPinchKey:"2 fingers pinch",directPinchDesc:"Zoom canvas",directPanKey:"1 finger drag (zoom>1)",directPanDesc:"Pan canvas",toolbarHandDesc:"Hold left-click (drag mode) — tap again to release",toolbarMouseDirectDesc:"Switch to Direct mode",toolbarMouseTrackpadDesc:"Switch to Trackpad (virtual cursor)",toolbarKeyboardDesc:"Native keyboard / text batch input",toolbarRectDesc:"Rectangle selection mode"},remoteControls:{enterToSend:"Tab or Ctrl+Num to switch tab",typeToSend:"Type text to send...",send:"Send",trackpadMode:"Trackpad mode",directMode:"Direct mode",bottomRow:"Bottom Row",extraPanel:"Extra Panel",exitConfirmMessage:"Are you sure you want to exit the current remote desktop session?"},connection:{retrying:"Reconnecting...",waitingApproval:"Waiting for Approval",approvalDescription:"The 9Remote host needs to approve this device before you can connect.",approvalHint:"Check the terminal on your machine.",rejectedTitle:"Device Rejected",rejectedDescription:"This device was not approved by the 9Remote host.",backToLogin:"Back to Login",failed:"Connection Failed",failedDescription:"Unable to connect after {n} attempts",attemptOf:"Attempt {n} of {total}",exit:"Exit",cancel:"Cancel",retry:"Retry now"},notifications:{claudeCode:"Claude Code",codex:"Codex",geminiCli:"Gemini CLI",openCode:"OpenCode",title:"Notifications",empty:"No notifications",needsInput:"needs input",badgeTitle:"{blocked} needs input, {done} your turn",replied:"replied",agent:"Agent"},sites:{title:"Sites",localSites:"Local Sites",selectSitePreview:"Select a site to preview",browserNewTab:"New tab",browserAddressPlaceholder:"localhost:3000 or /path",browserNotConnected:"Connect to your agent first",portPlaceholder:"port",loadingSites:"Loading Sites...",notConnected:"Not connected to the agent",noSitesFound:"No sites found",startServerHint:"Start a local dev server to see it here",siteNamePlaceholder:"Site name",saveTitle:"Save",editNameTitle:"Edit name",removeTitle:"Remove",removePortTitle:"Remove Port",removePortMessage:"Remove port {port} from saved list?",popupBlocked:"Popup blocked! Please allow popups for this site.",startProxyFailed:"Failed to start proxy session for {name}",foundCount:"{n} site{suffix} found",focusOpenedTab:"Focus opened tab",openInNewTab:"Open in new tab",goBack:"Go back",goForward:"Go forward",loadingSite:"Loading...",empty:"No active sites",emptyHint:"Run a local server to see it here",open:"Open",refresh:"Refresh",newTabTitle:"Open local site",errorSwBlocked:"This browser blocked the service worker the site view needs",errorNoBridge:"Connect to your agent first",errorNoSession:"Port {port} is no longer open — reopen the site",errorTimeout:"The site did not answer in time",errorNoReply:"No reply from the agent",errorGeneric:"The site could not be loaded"},commandNotes:{title:"Command Notes",noSavedCommands:"No saved commands",addFirstBelow:"Add your first command below",clickToCopy:"Click to copy",copiedBang:"Copied!",copy:"Copy",edit:"Edit",delete:"Delete",editCommandPlaceholder:"Edit command...",addCommandPlaceholder:"Add command...",update:"Update",add:"Add",empty:"No notes yet",emptyHint:"Save commands for quick access",add:"Add Note",edit:"Edit Note",delete:"Delete Note",deleteMessage:"Delete this note?",name:"Name",command:"Command",save:"Save",placeholderName:"e.g. Start dev server",placeholderCommand:"e.g. npm run dev"},mobileKeyboard:{pasteHere:"Paste here (Cmd+V)",enterToSend:"{shortcut} to switch tab",typeCommand:"Type command and send...",send:"Send",toggleExtraKeys:"Toggle extra keys",toggleTextInput:"Toggle text input",customizeTerminalKeys:"Customize Terminal Keys",mainBar:"Main Bar",extraPanel:"Extra Panel",fileTooLarge:"File too large (max 5MB)",readFileFailed:"Failed to read file",uploadFailed:"Failed to upload file: {error}"},terminalPane:{scrollToBottom:"Scroll to bottom",refresh:"Refresh terminal",openFolder:"Open folder",openFolderHere:"Open files here",changedFiles:"Changed files",pasteOrType:"Paste or type here",paste:"Paste",note:"Checklist",addToNote:"Add to checklist"},note:{title:"Checklist",placeholder:"No tasks yet",copy:"Copy",clear:"Clear",saved:"Saved",addSuccess:"Added to checklist",copyTodo:"Copy to-do items",multilinePlaceholder:"One task per line…",addLines:"Add each line as an item",copyItem:"Copy — taps stack rows in list order",edit:"Edit",drag:"Drag to reorder",pin:"Pin above the terminal",unpin:"Unpin",expand:"Open the full checklist",allDone:"All done",clearDone:"Clear done",sendHint:"Send to terminal with checklist",addChip:"Add chip",removeChip:"Remove chip",chipPlaceholder:"Chip text…"},pwaGuide:{copyYourKey:"Copy Your Key",copyKeyHint:"Tap the key below to copy — you'll need it to login after installing",tapToCopyApiKey:"Tap to copy API key",copiedBang:"Copied!",copy:"Copy",tapShareButton:"Tap Share Button",tapShareHint:"Tap the share button at the bottom of Safari",addToHome:"Add to Home Screen",addToHomeHint:'Scroll down and tap "Add to Home Screen"',openAppPasteKey:"Open App & Paste Key",openAppPasteKeyHint:"Open the installed app and paste your key to login",openMenu:"Open Menu",openMenuHint:"Tap the menu button (three dots) in Chrome",installApp:"Install App",installAppHint:'Tap "Install app" or "Add to Home screen"',lookInstallIcon:"Look for Install Icon",lookInstallIconHint:"Look for the install icon in the address bar",clickInstallPaste:"Click Install & Paste Key",installNow:"Install Now",installNowHint:"Install 9Remote as an app for quick access",installing:"Installing...",clickInstallPasteHint:"Click install, open the app, and paste your key to login",alternativeHint:'Alternative: Open browser menu → "Install 9Remote" or "Create shortcut"',loadingPlatform:"Loading platform detection...",iosPlatform:"iOS (iPhone/iPad)",androidPlatform:"Android",macosPlatform:"macOS",windowsPlatform:"Windows",desktopPlatform:"Desktop",alreadyInstalled:"Already Installed!",alreadyInstalledHint:"You're already using 9Remote as an installed app",installationGuide:"Installation Guide",installationSteps:"Installation Steps:"},community:{title:"Community",description:"Join the 9Remote community"},pwa:{title:"Install as App",description:"Install 9Remote on your device for the best experience",iosTitle:"iOS Safari",androidTitle:"Android Chrome",desktopTitle:"Desktop"},codespace:{title:"Codespace",name:"Name",status:"Status",running:"Running",autoStart:"Auto Start 9Remote",autoStartHint:"Start 9Remote when codespace opens",stop:"Stop Codespace",stopHint:"Stop to save usage",restartHint:"To restart, go to GitHub",unknown:"Unknown"},history:{title:"Command history",empty:"No commands yet",clearAll:"Clear all",snippets:"Snippets",history:"History",pin:"Pin as snippet",unpin:"Unpin",editSnippet:"Edit snippet",aliasLabel:"Alias",aliasHint:"Type this shortcut then send to run the command",commandLabel:"Command",aliasPlaceholder:"e.g. nrd"},voice:{dictate:"Voice input",language:"Voice language",clear:"Clear",denied:"Microphone blocked — allow mic access in your browser settings"},shortcuts:{title:"Keyboard shortcuts",menuLabel:"Keyboard shortcuts",switchTerminal:"Switch terminal",switchWorkspace:"Switch workspace",terminalActions:"New / Close terminal",togglePanels:"Toggle side panels",palette:"Search files",help:"Keyboard shortcuts",sessionPrev:"Previous terminal",sessionNext:"Next terminal",workspacePrev:"Previous workspace",workspaceNext:"Next workspace",sessionIndex:"Go to terminal 1-9",closeTerminal:"Close terminal",fitPanes:"Auto-fit panes",toggleFocus:"Toggle terminal / input focus",newTerminal:"New terminal",toggleSidebar:"Toggle sidebar",toggleRightPanel:"Toggle side panel"}}},64683:(e,t,o)=>{"use strict";o.d(t,{$o:()=>eN.A,AX:()=>em.A,Ay:()=>tt,BK:()=>eQ.A,BZ:()=>V.A,Bm:()=>j.A,Cp:()=>z.A,Do:()=>l.A,F1:()=>s.A,FE:()=>eq.A,FW:()=>eR.A,GD:()=>I.A,GO:()=>ed.A,Gr:()=>x.A,Gv:()=>eh.A,Hx:()=>et.A,Ir:()=>c.A,J4:()=>eJ.A,JG:()=>h.A,JU:()=>W.A,Jl:()=>m.A,Kq:()=>e7.A,LM:()=>en.A,Lt:()=>S.A,M6:()=>eG.A,P6:()=>Q.A,QR:()=>v.A,Qp:()=>i.A,RI:()=>r.A,TB:()=>eY.A,Ud:()=>G.A,VA:()=>eu.A,Vn:()=>ej.A,W1:()=>ec.A,WE:()=>k.A,We:()=>eZ.A,X:()=>e6.A,X_:()=>R.A,ZH:()=>N.A,ZU:()=>e1.A,Ze:()=>ex.A,Zr:()=>H.A,_O:()=>e9.A,_V:()=>Z.A,a4:()=>eg.A,aJ:()=>u.A,ak:()=>J.A,bE:()=>e2.A,bd:()=>eX.A,cC:()=>d.A,c_:()=>y.A,dJ:()=>L.A,de:()=>e4.A,dx:()=>B.A,e6:()=>eb.A,e9:()=>eK.A,eM:()=>eE.A,ek:()=>ez.A,es:()=>ek.A,f2:()=>_.A,f5:()=>D.A,gH:()=>eT.A,iU:()=>O.A,jG:()=>eP.A,jj:()=>ep.A,jl:()=>b.A,jz:()=>ev.A,kU:()=>P.A,kV:()=>Y.A,kr:()=>er.A,kt:()=>eO.A,lM:()=>e0.A,lP:()=>ef.A,m0:()=>A.A,mN:()=>q.A,nU:()=>el.A,qz:()=>$.A,rX:()=>f.A,s3:()=>ee.A,sU:()=>e_.A,sv:()=>E.A,ue:()=>eA.A,vR:()=>eC.A,vW:()=>eI.A,vd:()=>U.A,vj:()=>eU.A,vv:()=>eo.A,wB:()=>eH.A,wO:()=>e$.A,ww:()=>X.A,xv:()=>eS.A,y8:()=>ea.A,yQ:()=>g.A,yU:()=>eD.A,yd:()=>n.A,zW:()=>e5.A});var a=o(73365),r=o(87821),n=o(21878),i=o(79376),l=o(61659),s=o(6504),c=o(74739),d=o(29967),p=o(17836),u=o(67494),m=o(66687),g=o(95188),h=o(54453),y=o(34582),f=o(70453),k=o(10949),b=o(64570),A=o(31258),w=o(59907),v=o(46431),S=o(29260),C=o(88433),T=o(49553),D=o(20478),x=o(17568),P=o(87831),R=o(1916),F=o(29418),N=o(18272),I=o(10550),K=o(9271),M=o(14251),O=o(50068),E=o(98173),L=o(10194),U=o(70362),j=o(17909),W=o(59437),H=o(33109),B=o(48433),z=o(86877),$=o(34271),_=o(60919),G=o(35723),J=o(41046),q=o(64629),V=o(6534),X=o(5370),Z=o(59711),Q=o(39831),Y=o(9560),ee=o(44159),et=o(20021),eo=o(14797),ea=o(15504),er=o(93292),en=o(92165),ei=o(94304),el=o(40789),es=o(64871),ec=o(19621),ed=o(40081),ep=o(38781),eu=o(88768),em=o(68395),eg=o(88793),eh=o(25406),ey=o(10998),ef=o(64446),ek=o(12925),eb=o(93354),eA=o(73243),ew=o(89317),ev=o(12283),eS=o(1578),eC=o(90612),eT=o(43959),eD=o(76621),ex=o(59833),eP=o(67236),eR=o(97038),eF=o(72147),eN=o(68859),eI=o(93285),eK=o(20178),eM=o(65062),eO=o(87030),eE=o(67519),eL=o(457),eU=o(58450),ej=o(48088),eW=o(56023),eH=o(59311),eB=o(38177),ez=o(60659),e$=o(1838),e_=o(34969),eG=o(42685),eJ=o(99707),eq=o(6830),eV=o(20248),eX=o(11384),eZ=o(50211),eQ=o(64342),eY=o(60151),e0=o(81610),e1=o(11990),e2=o(52715),e9=o(49387),e5=o(894),e8=o(2031),e3=o(58573),e4=o(51328),e6=o(3382),e7=o(57717);let te={AlertCircle:r.A,ArrowDown:n.A,ArrowRight:i.A,ArrowUp:l.A,ArrowUpRight:s.A,Bell:c.A,Bot:d.A,Bug:p.A,Check:u.A,CheckCircle2:m.A,ChevronDown:g.A,ChevronLeft:h.A,ChevronRight:y.A,ChevronUp:f.A,ChevronsDownUp:k.A,Circle:b.A,ClipboardPaste:A.A,Command:w.A,Copy:v.A,CornerDownLeft:S.A,Crown:C.A,Delete:T.A,Download:D.A,ExternalLink:x.A,Eye:P.A,EyeOff:R.A,Facebook:F.A,File:N.A,FileCode:I.A,FileJson:K.A,FilePlus:M.A,FileText:O.A,Files:E.A,Filter:L.A,Folder:U.A,FolderOpen:j.A,FolderPlus:W.A,GitBranch:H.A,GitFork:B.A,Github:z.A,Globe:$.A,GripVertical:_.A,Hand:G.A,HardDrive:J.A,HelpCircle:q.A,History:V.A,Home:X.A,Image:Z.A,ImageOff:Q.A,KeyRound:Y.A,Keyboard:ee.A,LayoutDashboard:et.A,Link2:eo.A,ListChecks:ea.A,Loader2:er.A,Lock:en.A,LogIn:ei.A,LogOut:el.A,Maximize2:es.A,Menu:ec.A,Mic:ed.A,MicOff:ep.A,Monitor:eu.A,Moon:em.A,MoreHorizontal:eg.A,MoreVertical:eh.A,MousePointer2:ey.A,Package:ef.A,Palette:ek.A,PanelLeft:eb.A,PanelLeftClose:eA.A,PanelLeftOpen:ew.A,PanelRight:ev.A,Paperclip:eS.A,Pause:eC.A,Pencil:eT.A,Pin:eD.A,PinOff:ex.A,Play:eP.A,Plus:eR.A,Power:eF.A,PowerOff:eN.A,QrCode:eI.A,RefreshCw:eK.A,Replace:eM.A,RotateCw:eO.A,Save:eE.A,Scissors:eL.A,Search:eU.A,Send:ej.A,SendHorizontal:eW.A,Settings:eH.A,Share:eB.A,Shield:ez.A,Smartphone:e$.A,Sparkles:e_.A,Square:eG.A,SquarePen:eJ.A,Star:eq.A,StickyNote:eV.A,Sun:eX.A,Target:eZ.A,Terminal:eQ.A,Trash2:eY.A,Triangle:e0.A,Type:e1.A,Undo2:e2.A,Upload:e9.A,Users:e5.A,Volume2:e8.A,VolumeX:e3.A,Wallpaper:e4.A,X:e6.A,Zap:e7.A};function tt({name:e,size:t=20,className:o="",...r}){let n=te[e];return n?(0,a.jsx)(n,{size:t,className:o,strokeWidth:2,...r}):(console.warn(`Icon "${e}" not found in the icon registry`),null)}},78762:(e,t,o)=>{"use strict";o.d(t,{s:()=>u});var a=o(1521),r=o(2074),n=o(52345),i=o(58628);let l=n.dI.map(e=>e.code),s=new Map,c=(e,t)=>{if(!l.includes(e)||e===n.Xn||d.getState().dicts[e]||s.has(e))return;let a=o(49262)(`./${e}.js`).then(o=>{s.delete(e);let a=o.default;return t(t=>({dicts:{...t.dicts,[e]:a}})),a}).catch(()=>{s.delete(e)});s.set(e,a)},d=(0,r.v)(e=>({locale:n.Xn,dicts:{[n.Xn]:i.default},hydrated:!1,hydrate:()=>{let t=function(){try{let e=window.localStorage.getItem(n.zl);if(e&&l.includes(e))return e}catch{}return n.Xn}();c(t,e),e({locale:t,hydrated:!0})},setLocale:t=>{if(l.includes(t)){try{window.localStorage.setItem(n.zl,t)}catch{}c(t,e),e({locale:t})}}}));function p(e,t){if(e)return t.split(".").reduce((e,t)=>null==e?e:e[t],e)}function u(){let{locale:e,dicts:t,hydrated:o,hydrate:r,setLocale:i}=d();(0,a.useEffect)(()=>{o||r()},[o,r]);let l=t[e]||t[n.Xn],s=t[n.Xn];return{t:(0,a.useMemo)(()=>(e,t)=>{var o;return o=p(l,e)??p(s,e)??e,"string"==typeof o&&t?o.replace(/\{(\w+)\}/g,(e,o)=>null!=t[o]?t[o]:`{${o}}`):o},[l,s]),locale:e,setLocale:i,hydrated:o}}},80186:(e,t,o)=>{"use strict";o.d(t,{A:()=>r});var a=o(73365);function r({children:e,variant:t="primary",size:o="md",disabled:n=!1,loading:i=!1,onClick:l,className:s="",...c}){let d=`font-semibold rounded-brand transition-all duration-150 ease-out transform active:scale-[0.97] ${{primary:"bg-brand-500 hover:bg-brand-600 disabled:bg-surface-3 disabled:text-text-muted text-white shadow-sm",secondary:"bg-surface-2 hover:bg-surface-3 disabled:bg-surface disabled:text-text-muted text-text",danger:"bg-red-500 hover:bg-red-600 disabled:bg-surface-3 disabled:text-text-muted text-white",success:"bg-green-600 hover:bg-green-700 disabled:bg-surface-3 disabled:text-text-muted text-white"}[t]} ${{sm:"px-3 py-1.5 text-sm",md:"px-4 py-2 text-base",lg:"px-6 py-3 text-lg"}[o]} ${n||i?"cursor-not-allowed":""} ${s}`;return(0,a.jsx)("button",{onClick:l,disabled:n||i,className:d,...c,children:i?(0,a.jsxs)("span",{className:"flex items-center justify-center gap-2",children:[(0,a.jsx)("span",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-white"}),e]}):e})}},86129:(e,t,o)=>{"use strict";o.d(t,{AC:()=>d,An:()=>c,BF:()=>m,El:()=>w,HE:()=>D,HJ:()=>p,J2:()=>b,Jd:()=>S,KF:()=>s,ML:()=>k,Of:()=>x,QS:()=>u,QZ:()=>n,Rh:()=>T,Tr:()=>h,UT:()=>g,ZN:()=>l,aS:()=>v,bg:()=>f,cx:()=>i,dT:()=>r,gI:()=>y,j3:()=>P,l_:()=>a,o_:()=>C,qM:()=>A});let a={control:"control",binary:"binary",file:"file"},r=65536,n={ackTimeoutMs:5e3,maxAttempts:3,backoffMs:[500,1500,3e3],probeBackoffMs:[3e4,6e4,12e4,3e5],classifyAfterProbes:3},i={urls:["stun:stun.l.google.com:19302","stun:stun1.l.google.com:19302"],timeoutMs:2500,minIntervalMs:15e3},l=500,s=1e4,c=25e3,d=4e3,p=15e3,u=1e3,m=12e3,g=2e3,h=1e4,y={enabled:!0,pingMs:25e3},f={pending:"pending-approval",rejected:"device-rejected"},k={mismatch:"mismatch",sealUnreadable:"seal-unreadable",timeout:"proof-timeout"},b={pending:"pending",approved:"approved",rejected:"rejected",reconnect:"reconnect"},A=8,w="9remote_pending_save",v="9remote_wants_save",S="9remote_login_error",C={debounceMs:500},T=3e4,D={chunkSize:65528,windowSize:64,dcBufferThreshold:8388608,maxUploadSize:0x3200000,maxDownloadSize:0xc800000,maxStreamMediaSize:524288e3},x={idle:"idle",connecting:"connecting",open:"open",degraded:"degraded",closed:"closed"},P={clientApp:{enabled:["ws","rtc"],parallel:!0,channels:{control:{strategy:"priority",prefer:"rtc"},binary:{strategy:"priority",prefer:"rtc"},file:{strategy:"priority",prefer:"rtc"}},rtc:{enableTurn:!0,dcControl:{ordered:!0}}},remoteDesktop:{enabled:["ws","rtc"],parallel:!0,channels:{control:{strategy:"priority",prefer:"rtc"},binary:{strategy:"priority",prefer:"rtc"},file:{strategy:"priority",prefer:"rtc"}},rtc:{enableTurn:!0,dcControl:{ordered:!0}}}}},86251:(e,t,o)=>{"use strict";o.d(t,{O:()=>p,Y:()=>c});let a=new Uint8Array([48,42,48,5,6,3,43,101,110,3,33,0]);function r(e){let t=atob(e),o=new Uint8Array(t.length);for(let e=0;e<t.length;e++)o[e]=t.charCodeAt(e);return o}function n(e){let t="",o=new Uint8Array(e);for(let e=0;e<o.length;e++)t+=String.fromCharCode(o[e]);return btoa(t)}function i(...e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),o=0;for(let a of e)t.set(a,o),o+=a.length;return t}async function l(e){let t;try{t=r(String(e))}catch{return null}if(32!==t.length)return null;try{return await crypto.subtle.importKey("spki",i(a,t),{name:"X25519"},!0,[])}catch{return null}}async function s(e,t,o,a){let r=await crypto.subtle.deriveBits({name:"X25519",public:t},e,256),n=await crypto.subtle.importKey("raw",r,"HKDF",!1,["deriveKey"]);return await crypto.subtle.deriveKey({name:"HKDF",hash:"SHA-256",salt:i(o,a),info:new TextEncoder().encode("9remote-tail-seal-v1")},n,{name:"AES-GCM",length:256},!1,["encrypt"])}async function c(e,t){if("string"!=typeof e||!e||"string"!=typeof t||!t)return null;let o=await l(t);if(!o)return null;try{let t=await crypto.subtle.generateKey({name:"X25519"},!0,["deriveBits"]),a=new Uint8Array(await crypto.subtle.exportKey("spki",t.publicKey)).slice(-32),r=new Uint8Array(await crypto.subtle.exportKey("spki",o)).slice(-32),i=await s(t.privateKey,o,a,r),l=crypto.getRandomValues(new Uint8Array(12)),c=await crypto.subtle.encrypt({name:"AES-GCM",iv:l},i,new TextEncoder().encode(e));return{epk:n(a),iv:n(l),ct:n(c)}}catch{return null}}let d="ABCDEFGHJKLMNPQRSTUVWXYZ23456789";async function p(e,t){if("u"<typeof crypto||!crypto.subtle)return null;let o=[e,t].map(e=>{let t;try{t=r(String(e||""))}catch{t=new Uint8Array(0)}let o=new Uint8Array(2);return new DataView(o.buffer).setUint16(0,t.length),i(o,t)}),a=new Uint8Array(await crypto.subtle.digest("SHA-256",i(...o)));return d[a[0]%32]+d[a[1]%32]}},90076:(e,t,o)=>{"use strict";o.d(t,{Go:()=>i,O:()=>a,Sn:()=>l,_8:()=>r,cC:()=>p,dM:()=>c,jP:()=>s,lE:()=>n,qn:()=>d});let a="https://9remote.cc",r=2208,n=`http://127.0.0.1:${r}`,i=`${n}/api/ui/state`,l={connect:`${a}/api/connect`,tempKeyCreate:`${a}/api/temp-key/create`,tempKeyVerify:`${a}/api/temp-key/verify`,tempKeyRemove:`${a}/api/temp-key/remove`,localSites:"/api/local-sites",turnCredentials:`${a}/api/webrtc/turn-credentials`},s=5,c=2e3,d=5e3,p=1e4},90084:(e,t,o)=>{"use strict";o.d(t,{$4:()=>d,D5:()=>b,HY:()=>m,I8:()=>y,IU:()=>A,LG:()=>p,cH:()=>f,e1:()=>g,lu:()=>w,lz:()=>c,pV:()=>v,t8:()=>u});var a=o(86129);o(52159);var r=o(86251);let n="9remote_device_trust",i="9remote_pending_fp2";function l(){try{return JSON.parse(localStorage.getItem(n)||"{}")}catch{return{}}}function s(e){localStorage.setItem(n,JSON.stringify(e))}function c(e){return l()[e]||null}function d(e){if(!e)return e;let t=c(e)?.tail;return t?`${e}-${t}`:e}function p(e,t){let o=l();o[e]={...o[e]||{},...t},s(o)}async function u(e,t){return e&&t?await (0,r.O)(e,t):null}function m(){let e=sessionStorage.getItem(i);return sessionStorage.removeItem(i),e?JSON.parse(e).fp2??null:null}function g(){try{let e=sessionStorage.getItem(i);if(!e)return null;let{fp2:t,exp:o}=JSON.parse(e);if(!t||Date.now()>o)return sessionStorage.removeItem(i),null;return t}catch{return null}}let h="9remote_api_keys";function y(){try{let e=sessionStorage.getItem(a.El);if(!e)return;sessionStorage.removeItem(a.El);let t=JSON.parse(localStorage.getItem(h)||"[]");if(t.some(t=>{try{return atob(t.key)===e}catch{return!1}}))return;t.push({id:String(Date.now()),key:btoa(e),label:`Key ${t.length+1}`,createdAt:new Date().toISOString(),lastLoginDate:new Date().toISOString()}),localStorage.setItem(h,JSON.stringify(t))}catch{}}function f(e){if(e)try{let t=l();delete t[e],s(t)}catch{}}function k(e){let t=atob(e),o=new Uint8Array(t.length);for(let e=0;e<t.length;e++)o[e]=t.charCodeAt(e);return o}async function b(e,t,o){try{let a=await crypto.subtle.importKey("raw",k(e),{name:"Ed25519"},!1,["verify"]);return await crypto.subtle.verify("Ed25519",a,k(o),new TextEncoder().encode(t))}catch{return null}}let A=["device:keyIssued","device:tailRejected"];function w(e,t,o){let r=e._auth?.apiKey;if(!r)return!1;if("device:keyIssued"===t){let t=o?.tail;return!t||(p(r,{tail:t}),e._tailProofSent=e._adapters.get("rtc")?._peerEpoch??0,sessionStorage.getItem(a.aS)&&(sessionStorage.removeItem(a.aS),sessionStorage.setItem(a.El,`${r}-${t}`),y()),!0)}return"device:tailRejected"===t&&(o?.reason===a.ML.sealUnreadable&&p(r,{hostSealKey:null}),!0)}async function v(e){let t=e._auth?.apiKey;if(!t)return;let r=e._adapters.get("rtc");if(!r?.ready)return;let n=r._peerEpoch??0;if(e._tailProofSent===n)return;let{freshAuth:i}=await o.e(3977).then(o.bind(o,63977)),l=await i({apiKey:t,tempKey:e._auth?.tempKey||null},"rtc");(l.keyTail||l.keyTailSealed)&&r.send(a.l_.control,{event:"device:tailProof",args:[{keyTail:l.keyTail,keyTailSealed:l.keyTailSealed,tempKey:e._auth?.tempKey||null}]})&&(e._tailProofSent=n)}},97711:(e,t,o)=>{"use strict";o.d(t,{F:()=>i});var a=o(1521);let r="9remote_auth";function n(e){"u">typeof document&&(document.cookie=`${r}=${e}; path=/; max-age=86400; SameSite=Lax`)}function i(){let e=(0,a.useCallback)(()=>{let e,t,o,a,r;try{e=sessionStorage.getItem("apiKey"),t=sessionStorage.getItem("tunnelUrl"),o=sessionStorage.getItem("mode"),a=sessionStorage.getItem("tempKey"),r=sessionStorage.getItem("localIp")}catch{return null}return e?(n(e),{apiKey:e,tunnelUrl:t,mode:o,tempKey:a,localIp:r}):null},[]);return{getAuth:e,setAuth:(0,a.useCallback)(e=>{try{sessionStorage.setItem("apiKey",e.apiKey),sessionStorage.setItem("tunnelUrl",e.tunnelUrl),sessionStorage.setItem("mode",e.mode||"remote"),e.tempKey?sessionStorage.setItem("tempKey",e.tempKey):sessionStorage.removeItem("tempKey"),e.localIp?sessionStorage.setItem("localIp",e.localIp):sessionStorage.removeItem("localIp")}catch{}n(e.apiKey)},[]),clearAuth:(0,a.useCallback)(()=>{try{sessionStorage.clear()}catch{}"u">typeof document&&(document.cookie=`${r}=; path=/; max-age=0`)},[])}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3977],{63977:(e,l,t)=>{t.d(l,{freshAuth:()=>u});var a=t(90084),i=t(86251);async function u(e={},l){let t={...e,connectionMode:l},y=(0,a.lz)(e.apiKey),n=e.tempKey?(0,a.lz)(e.tempKey):null,r=y?.tail?y:n?.tail?n:y||n,s=r?.tail;if(delete t.keyTail,delete t.keyTailSealed,!s)return t;if(r?.hostSealKey){let e=await (0,i.Y)(s,r.hostSealKey);if(e)return t.keyTailSealed=e,t}return t.keyTail=s,t}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4090],{64090:(t,e,i)=>{i.d(e,{diagram:()=>I});var a=i(84187),n=i(14561),s=i(68567),r=i(10312),l=function(){var t=(0,s.K)(function(t,e,i,a){for(i=i||{},a=t.length;a--;i[t[a]]=e);return i},"o"),e=[1,3],i=[1,4],a=[1,5],n=[1,6],r=[1,7],l=[1,4,5,10,12,13,14,15,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],o=[1,4,5,10,12,13,14,15,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],h=[55,56,57],c=[2,36],d=[1,37],u=[1,36],x=[1,38],g=[1,35],f=[1,43],p=[1,41],y=[1,45],T=[1,14],m=[1,23],_=[1,18],q=[1,19],A=[1,20],b=[1,21],k=[1,22],S=[1,24],F=[1,25],P=[1,26],C=[1,27],v=[1,28],L=[1,29],I=[1,32],E=[1,33],D=[1,34],z=[1,39],K=[1,40],U=[1,42],w=[1,44],N=[1,63],R=[1,62],B=[4,5,8,10,12,13,14,15,18,44,47,49,55,56,57,63,64,65,66,67],$=[1,66],W=[1,67],O=[1,68],Q=[1,69],X=[1,70],M=[1,71],Y=[1,72],H=[1,73],j=[1,74],G=[1,75],Z=[1,76],V=[1,77],J=[4,5,6,7,8,9,10,11,12,13,14,15,18],tt=[1,91],te=[1,92],ti=[1,93],ta=[1,100],tn=[1,94],ts=[1,97],tr=[1,95],tl=[1,96],to=[1,98],th=[1,99],tc=[1,103],td=[10,55,56,57],tu=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],tx={trace:(0,s.K)(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:(0,s.K)(function(t,e,i,a,n,s,r){var l=s.length-1;switch(n){case 23:case 68:this.$=s[l];break;case 24:case 69:this.$=s[l-1]+""+s[l];break;case 26:this.$=s[l-1]+s[l];break;case 27:this.$=[s[l].trim()];break;case 28:s[l-2].push(s[l].trim()),this.$=s[l-2];break;case 29:this.$=s[l-4],a.addClass(s[l-2],s[l]);break;case 37:this.$=[];break;case 42:this.$=s[l].trim(),a.setDiagramTitle(this.$);break;case 43:this.$=s[l].trim(),a.setAccTitle(this.$);break;case 44:case 45:this.$=s[l].trim(),a.setAccDescription(this.$);break;case 46:a.addSection(s[l].substr(8)),this.$=s[l].substr(8);break;case 47:a.addPoint(s[l-3],"",s[l-1],s[l],[]);break;case 48:a.addPoint(s[l-4],s[l-3],s[l-1],s[l],[]);break;case 49:a.addPoint(s[l-4],"",s[l-2],s[l-1],s[l]);break;case 50:a.addPoint(s[l-5],s[l-4],s[l-2],s[l-1],s[l]);break;case 51:a.setXAxisLeftText(s[l-2]),a.setXAxisRightText(s[l]);break;case 52:s[l-1].text+=" ⟶ ",a.setXAxisLeftText(s[l-1]);break;case 53:a.setXAxisLeftText(s[l]);break;case 54:a.setYAxisBottomText(s[l-2]),a.setYAxisTopText(s[l]);break;case 55:s[l-1].text+=" ⟶ ",a.setYAxisBottomText(s[l-1]);break;case 56:a.setYAxisBottomText(s[l]);break;case 57:a.setQuadrant1Text(s[l]);break;case 58:a.setQuadrant2Text(s[l]);break;case 59:a.setQuadrant3Text(s[l]);break;case 60:a.setQuadrant4Text(s[l]);break;case 64:case 66:this.$={text:s[l],type:"text"};break;case 65:this.$={text:s[l-1].text+""+s[l],type:s[l-1].type};break;case 67:this.$={text:s[l],type:"markdown"}}},"anonymous"),table:[{18:e,26:1,27:2,28:i,55:a,56:n,57:r},{1:[3]},{18:e,26:8,27:2,28:i,55:a,56:n,57:r},{18:e,26:9,27:2,28:i,55:a,56:n,57:r},t(l,[2,33],{29:10}),t(o,[2,61]),t(o,[2,62]),t(o,[2,63]),{1:[2,30]},{1:[2,31]},t(h,c,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:u,10:x,12:g,13:f,14:p,15:y,18:T,25:m,35:_,37:q,39:A,41:b,42:k,48:S,50:F,51:P,52:C,53:v,54:L,60:I,61:E,63:D,64:z,65:K,66:U,67:w}),t(l,[2,34]),{27:46,55:a,56:n,57:r},t(h,[2,37]),t(h,c,{24:13,32:15,33:16,34:17,43:30,58:31,31:47,4:d,5:u,10:x,12:g,13:f,14:p,15:y,18:T,25:m,35:_,37:q,39:A,41:b,42:k,48:S,50:F,51:P,52:C,53:v,54:L,60:I,61:E,63:D,64:z,65:K,66:U,67:w}),t(h,[2,39]),t(h,[2,40]),t(h,[2,41]),{36:[1,48]},{38:[1,49]},{40:[1,50]},t(h,[2,45]),t(h,[2,46]),{18:[1,51]},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:52,58:31,60:I,61:E,63:D,64:z,65:K,66:U,67:w},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:53,58:31,60:I,61:E,63:D,64:z,65:K,66:U,67:w},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:54,58:31,60:I,61:E,63:D,64:z,65:K,66:U,67:w},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:55,58:31,60:I,61:E,63:D,64:z,65:K,66:U,67:w},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:56,58:31,60:I,61:E,63:D,64:z,65:K,66:U,67:w},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:57,58:31,60:I,61:E,63:D,64:z,65:K,66:U,67:w},{4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,44:[1,58],47:[1,59],58:61,59:60,63:D,64:z,65:K,66:U,67:w},t(B,[2,64]),t(B,[2,66]),t(B,[2,67]),t(B,[2,70]),t(B,[2,71]),t(B,[2,72]),t(B,[2,73]),t(B,[2,74]),t(B,[2,75]),t(B,[2,76]),t(B,[2,77]),t(B,[2,78]),t(B,[2,79]),t(B,[2,80]),t(B,[2,81]),t(l,[2,35]),t(h,[2,38]),t(h,[2,42]),t(h,[2,43]),t(h,[2,44]),{3:65,4:$,5:W,6:O,7:Q,8:X,9:M,10:Y,11:H,12:j,13:G,14:Z,15:V,21:64},t(h,[2,53],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,49:[1,78],63:D,64:z,65:K,66:U,67:w}),t(h,[2,56],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,49:[1,79],63:D,64:z,65:K,66:U,67:w}),t(h,[2,57],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:K,66:U,67:w}),t(h,[2,58],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:K,66:U,67:w}),t(h,[2,59],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:K,66:U,67:w}),t(h,[2,60],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:K,66:U,67:w}),{45:[1,80]},{44:[1,81]},t(B,[2,65]),t(B,[2,82]),t(B,[2,83]),t(B,[2,84]),{3:83,4:$,5:W,6:O,7:Q,8:X,9:M,10:Y,11:H,12:j,13:G,14:Z,15:V,18:[1,82]},t(J,[2,23]),t(J,[2,1]),t(J,[2,2]),t(J,[2,3]),t(J,[2,4]),t(J,[2,5]),t(J,[2,6]),t(J,[2,7]),t(J,[2,8]),t(J,[2,9]),t(J,[2,10]),t(J,[2,11]),t(J,[2,12]),t(h,[2,52],{58:31,43:84,4:d,5:u,10:x,12:g,13:f,14:p,15:y,60:I,61:E,63:D,64:z,65:K,66:U,67:w}),t(h,[2,55],{58:31,43:85,4:d,5:u,10:x,12:g,13:f,14:p,15:y,60:I,61:E,63:D,64:z,65:K,66:U,67:w}),{46:[1,86]},{45:[1,87]},{4:tt,5:te,6:ti,8:ta,11:tn,13:ts,16:90,17:tr,18:tl,19:to,20:th,22:89,23:88},t(J,[2,24]),t(h,[2,51],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:K,66:U,67:w}),t(h,[2,54],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:K,66:U,67:w}),t(h,[2,47],{22:89,16:90,23:101,4:tt,5:te,6:ti,8:ta,11:tn,13:ts,17:tr,18:tl,19:to,20:th}),{46:[1,102]},t(h,[2,29],{10:tc}),t(td,[2,27],{16:104,4:tt,5:te,6:ti,8:ta,11:tn,13:ts,17:tr,18:tl,19:to,20:th}),t(tu,[2,25]),t(tu,[2,13]),t(tu,[2,14]),t(tu,[2,15]),t(tu,[2,16]),t(tu,[2,17]),t(tu,[2,18]),t(tu,[2,19]),t(tu,[2,20]),t(tu,[2,21]),t(tu,[2,22]),t(h,[2,49],{10:tc}),t(h,[2,48],{22:89,16:90,23:105,4:tt,5:te,6:ti,8:ta,11:tn,13:ts,17:tr,18:tl,19:to,20:th}),{4:tt,5:te,6:ti,8:ta,11:tn,13:ts,16:90,17:tr,18:tl,19:to,20:th,22:106},t(tu,[2,26]),t(h,[2,50],{10:tc}),t(td,[2,28],{16:104,4:tt,5:te,6:ti,8:ta,11:tn,13:ts,17:tr,18:tl,19:to,20:th})],defaultActions:{8:[2,30],9:[2,31]},parseError:(0,s.K)(function(t,e){if(e.recoverable)this.trace(t);else{var i=Error(t);throw i.hash=e,i}},"parseError"),parse:(0,s.K)(function(t){var e=this,i=[0],a=[],n=[null],r=[],l=this.table,o="",h=0,c=0,d=0,u=r.slice.call(arguments,1),x=Object.create(this.lexer),g={};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(g[f]=this.yy[f]);x.setInput(t,g),g.lexer=x,g.parser=this,void 0===x.yylloc&&(x.yylloc={});var p=x.yylloc;r.push(p);var y=x.options&&x.options.ranges;function T(){var t;return"number"!=typeof(t=a.pop()||x.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.parseError?this.parseError=g.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K)(function(t){i.length=i.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,s.K)(T,"lex");for(var m,_,q,A,b,k,S,F,P,C={};;){if(q=i[i.length-1],this.defaultActions[q]?A=this.defaultActions[q]:(null==m&&(m=T()),A=l[q]&&l[q][m]),void 0===A||!A.length||!A[0]){var v="";for(k in P=[],l[q])this.terminals_[k]&&k>2&&P.push("'"+this.terminals_[k]+"'");v=x.showPosition?"Parse error on line "+(h+1)+":\n"+x.showPosition()+"\nExpecting "+P.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(v,{text:x.match,token:this.terminals_[m]||m,line:x.yylineno,loc:p,expected:P})}if(A[0]instanceof Array&&A.length>1)throw Error("Parse Error: multiple actions possible at state: "+q+", token: "+m);switch(A[0]){case 1:i.push(m),n.push(x.yytext),r.push(x.yylloc),i.push(A[1]),m=null,_?(m=_,_=null):(c=x.yyleng,o=x.yytext,h=x.yylineno,p=x.yylloc,d>0&&d--);break;case 2:if(S=this.productions_[A[1]][1],C.$=n[n.length-S],C._$={first_line:r[r.length-(S||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(S||1)].first_column,last_column:r[r.length-1].last_column},y&&(C._$.range=[r[r.length-(S||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(C,[o,c,h,g,A[1],n,r].concat(u))))return b;S&&(i=i.slice(0,-1*S*2),n=n.slice(0,-1*S),r=r.slice(0,-1*S)),i.push(this.productions_[A[1]][0]),n.push(C.$),r.push(C._$),F=l[i[i.length-2]][i[i.length-1]],i.push(F);break;case 3:return!0}}return!0},"parse")};function tg(){this.yy={}}return tx.lexer={EOF:1,parseError:(0,s.K)(function(t,e){if(this.yy.parser)this.yy.parser.parseError(t,e);else throw Error(t)},"parseError"),setInput:(0,s.K)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,s.K)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,s.K)(function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===a.length?this.yylloc.first_column:0)+a[a.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,s.K)(function(){return this._more=!0,this},"more"),reject:(0,s.K)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,s.K)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,s.K)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,s.K)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,s.K)(function(){var t=this.pastInput(),e=Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,s.K)(function(t,e){var i,a,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack)for(var s in n)this[s]=n[s];return!1},"test_match"),next:(0,s.K)(function(){if(this.done)return this.EOF;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var t,e,i,a,n=this._currentRules(),s=0;s<n.length;s++)if((i=this._input.match(this.rules[n[s]]))&&(!e||i[0].length>e[0].length)){if(e=i,a=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,n[s])))return t;if(!this._backtrack)return!1;e=!1;continue}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,s.K)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,s.K)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,s.K)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,s.K)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,s.K)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,s.K)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,s.K)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,s.K)(function(t,e,i,a){switch(i){case 0:case 1:case 3:break;case 2:return 55;case 4:return this.begin("title"),35;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),37;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),39;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 23:case 25:case 31:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 24:this.begin("string");break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;case 29:return this.begin("point_start"),44;case 30:return this.begin("point_x"),45;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;case 34:return 28;case 35:return 4;case 36:return 15;case 37:return 11;case 38:return 64;case 39:return 10;case 40:case 41:return 65;case 42:return 14;case 43:return 13;case 44:return 67;case 45:return 66;case 46:return 12;case 47:return 8;case 48:return 5;case 49:return 18;case 50:return 56;case 51:return 63;case 52:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?:[^\x00-\x7F]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}},(0,s.K)(tg,"Parser"),tg.prototype=tx,tx.Parser=tg,new tg}();l.parser=l;var o=(0,a.P$)(),h=class{constructor(){this.classes=new Map,this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{(0,s.K)(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:a.UI.quadrantChart?.chartWidth||500,chartWidth:a.UI.quadrantChart?.chartHeight||500,titlePadding:a.UI.quadrantChart?.titlePadding||10,titleFontSize:a.UI.quadrantChart?.titleFontSize||20,quadrantPadding:a.UI.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:a.UI.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:a.UI.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:a.UI.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:a.UI.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:a.UI.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:a.UI.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:a.UI.quadrantChart?.pointTextPadding||5,pointLabelFontSize:a.UI.quadrantChart?.pointLabelFontSize||12,pointRadius:a.UI.quadrantChart?.pointRadius||5,xAxisPosition:a.UI.quadrantChart?.xAxisPosition||"top",yAxisPosition:a.UI.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:o.quadrant1Fill,quadrant2Fill:o.quadrant2Fill,quadrant3Fill:o.quadrant3Fill,quadrant4Fill:o.quadrant4Fill,quadrant1TextFill:o.quadrant1TextFill,quadrant2TextFill:o.quadrant2TextFill,quadrant3TextFill:o.quadrant3TextFill,quadrant4TextFill:o.quadrant4TextFill,quadrantPointFill:o.quadrantPointFill,quadrantPointTextFill:o.quadrantPointTextFill,quadrantXAxisTextFill:o.quadrantXAxisTextFill,quadrantYAxisTextFill:o.quadrantYAxisTextFill,quadrantTitleFill:o.quadrantTitleFill,quadrantInternalBorderStrokeFill:o.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:o.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,n.R.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,e){this.classes.set(t,e)}setConfig(t){n.R.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){n.R.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,i,a){let n=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,s={top:"top"===t&&e?n:0,bottom:"bottom"===t&&e?n:0},r=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,l={left:"left"===this.config.yAxisPosition&&i?r:0,right:"right"===this.config.yAxisPosition&&i?r:0},o=this.config.titleFontSize+2*this.config.titlePadding,h={top:a?o:0},c=this.config.quadrantPadding+l.left,d=this.config.quadrantPadding+s.top+h.top,u=this.config.chartWidth-2*this.config.quadrantPadding-l.left-l.right,x=this.config.chartHeight-2*this.config.quadrantPadding-s.top-s.bottom-h.top;return{xAxisSpace:s,yAxisSpace:l,titleSpace:h,quadrantSpace:{quadrantLeft:c,quadrantTop:d,quadrantWidth:u,quadrantHalfWidth:u/2,quadrantHeight:x,quadrantHalfHeight:x/2}}}getAxisLabels(t,e,i,a){let{quadrantSpace:n,titleSpace:s}=a,{quadrantHalfHeight:r,quadrantHeight:l,quadrantLeft:o,quadrantHalfWidth:h,quadrantTop:c,quadrantWidth:d}=n,u=!!this.data.xAxisRightText,x=!!this.data.yAxisTopText,g=[];return this.data.xAxisLeftText&&e&&g.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:o+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+l+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&g.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:o+h+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+l+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&i&&g.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+o+d+this.config.quadrantPadding,y:c+l-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&i&&g.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+o+d+this.config.quadrantPadding,y:c+r-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),g}getQuadrants(t){let{quadrantSpace:e}=t,{quadrantHalfHeight:i,quadrantLeft:a,quadrantHalfWidth:n,quadrantTop:s}=e,r=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s,width:n,height:i,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s,width:n,height:i,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant4Fill}];for(let t of r)t.text.x=t.x+t.width/2,0===this.data.points.length?(t.text.y=t.y+t.height/2,t.text.horizontalPos="middle"):(t.text.y=t.y+this.config.quadrantTextTopPadding,t.text.horizontalPos="top");return r}getQuadrantPoints(t){let{quadrantSpace:e}=t,{quadrantHeight:i,quadrantLeft:a,quadrantTop:n,quadrantWidth:s}=e,l=(0,r.m4Y)().domain([0,1]).range([a,s+a]),o=(0,r.m4Y)().domain([0,1]).range([i+n,n]);return this.data.points.map(t=>{let e=this.classes.get(t.className);return e&&(t={...e,...t}),{x:l(t.x),y:o(t.y),fill:t.color??this.themeConfig.quadrantPointFill,radius:t.radius??this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:l(t.x),y:o(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:t.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:t.strokeWidth??"0px"}})}getBorders(t){let e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:i}=t,{quadrantHalfHeight:a,quadrantHeight:n,quadrantLeft:s,quadrantHalfWidth:r,quadrantTop:l,quadrantWidth:o}=i;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:l,x2:s+o+e,y2:l},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+o,y1:l+e,x2:s+o,y2:l+n-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:l+n,x2:s+o+e,y2:l+n},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:l+e,x2:s,y2:l+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:l+e,x2:s+r,y2:l+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+e,y1:l+a,x2:s+o-e,y2:l+a}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let t=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),e=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),i=this.config.showTitle&&!!this.data.titleText,a=this.data.points.length>0?"bottom":this.config.xAxisPosition,n=this.calculateSpace(a,t,e,i);return{points:this.getQuadrantPoints(n),quadrants:this.getQuadrants(n),axisLabels:this.getAxisLabels(a,t,e,n),borderLines:this.getBorders(n),title:this.getTitle(i)}}},c=class extends Error{static{(0,s.K)(this,"InvalidStyleError")}constructor(t,e,i){super(`value for ${t} ${e} is invalid, please use a valid ${i}`),this.name="InvalidStyleError"}};function d(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function u(t){return!/^\d+$/.test(t)}function x(t){return!/^\d+px$/.test(t)}function g(t){return(0,a.jZ)(t.trim(),(0,a.D7)())}(0,s.K)(d,"validateHexCode"),(0,s.K)(u,"validateNumber"),(0,s.K)(x,"validateSizeInPixels"),(0,s.K)(g,"textSanitizer");var f=new h;function p(t){f.setData({quadrant1Text:g(t.text)})}function y(t){f.setData({quadrant2Text:g(t.text)})}function T(t){f.setData({quadrant3Text:g(t.text)})}function m(t){f.setData({quadrant4Text:g(t.text)})}function _(t){f.setData({xAxisLeftText:g(t.text)})}function q(t){f.setData({xAxisRightText:g(t.text)})}function A(t){f.setData({yAxisTopText:g(t.text)})}function b(t){f.setData({yAxisBottomText:g(t.text)})}function k(t){let e={};for(let i of t){let[t,a]=i.trim().split(/\s*:\s*/);if("radius"===t){if(u(a))throw new c(t,a,"number");e.radius=parseInt(a)}else if("color"===t){if(d(a))throw new c(t,a,"hex code");e.color=a}else if("stroke-color"===t){if(d(a))throw new c(t,a,"hex code");e.strokeColor=a}else if("stroke-width"===t){if(x(a))throw new c(t,a,"number of pixels (eg. 10px)");e.strokeWidth=a}else throw Error(`style named ${t} is not supported.`)}return e}function S(t,e,i,a,n){let s=k(n);f.addPoints([{x:i,y:a,text:g(t.text),className:e,...s}])}function F(t,e){f.addClass(t,k(e))}function P(t){f.setConfig({chartWidth:t})}function C(t){f.setConfig({chartHeight:t})}function v(){let{themeVariables:t,quadrantChart:e}=(0,a.D7)();return e&&f.setConfig(e),f.setThemeConfig({quadrant1Fill:t.quadrant1Fill,quadrant2Fill:t.quadrant2Fill,quadrant3Fill:t.quadrant3Fill,quadrant4Fill:t.quadrant4Fill,quadrant1TextFill:t.quadrant1TextFill,quadrant2TextFill:t.quadrant2TextFill,quadrant3TextFill:t.quadrant3TextFill,quadrant4TextFill:t.quadrant4TextFill,quadrantPointFill:t.quadrantPointFill,quadrantPointTextFill:t.quadrantPointTextFill,quadrantXAxisTextFill:t.quadrantXAxisTextFill,quadrantYAxisTextFill:t.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:t.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:t.quadrantInternalBorderStrokeFill,quadrantTitleFill:t.quadrantTitleFill}),f.setData({titleText:(0,a.ab)()}),f.build()}(0,s.K)(p,"setQuadrant1Text"),(0,s.K)(y,"setQuadrant2Text"),(0,s.K)(T,"setQuadrant3Text"),(0,s.K)(m,"setQuadrant4Text"),(0,s.K)(_,"setXAxisLeftText"),(0,s.K)(q,"setXAxisRightText"),(0,s.K)(A,"setYAxisTopText"),(0,s.K)(b,"setYAxisBottomText"),(0,s.K)(k,"parseStyles"),(0,s.K)(S,"addPoint"),(0,s.K)(F,"addClass"),(0,s.K)(P,"setWidth"),(0,s.K)(C,"setHeight"),(0,s.K)(v,"getQuadrantData");var L={setWidth:P,setHeight:C,setQuadrant1Text:p,setQuadrant2Text:y,setQuadrant3Text:T,setQuadrant4Text:m,setXAxisLeftText:_,setXAxisRightText:q,setYAxisTopText:A,setYAxisBottomText:b,parseStyles:k,addPoint:S,addClass:F,getQuadrantData:v,clear:(0,s.K)(function(){f.clear(),(0,a.IU)()},"clear"),setAccTitle:a.SV,getAccTitle:a.iN,setDiagramTitle:a.ke,getDiagramTitle:a.ab,getAccDescription:a.m7,setAccDescription:a.EI},I={parser:l,db:L,renderer:{draw:(0,s.K)((t,e,i,l)=>{let o;function h(t){return"top"===t?"hanging":"middle"}function c(t){return"left"===t?"start":"middle"}function d(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,s.K)(h,"getDominantBaseLine"),(0,s.K)(c,"getTextAnchor"),(0,s.K)(d,"getTransformation");let u=(0,a.D7)();n.R.debug("Rendering quadrant chart\n"+t);let x=u.securityLevel;"sandbox"===x&&(o=(0,r.Ltv)("#i"+e));let g=("sandbox"===x?(0,r.Ltv)(o.nodes()[0].contentDocument.body):(0,r.Ltv)("body")).select(`[id="${e}"]`),f=g.append("g").attr("class","main"),p=u.quadrantChart?.chartWidth??500,y=u.quadrantChart?.chartHeight??500;(0,a.a$)(g,y,p,u.quadrantChart?.useMaxWidth??!0),g.attr("viewBox","0 0 "+p+" "+y),l.db.setHeight(y),l.db.setWidth(p);let T=l.db.getQuadrantData(),m=f.append("g").attr("class","quadrants"),_=f.append("g").attr("class","border"),q=f.append("g").attr("class","data-points"),A=f.append("g").attr("class","labels"),b=f.append("g").attr("class","title");T.title&&b.append("text").attr("x",0).attr("y",0).attr("fill",T.title.fill).attr("font-size",T.title.fontSize).attr("dominant-baseline",h(T.title.horizontalPos)).attr("text-anchor",c(T.title.verticalPos)).attr("transform",d(T.title)).text(T.title.text),T.borderLines&&_.selectAll("line").data(T.borderLines).enter().append("line").attr("x1",t=>t.x1).attr("y1",t=>t.y1).attr("x2",t=>t.x2).attr("y2",t=>t.y2).style("stroke",t=>t.strokeFill).style("stroke-width",t=>t.strokeWidth);let k=m.selectAll("g.quadrant").data(T.quadrants).enter().append("g").attr("class","quadrant");k.append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill),k.append("text").attr("x",0).attr("y",0).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>h(t.text.horizontalPos)).attr("text-anchor",t=>c(t.text.verticalPos)).attr("transform",t=>d(t.text)).text(t=>t.text.text),A.selectAll("g.label").data(T.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(t=>t.text).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>h(t.horizontalPos)).attr("text-anchor",t=>c(t.verticalPos)).attr("transform",t=>d(t));let S=q.selectAll("g.data-point").data(T.points).enter().append("g").attr("class","data-point");S.append("circle").attr("cx",t=>t.x).attr("cy",t=>t.y).attr("r",t=>t.radius).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeColor).attr("stroke-width",t=>t.strokeWidth),S.append("text").attr("x",0).attr("y",0).text(t=>t.text.text).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>h(t.text.horizontalPos)).attr("text-anchor",t=>c(t.text.verticalPos)).attr("transform",t=>d(t.text))},"draw")},styles:(0,s.K)(()=>"","styles")}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4303],{44303:(e,s,a)=>{a.d(s,{createGitGraphServices:()=>c.b});var c=a(67413);a(24078)}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4314],{94314:(e,a,t)=>{t.d(a,{diagram:()=>l});var r=t(58609),n=t(84187),d=t(14561),s=t(68567),i=t(97811),p={parse:(0,s.K)(async e=>{let a=await (0,i.qg)("info",e);d.R.debug(a)},"parse")},g=(0,s.K)(()=>"11.17.1","getVersion"),l={parser:p,db:{getVersion:g},renderer:{draw:(0,s.K)((e,a,t)=>{d.R.debug("rendering info diagram\n"+e);let s=(0,r.D)(a);(0,n.a$)(s,100,400,!0),s.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${t}`)},"draw")}}}}]);
|