diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd29521..b72e9e4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,6 +61,22 @@ jobs: - name: Verify solutions run: REQUIRE_COMPLETE=1 ./scripts/check-solutions.sh + javascript: + name: JavaScript bundles + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + - name: Install pinned dependencies + run: npm ci --ignore-scripts + - name: Rebuild local CodeMirror and Lezer bundles + run: npm run build:js + - name: Verify generated bundles are current + run: git diff --exit-code -- static/dist + spellcheck: name: Spell check (typos) runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 2d93843..5cf8c73 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,9 @@ course.db course.db-wal course.db-shm -# Rust build artifacts +# Build artifacts and local dependencies /target/ +/node_modules/ exercises/*/target Cargo.lock diff --git a/_typos.toml b/_typos.toml index c893440..9b84570 100644 --- a/_typos.toml +++ b/_typos.toml @@ -5,6 +5,7 @@ extend-exclude = [ # Vendored / minified third-party assets we don't control. "static/js/htmx.min.js", + "static/dist/", "*.min.js", # Lock file: full of base32/hex hashes that look like typos. "Cargo.lock", diff --git a/docs/architecture.md b/docs/architecture.md index eff8965..ceec9c0 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -50,7 +50,9 @@ course/ │ ├── server.rs # Axum web server (default `cargo run`) │ └── cli.rs # `cargo course …` subcommands ├── templates/ # Askama templates rendered by the server -├── static/ # served at `/static/*` (assets, fonts, quiz.html) +├── static/ # served at `/static/*` (assets, local fonts, JS bundles) +├── package.json # pinned frontend deps + reproducible esbuild command +├── package-lock.json # exact frontend dependency graph └── target/ # cargo build output (ignored) ``` @@ -336,24 +338,26 @@ submissions. Served by `tower-http` `ServeDir` at `/static/*`. Notable: -- `static/quiz.html`: the chapter 18 quiz. Self-contained HTML/JS; - no backend involvement. The chapter's `main.rs` is essentially a - pointer to this file. + - `static/js/inline-editor.js`: shared CodeMirror 6 mount used by `templates/exercise.html`, `templates/dashboard.html`, and `templates/playground.html`. Owns Run/Format/Reset/Submit wiring, draft persistence, vim toggle (global across mounts), test result rendering, and the textarea fallback. Each call site supplies its own DOM (per the `data-role` contract documented at the top of the - module) and an optional `onRunSuccess` callback. + module) and an optional `onRunSuccess` callback. Templates load the + generated `static/dist/inline-editor.js`, not this source file directly. - `static/js/cm-theme.js`: the shared `proseHighlightStyle` / `proseEditorTheme` CodeMirror exports, read by `inline-editor.js` and `readonly-rust-editor.js` so all editors stay in sync with the - `--syn-*` CSS variables in `base.html`. + `--syn-*` CSS variables in `static/css/base.css`. - `static/js/readonly-rust-editor.js`: read-only CodeMirror viewer for Rust code blocks on admin and team pages, and the per-step "Reveal the full solution" viewer mounted lazily inside the hints disclosure on `templates/exercise.html`. +- `static/dist/`: checked-in, minified esbuild output for CodeMirror, + Lezer, Vim mode, and Rust highlighting. Rebuild with `npm run build:js`; + CI verifies the generated chunks match the source modules. - `static/assets/`: logos, screenshots. - `static/fonts/`: bundled webfonts. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..fe6e99b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,666 @@ +{ + "name": "course", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@codemirror/autocomplete": "6.18.0", + "@codemirror/commands": "6.6.0", + "@codemirror/lang-rust": "6.0.1", + "@codemirror/language": "6.10.2", + "@codemirror/state": "6.7.1", + "@codemirror/view": "6.43.7", + "@lezer/highlight": "1.2.0", + "@lezer/rust": "1.0.2", + "@replit/codemirror-vim": "6.2.1" + }, + "devDependencies": { + "esbuild": "0.25.8" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.0.tgz", + "integrity": "sha512-5DbOvBbY4qW5l57cjDsmmpDh3/TeK1vXfTHa+BUMrRzdWdcxKZ4U4V7vQaTtOpApNU4kLS4FQ6cINtLg245LXA==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + }, + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.6.0.tgz", + "integrity": "sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-rust": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-rust/-/lang-rust-6.0.1.tgz", + "integrity": "sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/rust": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz", + "integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", + "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.7.1.tgz", + "integrity": "sha512-9QzNDgE4EYDnAHfrTlR2lwiPciiOymLtwKK+8yHQzCc7GXhAP9xdEbEJFy2IWB1j9UGUl9BsgMmTo/ImA02T7A==", + "license": "MIT", + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.43.7", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.7.tgz", + "integrity": "sha512-FZsExxkoxnAN+d9TgqXLg5g4A1oQwzX9WlkOT5i2PKkcW7xx3Bmu0vs90g6fo9Mpdsb/l96dnAraQ8932aO4/g==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.7.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@lezer/common": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", + "license": "MIT" + }, + "node_modules/@lezer/highlight": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", + "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.1.tgz", + "integrity": "sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/rust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lezer/rust/-/rust-1.0.2.tgz", + "integrity": "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.3.tgz", + "integrity": "sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA==", + "license": "MIT" + }, + "node_modules/@replit/codemirror-vim": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@replit/codemirror-vim/-/codemirror-vim-6.2.1.tgz", + "integrity": "sha512-qDAcGSHBYU5RrdO//qCmD8K9t6vbP327iCj/iqrkVnjbrpFhrjOt92weGXGHmTNRh16cUtkUZ7Xq7rZf+8HVow==", + "license": "MIT", + "peerDependencies": { + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.1.0", + "@codemirror/search": "^6.2.0", + "@codemirror/state": "^6.0.1", + "@codemirror/view": "^6.0.3" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" + } + }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", + "license": "MIT" + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6bbe664 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "private": true, + "scripts": { + "build:js": "rm -rf static/dist && esbuild static/js/inline-editor.js static/js/readonly-rust-editor.js static/js/rust-highlight.js --bundle --splitting --format=esm --minify --outdir=static/dist --entry-names=[name] --chunk-names=chunks/[name]-[hash]" + }, + "devDependencies": { + "esbuild": "0.25.8" + }, + "dependencies": { + "@codemirror/autocomplete": "6.18.0", + "@codemirror/commands": "6.6.0", + "@codemirror/lang-rust": "6.0.1", + "@codemirror/language": "6.10.2", + "@codemirror/state": "6.7.1", + "@codemirror/view": "6.43.7", + "@lezer/highlight": "1.2.0", + "@lezer/rust": "1.0.2", + "@replit/codemirror-vim": "6.2.1" + } +} diff --git a/static/css/base.css b/static/css/base.css index 77733e7..c0f22d0 100644 --- a/static/css/base.css +++ b/static/css/base.css @@ -23,6 +23,13 @@ } /* ---------- Local fonts (served from /static/fonts) ---------- */ +@font-face { + font-family: "Inter"; + src: url("/static/fonts/Inter-roman-latin.woff2") format("woff2"); + font-weight: 400 700; + font-style: normal; + font-display: swap; +} @font-face { font-family: "Happy Headline"; src: url("/static/fonts/Happy-Headline.woff2") format("woff2"); @@ -1314,7 +1321,7 @@ html[data-theme="dark"] .theme-toggle .icon-moon { } /* The .rust-editor element starts as a styled
-like
    box so the source is readable even if CodeMirror fails
-   to load (network blocked, esm.sh down, etc.). Once the
+   to load (network blocked or a local chunk missing). Once the
    read-only viewer mounts and adds a `.cm-editor` child,
    we drop our padding/border so the editor's own chrome
    isn't double-wrapped. */
diff --git a/static/dist/chunks/chunk-26SC7TXE.js b/static/dist/chunks/chunk-26SC7TXE.js
new file mode 100644
index 0000000..37c5d1f
--- /dev/null
+++ b/static/dist/chunks/chunk-26SC7TXE.js
@@ -0,0 +1 @@
+import{a as u}from"./chunk-7WUKGY2L.js";import{A as n,D as a,E as i,e as o,n as r,w as s}from"./chunk-CSOMSVJQ.js";var m=o.define({name:"rust",parser:u.configure({props:[s.add({IfExpression:n({except:/^\s*({|else\b)/}),"String BlockComment":()=>null,AttributeItem:e=>e.continue(),"Statement MatchArm":n()}),a.add(e=>{if(/(Block|edTokens|List)$/.test(e.name))return i;if(e.name=="BlockComment")return t=>({from:t.from+2,to:t.to-2})})]}),languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:\{|\})$/,closeBrackets:{stringPrefixes:["b","r","br"]}}});function f(){return new r(m)}export{m as a,f as b};
diff --git a/static/dist/chunks/chunk-6OYJTXGR.js b/static/dist/chunks/chunk-6OYJTXGR.js
new file mode 100644
index 0000000..38095f2
--- /dev/null
+++ b/static/dist/chunks/chunk-6OYJTXGR.js
@@ -0,0 +1,5 @@
+var ae=[],Te=[];(()=>{let s="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e>1;if(s=Te[n])e=n+1;else return!0;if(e==t)return!1}}function be(s){return s>=127462&&s<=127487}var Ce=8205;function Me(s,e,t=!0,n=!0){return(t?Re:Xe)(s,e,n)}function Re(s,e,t){if(e==s.length)return e;e&&Be(s.charCodeAt(e))&&Fe(s.charCodeAt(e-1))&&e--;let n=oe(s,e);for(e+=Oe(n);e=0&&be(oe(s,l));)r++,l-=2;if(r%2==0)break;e+=2}else break}return e}function Xe(s,e,t){for(;e>1;){let n=Re(s,e-2,t);if(n=56320&&s<57344}function Fe(s){return s>=55296&&s<56320}function Oe(s){return s<65536?1:2}var m=class s{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=$(this,e,t);let i=[];return this.decompose(0,e,i,2),n.length&&n.decompose(0,n.length,i,3),this.decompose(t,this.length,i,1),J.from(i,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=$(this,e,t);let n=[];return this.decompose(e,t,n,0),J.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),i=new B(this),r=new B(e);for(let l=t,h=t;;){if(i.next(l),r.next(l),l=0,i.lineBreak!=r.lineBreak||i.done!=r.done||i.value!=r.value)return!1;if(h+=i.value.length,i.done||h>=n)return!0}}iter(e=1){return new B(this,e)}iterRange(e,t=this.length){return new Y(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t==null&&(t=this.lines+1);let i=this.line(e).from;n=this.iterRange(i,Math.max(i,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new _(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?s.empty:e.length<=32?new k(e):J.from(k.split(e,[]))}},k=class s extends m{constructor(e,t=Ye(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,i){for(let r=0;;r++){let l=this.text[r],h=i+l.length;if((t?n:h)>=e)return new ue(i,h,n,l);i=h+1,n++}}decompose(e,t,n,i){let r=e<=0&&t>=this.length?this:new s(Le(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(i&1){let l=n.pop(),h=X(r.text,l.text.slice(),0,r.length);if(h.length<=32)n.push(new s(h,l.length+r.length));else{let o=h.length>>1;n.push(new s(h.slice(0,o)),new s(h.slice(o)))}}else n.push(r)}replace(e,t,n){if(!(n instanceof s))return super.replace(e,t,n);[e,t]=$(this,e,t);let i=X(this.text,X(n.text,Le(this.text,0,e)),t),r=this.length+n.length-(t-e);return i.length<=32?new s(i,r):J.from(s.split(i,[]),r)}sliceString(e,t=this.length,n=`
+`){[e,t]=$(this,e,t);let i="";for(let r=0,l=0;r<=t&&le&&l&&(i+=n),er&&(i+=h.slice(Math.max(0,e-r),t-r)),r=o+1}return i}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let n=[],i=-1;for(let r of e)n.push(r),i+=r.length+1,n.length==32&&(t.push(new s(n,i)),n=[],i=-1);return i>-1&&t.push(new s(n,i)),t}},J=class s extends m{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let n of e)this.lines+=n.lines}lineInner(e,t,n,i){for(let r=0;;r++){let l=this.children[r],h=i+l.length,o=n+l.lines-1;if((t?o:h)>=e)return l.lineInner(e,t,n,i);i=h+1,n=o+1}}decompose(e,t,n,i){for(let r=0,l=0;l<=t&&r=l){let a=i&((l<=e?1:0)|(o>=t?2:0));l>=e&&o<=t&&!a?n.push(h):h.decompose(e-l,t-l,n,a)}l=o+1}}replace(e,t,n){if([e,t]=$(this,e,t),n.lines=r&&t<=h){let o=l.replace(e-r,t-r,n),a=this.lines-l.lines+o.lines;if(o.lines>4&&o.lines>a>>6){let f=this.children.slice();return f[i]=o,new s(f,this.length-(t-e)+n.length)}return super.replace(r,h,o)}r=h+1}return super.replace(e,t,n)}sliceString(e,t=this.length,n=`
+`){[e,t]=$(this,e,t);let i="";for(let r=0,l=0;re&&r&&(i+=n),el&&(i+=h.sliceString(e-l,t-l,n)),l=o+1}return i}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof s))return 0;let n=0,[i,r,l,h]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;i+=t,r+=t){if(i==l||r==h)return n;let o=this.children[i],a=e.children[r];if(o!=a)return n+o.scanIdentical(a,t);n+=o.length+1}}static from(e,t=e.reduce((n,i)=>n+i.length+1,-1)){let n=0;for(let c of e)n+=c.lines;if(n<32){let c=[];for(let g of e)g.flatten(c);return new k(c,t)}let i=Math.max(32,n>>5),r=i<<1,l=i>>1,h=[],o=0,a=-1,f=[];function u(c){let g;if(c.lines>r&&c instanceof s)for(let I of c.children)u(I);else c.lines>l&&(o>l||!o)?(d(),h.push(c)):c instanceof k&&o&&(g=f[f.length-1])instanceof k&&c.lines+g.lines<=32?(o+=c.lines,a+=c.length+1,f[f.length-1]=new k(g.text.concat(c.text),g.length+1+c.length)):(o+c.lines>i&&d(),o+=c.lines,a+=c.length+1,f.push(c))}function d(){o!=0&&(h.push(f.length==1?f[0]:s.from(f,a)),a=-1,o=f.length=0)}for(let c of e)u(c);return d(),h.length==1?h[0]:new s(h,t)}};m.empty=new k([""],0);function Ye(s){let e=-1;for(let t of s)e+=t.length+1;return e}function X(s,e,t=0,n=1e9){for(let i=0,r=0,l=!0;r=t&&(o>n&&(h=h.slice(0,n-i)),i0?1:(e instanceof k?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,i=this.nodes[n],r=this.offsets[n],l=r>>1,h=i instanceof k?i.text.length:i.children.length;if(l==(t>0?h:0)){if(n==0)return this.done=!0,this.value="",this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=`
+`,this;e--}else if(i instanceof k){let o=i.text[l+(t<0?-1:0)];if(this.offsets[n]+=t,o.length>Math.max(0,e))return this.value=e==0?o:t>0?o.slice(e):o.slice(0,o.length-e),this;e-=o.length}else{let o=i.children[l+(t<0?-1:0)];e>o.length?(e-=o.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(o),this.offsets.push(t>0?1:(o instanceof k?o.text.length:o.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Y=class{constructor(e,t,n){this.value="",this.done=!1,this.cursor=new B(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:i}=this.cursor.next(e);return this.pos+=(i.length+e)*t,this.value=i.length<=n?i:t<0?i.slice(i.length-n):i.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},_=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:n,value:i}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):n?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=i,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(m.prototype[Symbol.iterator]=function(){return this.iter()},B.prototype[Symbol.iterator]=Y.prototype[Symbol.iterator]=_.prototype[Symbol.iterator]=function(){return this});var ue=class{constructor(e,t,n,i){this.from=e,this.to=t,this.number=n,this.text=i}get length(){return this.to-this.from}};function $(s,e,t){return e=Math.max(0,Math.min(s.length,e)),[e,Math.max(e,Math.min(s.length,t))]}function ee(s,e,t=!0,n=!0){return Me(s,e,t,n)}function _e(s){return s>=56320&&s<57344}function et(s){return s>=55296&&s<56320}function dt(s,e){let t=s.charCodeAt(e);if(!et(t)||e+1==s.length)return t;let n=s.charCodeAt(e+1);return _e(n)?(t-55296<<10)+(n-56320)+65536:t}function gt(s){return s<=65535?String.fromCharCode(s):(s-=65536,String.fromCharCode((s>>10)+55296,(s&1023)+56320))}function pt(s){return s<65536?1:2}var ce=/\r\n?|\n/,E=function(s){return s[s.Simple=0]="Simple",s[s.TrackDel=1]="TrackDel",s[s.TrackBefore=2]="TrackBefore",s[s.TrackAfter=3]="TrackAfter",s}(E||(E={})),F=class s{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return r+(e-i);r+=h}else{if(n!=E.Simple&&a>=e&&(n==E.TrackDel&&ie||n==E.TrackBefore&&ie))return null;if(a>e||a==e&&t<0&&!h)return e==i||t<0?r:r+o;r+=o}i=a}if(e>i)throw new RangeError(`Position ${e} is out of range for changeset of length ${i}`);return r}touchesRange(e,t=e){for(let n=0,i=0;n=0&&i<=t&&h>=e)return it?"cover":!0;i=h}return!1}toString(){let e="";for(let t=0;t=0?":"+i:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new s(e)}static create(e){return new s(e)}},P=class s extends F{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return de(this,(t,n,i,r,l)=>e=e.replace(i,i+(n-t),l),!1),e}mapDesc(e,t=!1){return ge(this,e,t,!0)}invert(e){let t=this.sections.slice(),n=[];for(let i=0,r=0;i=0){t[i]=h,t[i+1]=l;let o=i>>1;for(;n.length0&&b(n,t,r.text),r.forward(f),h+=f}let a=e[l++];for(;h>1].toJSON()))}return e}static of(e,t,n){let i=[],r=[],l=0,h=null;function o(f=!1){if(!f&&!i.length)return;ld||u<0||d>t)throw new RangeError(`Invalid change range ${u} to ${d} (in doc of length ${t})`);let g=c?typeof c=="string"?m.of(c.split(n||ce)):c:m.empty,I=g.length;if(u==d&&I==0)return;ul&&w(i,u-l,-1),w(i,d-u,I),b(r,i,g),l=d}}return a(e),o(!h),h}static empty(e){return new s(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],n=[];for(let i=0;ih&&typeof l!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)t.push(r[0],0);else{for(;n.length=0&&t<=0&&t==s[i+1]?s[i]+=e:i>=0&&e==0&&s[i]==0?s[i+1]+=t:n?(s[i]+=e,s[i+1]+=t):s.push(e,t)}function b(s,e,t){if(t.length==0)return;let n=e.length-2>>1;if(n>1])),!(t||l==s.sections.length||s.sections[l+1]<0);)h=s.sections[l++],o=s.sections[l++];e(i,a,r,f,u),i=a,r=f}}}function ge(s,e,t,n=!1){let i=[],r=n?[]:null,l=new L(s),h=new L(e);for(let o=-1;;){if(l.done&&h.len||h.done&&l.len)throw new Error("Mismatched change set lengths");if(l.ins==-1&&h.ins==-1){let a=Math.min(l.len,h.len);w(i,a,-1),l.forward(a),h.forward(a)}else if(h.ins>=0&&(l.ins<0||o==l.i||l.off==0&&(h.len=0&&o=0){let a=0,f=l.len;for(;f;)if(h.ins==-1){let u=Math.min(f,h.len);a+=u,f-=u,h.forward(u)}else if(h.ins==0&&h.leno||l.ins>=0&&l.len>o)&&(h||n.length>a),r.forward2(o),l.forward(o)}}}}var L=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?m.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?m.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},T=class s{constructor(e,t,n,i){this.from=e,this.to=t,this.flags=n,this.goalColumn=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(e,t=-1){let n,i;return this.empty?n=i=e.mapPos(this.from,t):(n=e.mapPos(this.from,1),i=e.mapPos(this.to,-1)),n==this.from&&i==this.to?this:new s(n,i,this.flags,this.goalColumn)}extend(e,t=e,n=0){if(e<=this.anchor&&t>=this.anchor)return x.range(e,t,void 0,void 0,n);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return x.range(this.anchor,i,void 0,void 0,n)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return x.range(e.anchor,e.head)}static create(e,t,n,i){return new s(e,t,n,i)}},x=class s{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:s.create(this.ranges.map(n=>n.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;ne.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new s(e.ranges.map(t=>T.fromJSON(t)),e.main)}static single(e,t=e){return new s([s.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let n=0,i=0;ii.from-r.from),t=e.indexOf(n);for(let i=1;ir.head?s.range(o,h):s.range(h,o))}}return new s(e,t)}};function qe(s,e){for(let t of s.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var Ae=0,y=class s{constructor(e,t,n,i,r){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=i,this.id=Ae++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(e={}){return new s(e.combine||(t=>t),e.compareInput||((t,n)=>t===n),e.compare||(e.combine?(t,n)=>t===n:Pe),!!e.static,e.enables)}of(e){return new N([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new N(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new N(e,this,2,t)}from(e,t){return t||(t=n=>n),this.compute([e],n=>t(n.field(e)))}};function Pe(s,e){return s==e||s.length==e.length&&s.every((t,n)=>t===e[n])}var N=class{constructor(e,t,n,i){this.dependencies=e,this.facet=t,this.type=n,this.value=i,this.id=Ae++}dynamicSlot(e){var t;let n=this.value,i=this.facet.compareInput,r=this.id,l=e[r]>>1,h=this.type==2,o=!1,a=!1,f=[];for(let u of this.dependencies)u=="doc"?o=!0:u=="selection"?a=!0:(((t=e[u.id])!==null&&t!==void 0?t:1)&1)==0&&f.push(e[u.id]);return{create(u){return u.values[l]=n(u),1},update(u,d){if(o&&d.docChanged||a&&(d.docChanged||d.selection)||pe(u,f)){let c=n(u);if(h?!De(c,u.values[l],i):!i(c,u.values[l]))return u.values[l]=c,1}return 0},reconfigure:(u,d)=>{let c,g=d.config.address[r];if(g!=null){let I=se(d,g);if(this.dependencies.every(p=>p instanceof y?d.facet(p)===u.facet(p):p instanceof q?d.field(p,!1)==u.field(p,!1):!0)||(h?De(c=n(u),I,i):i(c=n(u),I)))return u.values[l]=I,0}else c=n(u);return u.values[l]=c,1}}}get extension(){return this}};function De(s,e,t){if(s.length!=e.length)return!1;for(let n=0;ns[o.id]),i=t.map(o=>o.type),r=n.filter(o=>!(o&1)),l=s[e.id]>>1;function h(o){let a=[];for(let f=0;fn===i),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Z).find(n=>n.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:n=>(n.values[t]=this.create(n),1),update:(n,i)=>{let r=n.values[t],l=this.updateF(r,i);return this.compareF(r,l)?0:(n.values[t]=l,1)},reconfigure:(n,i)=>{let r=n.facet(Z),l=i.facet(Z),h;return(h=r.find(o=>o.field==this))&&h!=l.find(o=>o.field==this)?(n.values[t]=h.create(n),1):i.config.address[this.id]!=null?(n.values[t]=i.field(this),0):(n.values[t]=this.create(n),1)}}}init(e){return[this,Z.of({field:this,create:e})]}get extension(){return this}},M={lowest:4,low:3,default:2,high:1,highest:0};function W(s){return e=>new te(e,s)}var mt={highest:W(M.highest),high:W(M.high),default:W(M.default),low:W(M.low),lowest:W(M.lowest)},te=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},ne=class s{of(e){return new G(this,e)}reconfigure(e){return s.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},G=class{constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},ie=class s{constructor(e,t,n,i,r,l){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=i,this.staticValues=r,this.facets=l,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,n){let i=[],r=Object.create(null),l=new Map;for(let d of nt(e,t,l))d instanceof q?i.push(d):(r[d.facet.id]||(r[d.facet.id]=[])).push(d);let h=Object.create(null),o=[],a=[];for(let d of i)h[d.id]=a.length<<1,a.push(c=>d.slot(c));let f=n?.config.facets;for(let d in r){let c=r[d],g=c[0].facet,I=f&&f[d]||[];if(c.every(p=>p.type==0))if(h[g.id]=o.length<<1|1,Pe(I,c))o.push(n.facet(g));else{let p=g.combine(c.map(he=>he.value));o.push(n&&g.compare(p,n.facet(g))?n.facet(g):p)}else{for(let p of c)p.type==0?(h[p.id]=o.length<<1|1,o.push(p.value)):(h[p.id]=a.length<<1,a.push(he=>p.dynamicSlot(he)));h[g.id]=a.length<<1,a.push(p=>tt(p,g,c))}}let u=a.map(d=>d(h));return new s(e,l,u,h,o,r)}};function nt(s,e,t){let n=[[],[],[],[],[]],i=new Map;function r(l,h){let o=i.get(l);if(o!=null){if(o<=h)return;let a=n[o].indexOf(l);a>-1&&n[o].splice(a,1),l instanceof G&&t.delete(l.compartment)}if(i.set(l,h),Array.isArray(l))for(let a of l)r(a,h);else if(l instanceof G){if(t.has(l.compartment))throw new RangeError("Duplicate use of compartment in extensions");let a=e.get(l.compartment)||l.inner;t.set(l.compartment,a),r(a,h)}else if(l instanceof te)r(l.inner,l.prec);else if(l instanceof q)n[h].push(l),l.provides&&r(l.provides,h);else if(l instanceof N)n[h].push(l),l.facet.extensions&&r(l.facet.extensions,M.default);else{let a=l.extension;if(!a)throw new Error(`Unrecognized extension value in extension set (${l}).`);if(a==l)throw new Error(`Unrecognized extension value in extension set (${l}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(a,h)}}return r(s,M.default),n.reduce((l,h)=>l.concat(h))}function U(s,e){if(e&1)return 2;let t=e>>1,n=s.status[t];if(n==4)throw new Error("Cyclic dependency between fields and/or facets");if(n&2)return n;s.status[t]=4;let i=s.computeSlot(s,s.config.dynamicSlots[t]);return s.status[t]=2|i}function se(s,e){return e&1?s.config.staticValues[e>>1]:s.values[e>>1]}var ze=y.define(),me=y.define({combine:s=>s.some(e=>e),static:!0}),We=y.define({combine:s=>s.length?s[0]:void 0,static:!0}),Ue=y.define(),Ge=y.define(),He=y.define(),je=y.define({combine:s=>s.length?s[0]:!1}),D=class{constructor(e,t){this.type=e,this.value=t}static define(){return new we}},we=class{of(e){return new D(this,e)}},ve=class{constructor(e){this.map=e}of(e){return new v(this,e)}},v=class s{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new s(this.type,t)}is(e){return this.type==e}static define(e={}){return new ve(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let i of e){let r=i.map(t);r&&n.push(r)}return n}};v.reconfigure=v.define();v.appendConfig=v.define();var S=class s{constructor(e,t,n,i,r,l){this.startState=e,this.changes=t,this.selection=n,this.effects=i,this.annotations=r,this.scrollIntoView=l,this._doc=null,this._state=null,n&&qe(n,t.newLength),r.some(h=>h.type==s.time)||(this.annotations=r.concat(s.time.of(Date.now())))}static create(e,t,n,i,r,l){return new s(e,t,n,i,r,l)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(s.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};S.time=D.define();S.userEvent=D.define();S.addToHistory=D.define();S.remote=D.define();function it(s,e){let t=[];for(let n=0,i=0;;){let r,l;if(n=s[n]))r=s[n++],l=s[n++];else if(i=0;i--){let r=n[i](s);r instanceof S?s=r:Array.isArray(r)&&r.length==1&&r[0]instanceof S?s=r[0]:s=Ke(e,V(r),!1)}return s}function rt(s){let e=s.startState,t=e.facet(He),n=s;for(let i=t.length-1;i>=0;i--){let r=t[i](s);r&&Object.keys(r).length&&(n=Ze(n,xe(e,r,s.changes.newLength),!0))}return n==s?s:S.create(e,s.changes,s.selection,n.effects,n.annotations,n.scrollIntoView)}var lt=[];function V(s){return s==null?lt:Array.isArray(s)?s:[s]}var C=function(s){return s[s.Word=0]="Word",s[s.Space=1]="Space",s[s.Other=2]="Other",s}(C||(C={})),ht=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ke;try{ke=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function ot(s){if(ke)return ke.test(s);for(let e=0;e"\x80"&&(t.toUpperCase()!=t.toLowerCase()||ht.test(t)))return!0}return!1}function at(s){return e=>{if(!/\S/.test(e))return C.Space;if(ot(e))return C.Word;for(let t=0;t-1)return C.Word;return C.Other}}var A=class s{constructor(e,t,n,i,r,l){this.config=e,this.doc=t,this.selection=n,this.values=i,this.status=e.statusTemplate.slice(),this.computeSlot=r,l&&(l._state=this);for(let h=0;hi.set(a,o)),t=null),i.set(h.value.compartment,h.value.extension)):h.is(v.reconfigure)?(t=null,n=h.value):h.is(v.appendConfig)&&(t=null,n=V(n).concat(h.value));let r;t?r=e.startState.values.slice():(t=ie.resolve(n,i,this),r=new s(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(o,a)=>a.reconfigure(o,this),null).values);let l=e.startState.facet(me)?e.newSelection:e.newSelection.asSingle();new s(t,e.newDoc,l,r,(h,o)=>o.update(h,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:x.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),i=this.changes(n.changes),r=[n.range],l=V(n.effects);for(let h=1;hl.spec.fromJSON(h,o)))}}return s.create({doc:e.doc,selection:x.fromJSON(e.selection),extensions:t.extensions?i.concat([t.extensions]):i})}static create(e={}){let t=ie.resolve(e.extensions||[],new Map),n=e.doc instanceof m?e.doc:m.of((e.doc||"").split(t.staticFacet(s.lineSeparator)||ce)),i=e.selection?e.selection instanceof x?e.selection:x.single(e.selection.anchor,e.selection.head):x.single(0);return qe(i,n.length),t.staticFacet(me)||(i=i.asSingle()),new s(t,n,i,t.dynamicSlots.map(()=>null),(r,l)=>l.create(r),null)}get tabSize(){return this.facet(s.tabSize)}get lineBreak(){return this.facet(s.lineSeparator)||`
+`}get readOnly(){return this.facet(je)}phrase(e,...t){for(let n of this.facet(s.phrases))if(Object.prototype.hasOwnProperty.call(n,e)){e=n[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(n,i)=>{if(i=="$")return"$";let r=+(i||1);return!r||r>t.length?n:t[r-1]})),e}languageDataAt(e,t,n=-1){let i=[];for(let r of this.facet(ze))for(let l of r(this,t,n))Object.prototype.hasOwnProperty.call(l,e)&&i.push(l[e]);return i}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return at(t.length?t[0]:"")}wordAt(e){let{text:t,from:n,length:i}=this.doc.lineAt(e),r=this.charCategorizer(e),l=e-n,h=e-n;for(;l>0;){let o=ee(t,l,!1);if(r(t.slice(o,l))!=C.Word)break;l=o}for(;hs.length?s[0]:4});A.lineSeparator=We;A.readOnly=je;A.phrases=y.define({compare(s,e){let t=Object.keys(s),n=Object.keys(e);return t.length==n.length&&t.every(i=>s[i]==e[i])}});A.languageData=ze;A.changeFilter=Ue;A.transactionFilter=Ge;A.transactionExtender=He;ne.reconfigure=v.define();function wt(s,e,t={}){let n={};for(let i of s)for(let r of Object.keys(i)){let l=i[r],h=n[r];if(h===void 0)n[r]=l;else if(!(h===l||l===void 0))if(Object.hasOwnProperty.call(t,r))n[r]=t[r](h,l);else throw new Error("Config merge conflict for field "+r)}for(let i in e)n[i]===void 0&&(n[i]=e[i]);return n}var z=class{eq(e){return this==e}range(e,t=e){return H.create(e,t,this)}};z.prototype.startSide=z.prototype.endSide=0;z.prototype.point=!1;z.prototype.mapMode=E.TrackDel;function Ee(s,e){return s==e||s.constructor==e.constructor&&s.eq(e)}var H=class s{constructor(e,t,n){this.from=e,this.to=t,this.value=n}static create(e,t,n){return new s(e,t,n)}};function ye(s,e){return s.from-e.from||s.value.startSide-e.value.startSide}var Se=class s{constructor(e,t,n,i){this.from=e,this.to=t,this.value=n,this.maxPoint=i}get length(){return this.to[this.to.length-1]}findIndex(e,t,n,i=0){let r=n?this.to:this.from;for(let l=i,h=r.length;;){if(l==h)return l;let o=l+h>>1,a=r[o]-e||(n?this.value[o].endSide:this.value[o].startSide)-t;if(o==l)return a>=0?l:h;a>=0?h=o:l=o+1}}between(e,t,n,i){for(let r=this.findIndex(t,-1e9,!0),l=this.findIndex(n,1e9,!1,r);rc||d==c&&a.startSide>0&&a.endSide<=0)continue;(c-d||a.endSide-a.startSide)<0||(l<0&&(l=d),a.point&&(h=Math.max(h,c-d)),n.push(a),i.push(d-l),r.push(c-l))}return{mapped:n.length?new s(i,r,n,h):null,pos:l}}},O=class s{constructor(e,t,n,i){this.chunkPos=e,this.chunk=t,this.nextLayer=n,this.maxPoint=i}static create(e,t,n,i){return new s(e,t,n,i)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:n=!1,filterFrom:i=0,filterTo:r=this.length}=e,l=e.filter;if(t.length==0&&!l)return this;if(n&&(t=t.slice().sort(ye)),this.isEmpty)return t.length?s.of(t):this;let h=new le(this,null,-1).goto(0),o=0,a=[],f=new re;for(;h.value||o=0){let u=t[o++];f.addInner(u.from,u.to,u.value)||a.push(u)}else h.rangeIndex==1&&h.chunkIndexthis.chunkEnd(h.chunkIndex)||rh.to||r=r&&e<=r+l.length&&l.between(r,e-r,t-r,n)===!1)return}this.nextLayer.between(e,t,n)}}iter(e=0){return j.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return j.from(e).goto(t)}static compare(e,t,n,i,r=-1){let l=e.filter(u=>u.maxPoint>0||!u.isEmpty&&u.maxPoint>=r),h=t.filter(u=>u.maxPoint>0||!u.isEmpty&&u.maxPoint>=r),o=Je(l,h,n),a=new R(l,o,r),f=new R(h,o,r);n.iterGaps((u,d,c)=>Ne(a,u,f,d,c,i)),n.empty&&n.length==0&&Ne(a,0,f,0,0,i)}static eq(e,t,n=0,i){i==null&&(i=999999999);let r=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0),l=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0);if(r.length!=l.length)return!1;if(!r.length)return!0;let h=Je(r,l),o=new R(r,h,0).goto(n),a=new R(l,h,0).goto(n);for(;;){if(o.to!=a.to||!Ie(o.active,a.active)||o.point&&(!a.point||!Ee(o.point,a.point)))return!1;if(o.to>i)return!0;o.next(),a.next()}}static spans(e,t,n,i,r=-1){let l=new R(e,null,r).goto(t),h=t,o=l.openStart;for(;;){let a=Math.min(l.to,n);if(l.point){let f=l.activeForPoint(l.to),u=l.pointFromh&&(i.span(h,a,l.active,o),o=l.openEnd(a));if(l.to>n)return o+(l.point&&l.to>n?1:0);h=l.to,l.next()}}static of(e,t=!1){let n=new re;for(let i of e instanceof H?[e]:t?ft(e):e)n.add(i.from,i.to,i.value);return n.finish()}static join(e){if(!e.length)return s.empty;let t=e[e.length-1];for(let n=e.length-2;n>=0;n--)for(let i=e[n];i!=s.empty;i=i.nextLayer)t=new s(i.chunkPos,i.chunk,t,Math.max(i.maxPoint,t.maxPoint));return t}};O.empty=new O([],[],null,-1);function ft(s){if(s.length>1)for(let e=s[0],t=1;t0)return s.slice().sort(ye);e=n}return s}O.empty.nextLayer=O.empty;var re=class s{finishChunk(e){this.chunks.push(new Se(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,n){this.addInner(e,t,n)||(this.nextLayer||(this.nextLayer=new s)).add(e,t,n)}addInner(e,t,n){let i=e-this.lastTo||n.startSide-this.last.endSide;if(i<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return i<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=n,this.lastFrom=e,this.lastTo=t,this.value.push(n),n.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let n=t.value.length-1;return this.last=t.value[n],this.lastFrom=t.from[n]+e,this.lastTo=t.to[n]+e,!0}finish(){return this.finishInner(O.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=O.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function Je(s,e,t){let n=new Map;for(let r of s)for(let l=0;l=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=n&&i.push(new le(l,t,n,r));return i.length==1?i[0]:new s(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let n of this.heap)n.goto(e,t);for(let n=this.heap.length>>1;n>=0;n--)fe(this.heap,n);return this.next(),this}forward(e,t){for(let n of this.heap)n.forward(e,t);for(let n=this.heap.length>>1;n>=0;n--)fe(this.heap,n);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),fe(this.heap,0)}}};function fe(s,e){for(let t=s[e];;){let n=(e<<1)+1;if(n>=s.length)break;let i=s[n];if(n+1=0&&(i=s[n+1],n++),t.compare(i)<0)break;s[n]=t,s[e]=i,e=n}}var R=class{constructor(e,t,n){this.minPoint=n,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=j.from(e,t,n)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){K(this.active,e),K(this.activeTo,e),K(this.activeRank,e),this.minActive=Ve(this.active,this.activeTo)}addActive(e){let t=0,{value:n,to:i,rank:r}=this.cursor;for(;t0;)t++;Q(this.active,t,n),Q(this.activeTo,t,i),Q(this.activeRank,t,r),e&&Q(e,t,this.cursor.from),this.minActive=Ve(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let i=this.minActive;if(i>-1&&(this.activeTo[i]-this.cursor.from||this.active[i].endSide-this.cursor.startSide)<0){if(this.activeTo[i]>e){this.to=this.activeTo[i],this.endSide=this.active[i].endSide;break}this.removeActive(i),n&&K(n,i)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(n),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&n[i]=0&&!(this.activeRank[n]e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&t.push(this.active[n]);return t.reverse()}openEnd(e){let t=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)t++;return t}};function Ne(s,e,t,n,i,r){s.goto(e),t.goto(n);let l=n+i,h=n,o=n-e,a=!!r.boundChange;for(let f=!1;;){let u=s.to+o-t.to,d=u||s.endSide-t.endSide,c=d<0?s.to+o:t.to,g=Math.min(c,l);if(s.point||t.point?(s.point&&t.point&&Ee(s.point,t.point)&&Ie(s.activeForPoint(s.to),t.activeForPoint(t.to))||r.comparePoint(h,g,s.point,t.point),f=!1):(f&&r.boundChange(h),g>h&&!Ie(s.active,t.active)&&r.compareRange(h,g,s.active,t.active),a&&gl)break;h=c,d<=0&&s.next(),d>=0&&t.next()}}function Ie(s,e){if(s.length!=e.length)return!1;for(let t=0;t=e;n--)s[n+1]=s[n];s[e]=t}function Ve(s,e){let t=-1,n=1e9;for(let i=0;i=e)return i;if(i==s.length)break;r+=s.charCodeAt(i)==9?t-r%t:1,i=ee(s,i)}return n===!0?-1:s.length}export{m as a,ue as b,ee as c,dt as d,gt as e,pt as f,E as g,F as h,P as i,T as j,x as k,y as l,q as m,mt as n,ne as o,D as p,we as q,ve as r,v as s,S as t,C as u,A as v,wt as w,z as x,H as y,O as z,re as A,vt as B,xt as C};
diff --git a/static/dist/chunks/chunk-7WUKGY2L.js b/static/dist/chunks/chunk-7WUKGY2L.js
new file mode 100644
index 0000000..da32bc8
--- /dev/null
+++ b/static/dist/chunks/chunk-7WUKGY2L.js
@@ -0,0 +1 @@
+import{a as Y,b as j,c as A,d as E,e as W,g as I,h as N,k as X}from"./chunk-CGTIGMIP.js";var x=class r{constructor(O,e,t,i,s,Q,n,a,P,h=0,$){this.p=O,this.stack=e,this.state=t,this.reducePos=i,this.pos=s,this.score=Q,this.buffer=n,this.bufferBase=a,this.curContext=P,this.lookAhead=h,this.parent=$}toString(){return`[${this.stack.filter((O,e)=>e%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(O,e,t=0){let i=O.parser.context;return new r(O,[],e,t,t,0,[],0,i?new b(i,i.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(O,e){this.stack.push(this.state,e,this.bufferBase+this.buffer.length),this.state=O}reduce(O){var e;let t=O>>19,i=O&65535,{parser:s}=this.p;this.reducePos=2e3&&!(!((e=this.p.parser.nodeSet.types[i])===null||e===void 0)&&e.isAnonymous)&&(a==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=P):this.p.lastBigReductionSizen;)this.stack.pop();this.reduceContext(i,a)}storeNode(O,e,t,i=4,s=!1){if(O==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&Q.buffer[n-4]==0&&Q.buffer[n-1]>-1){if(e==t)return;if(Q.buffer[n-2]>=e){Q.buffer[n-2]=t;return}}}if(!s||this.pos==t)this.buffer.push(O,e,t,i);else{let Q=this.buffer.length;if(Q>0&&this.buffer[Q-4]!=0)for(;Q>0&&this.buffer[Q-2]>t;)this.buffer[Q]=this.buffer[Q-4],this.buffer[Q+1]=this.buffer[Q-3],this.buffer[Q+2]=this.buffer[Q-2],this.buffer[Q+3]=this.buffer[Q-1],Q-=4,i>4&&(i-=4);this.buffer[Q]=O,this.buffer[Q+1]=e,this.buffer[Q+2]=t,this.buffer[Q+3]=i}}shift(O,e,t,i){if(O&131072)this.pushState(O&65535,this.pos);else if((O&262144)==0){let s=O,{parser:Q}=this.p;(i>this.pos||e<=Q.maxNode)&&(this.pos=i,Q.stateFlag(s,1)||(this.reducePos=i)),this.pushState(s,t),this.shiftContext(e,t),e<=Q.maxNode&&this.buffer.push(e,t,i,4)}else this.pos=i,this.shiftContext(e,t),e<=this.p.parser.maxNode&&this.buffer.push(e,t,i,4)}apply(O,e,t,i){O&65536?this.reduce(O):this.shift(O,e,t,i)}useNode(O,e){let t=this.p.reused.length-1;(t<0||this.p.reused[t]!=O)&&(this.p.reused.push(O),t++);let i=this.pos;this.reducePos=this.pos=i+O.length,this.pushState(e,i),this.buffer.push(t,i,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,O,this,this.p.stream.reset(this.pos-O.length)))}split(){let O=this,e=O.buffer.length;for(;e>0&&O.buffer[e-2]>O.reducePos;)e-=4;let t=O.buffer.slice(e),i=O.bufferBase+e;for(;O&&i==O.bufferBase;)O=O.parent;return new r(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,t,i,this.curContext,this.lookAhead,O)}recoverByDelete(O,e){let t=O<=this.p.parser.maxNode;t&&this.storeNode(O,this.pos,e,4),this.storeNode(0,this.pos,e,t?8:4),this.pos=this.reducePos=e,this.score-=190}canShift(O){for(let e=new R(this);;){let t=this.p.parser.stateSlot(e.state,4)||this.p.parser.hasAction(e.state,O);if(t==0)return!1;if((t&65536)==0)return!0;e.reduce(t)}}recoverByInsert(O){if(this.stack.length>=300)return[];let e=this.p.parser.nextStates(this.state);if(e.length>8||this.stack.length>=120){let i=[];for(let s=0,Q;sa&1&&n==Q)||i.push(e[s],Q)}e=i}let t=[];for(let i=0;i>19,i=e&65535,s=this.stack.length-t*3;if(s<0||O.getGoto(this.stack[s],i,!1)<0){let Q=this.findForcedReduction();if(Q==null)return!1;e=Q}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(e),!0}findForcedReduction(){let{parser:O}=this.p,e=[],t=(i,s)=>{if(!e.includes(i))return e.push(i),O.allActions(i,Q=>{if(!(Q&393216))if(Q&65536){let n=(Q>>19)-s;if(n>1){let a=Q&65535,P=this.stack.length-n*3;if(P>=0&&O.getGoto(this.stack[P],a,!1)>=0)return n<<19|65536|a}}else{let n=t(Q,s+1);if(n!=null)return n}})};return t(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:O}=this.p;return O.data[O.stateSlot(this.state,1)]==65535&&!O.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(O){if(this.state!=O.state||this.stack.length!=O.stack.length)return!1;for(let e=0;ethis.lookAhead&&(this.emitLookAhead(),this.lookAhead=O)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}},b=class{constructor(O,e){this.tracker=O,this.context=e,this.hash=O.strict?O.hash(e):0}},R=class{constructor(O){this.start=O,this.state=O.state,this.stack=O.stack,this.base=this.stack.length}reduce(O){let e=O&65535,t=O>>19;t==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(t-1)*3;let i=this.start.p.parser.getGoto(this.stack[this.base-3],e,!0);this.state=i}},y=class r{constructor(O,e,t){this.stack=O,this.pos=e,this.index=t,this.buffer=O.buffer,this.index==0&&this.maybeNext()}static create(O,e=O.bufferBase+O.buffer.length){return new r(O,e,e-O.bufferBase)}maybeNext(){let O=this.stack.parent;O!=null&&(this.index=this.stack.bufferBase-O.bufferBase,this.stack=O,this.buffer=O.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new r(this.stack,this.pos,this.index)}};function g(r,O=Uint16Array){if(typeof r!="string")return r;let e=null;for(let t=0,i=0;t=92&&Q--,Q>=34&&Q--;let a=Q-32;if(a>=46&&(a-=46,n=!0),s+=a,n)break;s*=46}e?e[i++]=s:e=new O(s)}return e}var p=class{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}},C=new p,T=class{constructor(O,e){this.input=O,this.ranges=e,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=C,this.rangeIndex=0,this.pos=this.chunkPos=e[0].from,this.range=e[0],this.end=e[e.length-1].to,this.readNext()}resolveOffset(O,e){let t=this.range,i=this.rangeIndex,s=this.pos+O;for(;st.to:s>=t.to;){if(i==this.ranges.length-1)return null;let Q=this.ranges[++i];s+=Q.from-t.to,t=Q}return s}clipPos(O){if(O>=this.range.from&&OO)return Math.max(O,e.from);return this.end}peek(O){let e=this.chunkOff+O,t,i;if(e>=0&&e=this.chunk2Pos&&tn.to&&(this.chunk2=this.chunk2.slice(0,n.to-t)),i=this.chunk2.charCodeAt(0)}}return t>=this.token.lookAhead&&(this.token.lookAhead=t+1),i}acceptToken(O,e=0){let t=e?this.resolveOffset(e,-1):this.pos;if(t==null||t=this.chunk2Pos&&this.posthis.range.to?O.slice(0,this.range.to-this.pos):O,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(O=1){for(this.chunkOff+=O;this.pos+O>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();O-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=O,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(O,e){if(e?(this.token=e,e.start=O,e.lookAhead=O+1,e.value=e.extended=-1):this.token=C,this.pos!=O){if(this.pos=O,O==this.end)return this.setDone(),this;for(;O=this.range.to;)this.range=this.ranges[++this.rangeIndex];O>=this.chunkPos&&O=this.chunkPos&&e<=this.chunkPos+this.chunk.length)return this.chunk.slice(O-this.chunkPos,e-this.chunkPos);if(O>=this.chunk2Pos&&e<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(O-this.chunk2Pos,e-this.chunk2Pos);if(O>=this.range.from&&e<=this.range.to)return this.input.read(O,e);let t="";for(let i of this.ranges){if(i.from>=e)break;i.to>O&&(t+=this.input.read(Math.max(i.from,O),Math.min(i.to,e)))}return t}},u=class{constructor(O,e){this.data=O,this.id=e}token(O,e){let{parser:t}=e.p;L(this.data,O,e,this.id,t.data,t.tokenPrecTable)}};u.prototype.contextual=u.prototype.fallback=u.prototype.extend=!1;var v=class{constructor(O,e,t){this.precTable=e,this.elseToken=t,this.data=typeof O=="string"?g(O):O}token(O,e){let t=O.pos,i=0;for(;;){let s=O.next<0,Q=O.resolveOffset(1,1);if(L(this.data,O,e,0,this.data,this.precTable),O.token.value>-1)break;if(this.elseToken==null)return;if(s||i++,Q==null)break;O.reset(Q,O.token)}i&&(O.reset(t,O.token),O.acceptToken(this.elseToken,i))}};v.prototype.contextual=u.prototype.fallback=u.prototype.extend=!1;var d=class{constructor(O,e={}){this.token=O,this.contextual=!!e.contextual,this.fallback=!!e.fallback,this.extend=!!e.extend}};function L(r,O,e,t,i,s){let Q=0,n=1<0){let S=r[l];if(a.allows(S)&&(O.token.value==-1||O.token.value==S||QO(S,O.token.value,i,s))){O.acceptToken(S);break}}let h=O.next,$=0,o=r[Q+2];if(O.next<0&&o>$&&r[P+o*3-3]==65535){Q=r[P+o*3-1];continue O}for(;$>1,S=P+l+(l<<1),z=r[S],tO=r[S+1]||65536;if(h=tO)$=l+1;else{Q=r[S+2],O.advance();continue O}}break}}function D(r,O,e){for(let t=O,i;(i=r[t])!=65535;t++)if(i==e)return t-O;return-1}function QO(r,O,e,t){let i=D(e,t,O);return i<0||D(e,t,r)O)&&!t.type.isError)return e<0?Math.max(0,Math.min(t.to-1,O-25)):Math.min(r.length,Math.max(t.from+1,O+25));if(e<0?t.prevSibling():t.nextSibling())break;if(!t.parent())return e<0?0:r.length}}var V=class{constructor(O,e){this.fragments=O,this.nodeSet=e,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let O=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(O){for(this.safeFrom=O.openStart?F(O.tree,O.from+O.offset,1)-O.offset:O.from,this.safeTo=O.openEnd?F(O.tree,O.to+O.offset,-1)-O.offset:O.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(O.tree),this.start.push(-O.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(O){if(OO)return this.nextStart=Q,null;if(s instanceof W){if(Q==O){if(Q=Math.max(this.safeFrom,O)&&(this.trees.push(s),this.start.push(Q),this.index.push(0))}else this.index[e]++,this.nextStart=Q+s.length}}},m=class{constructor(O,e){this.stream=e,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=O.tokenizers.map(t=>new p)}getActions(O){let e=0,t=null,{parser:i}=O.p,{tokenizers:s}=i,Q=i.stateSlot(O.state,3),n=O.curContext?O.curContext.hash:0,a=0;for(let P=0;P$.end+25&&(a=Math.max($.lookAhead,a)),$.value!=0)){let o=e;if($.extended>-1&&(e=this.addActions(O,$.extended,$.end,e)),e=this.addActions(O,$.value,$.end,e),!h.extend&&(t=$,e>o))break}}for(;this.actions.length>e;)this.actions.pop();return a&&O.setLookAhead(a),!t&&O.pos==this.stream.end&&(t=new p,t.value=O.p.parser.eofTerm,t.start=t.end=O.pos,e=this.addActions(O,t.value,t.end,e)),this.mainToken=t,this.actions}getMainToken(O){if(this.mainToken)return this.mainToken;let e=new p,{pos:t,p:i}=O;return e.start=t,e.end=Math.min(t+1,i.stream.end),e.value=t==i.stream.end?i.parser.eofTerm:0,e}updateCachedToken(O,e,t){let i=this.stream.clipPos(t.pos);if(e.token(this.stream.reset(i,O),t),O.value>-1){let{parser:s}=t.p;for(let Q=0;Q=0&&t.p.parser.dialect.allows(n>>1)){(n&1)==0?O.value=n>>1:O.extended=n>>1;break}}}else O.value=0,O.end=this.stream.clipPos(i+1)}putAction(O,e,t,i){for(let s=0;sO.bufferLength*4?new V(t,O.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let O=this.stacks,e=this.minStackPos,t=this.stacks=[],i,s;if(this.bigReductionCount>300&&O.length==1){let[Q]=O;for(;Q.forceReduce()&&Q.stack.length&&Q.stack[Q.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let Q=0;Qe)t.push(n);else{if(this.advanceStack(n,t,O))continue;{i||(i=[],s=[]),i.push(n);let a=this.tokens.getMainToken(n);s.push(a.value,a.end)}}break}}if(!t.length){let Q=i&&sO(i);if(Q)return f&&console.log("Finish with "+this.stackID(Q)),this.stackToTree(Q);if(this.parser.strict)throw f&&i&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+e);this.recovering||(this.recovering=5)}if(this.recovering&&i){let Q=this.stoppedAt!=null&&i[0].pos>this.stoppedAt?i[0]:this.runRecovery(i,s,t);if(Q)return f&&console.log("Force-finish "+this.stackID(Q)),this.stackToTree(Q.forceAll())}if(this.recovering){let Q=this.recovering==1?1:this.recovering*3;if(t.length>Q)for(t.sort((n,a)=>a.score-n.score);t.length>Q;)t.pop();t.some(n=>n.reducePos>e)&&this.recovering--}else if(t.length>1){O:for(let Q=0;Q500&&P.buffer.length>500)if((n.score-P.score||n.buffer.length-P.buffer.length)>0)t.splice(a--,1);else{t.splice(Q--,1);continue O}}}t.length>12&&t.splice(12,t.length-12)}this.minStackPos=t[0].pos;for(let Q=1;Q ":"";if(this.stoppedAt!=null&&i>this.stoppedAt)return O.forceReduce()?O:null;if(this.fragments){let P=O.curContext&&O.curContext.tracker.strict,h=P?O.curContext.hash:0;for(let $=this.fragments.nodeAt(i);$;){let o=this.parser.nodeSet.types[$.type.id]==$.type?s.getGoto(O.state,$.type.id):-1;if(o>-1&&$.length&&(!P||($.prop(Y.contextHash)||0)==h))return O.useNode($,o),f&&console.log(Q+this.stackID(O)+` (via reuse of ${s.getName($.type.id)})`),!0;if(!($ instanceof W)||$.children.length==0||$.positions[0]>0)break;let l=$.children[0];if(l instanceof W&&$.positions[0]==0)$=l;else break}}let n=s.stateSlot(O.state,4);if(n>0)return O.reduce(n),f&&console.log(Q+this.stackID(O)+` (via always-reduce ${s.getName(n&65535)})`),!0;if(O.stack.length>=8400)for(;O.stack.length>6e3&&O.forceReduce(););let a=this.tokens.getActions(O);for(let P=0;Pi?e.push(S):t.push(S)}return!1}advanceFully(O,e){let t=O.pos;for(;;){if(!this.advanceStack(O,null,null))return!1;if(O.pos>t)return H(O,e),!0}}runRecovery(O,e,t){let i=null,s=!1;for(let Q=0;Q ":"";if(n.deadEnd&&(s||(s=!0,n.restart(),f&&console.log(h+this.stackID(n)+" (restarted)"),this.advanceFully(n,t))))continue;let $=n.split(),o=h;for(let l=0;$.forceReduce()&&l<10&&(f&&console.log(o+this.stackID($)+" (via force-reduce)"),!this.advanceFully($,t));l++)f&&(o=this.stackID($)+" -> ");for(let l of n.recoverByInsert(a))f&&console.log(h+this.stackID(l)+" (via recover-insert)"),this.advanceFully(l,t);this.stream.end>n.pos?(P==n.pos&&(P++,a=0),n.recoverByDelete(a,P),f&&console.log(h+this.stackID(n)+` (via recover-delete ${this.parser.getName(a)})`),H(n,t)):(!i||i.scoreO.topRules[n][1]),i=[];for(let n=0;n=0)s(h,a,n[P++]);else{let $=n[P+-h];for(let o=-h;o>0;o--)s(n[P++],a,$);P++}}}this.nodeSet=new A(e.map((n,a)=>j.define({name:a>=this.minRepeatTerm?void 0:n,id:a,props:i[a],top:t.indexOf(a)>-1,error:a==0,skipped:O.skippedNodes&&O.skippedNodes.indexOf(a)>-1}))),O.propSources&&(this.nodeSet=this.nodeSet.extend(...O.propSources)),this.strict=!1,this.bufferLength=1024;let Q=g(O.tokenData);this.context=O.context,this.specializerSpecs=O.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let n=0;ntypeof n=="number"?new u(Q,n):n),this.topRules=O.topRules,this.dialects=O.dialects||{},this.dynamicPrecedences=O.dynamicPrecedences||null,this.tokenPrecTable=O.tokenPrec,this.termNames=O.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(O,e,t){let i=new k(this,O,e,t);for(let s of this.wrappers)i=s(i,O,e,t);return i}getGoto(O,e,t=!1){let i=this.goto;if(e>=i[0])return-1;for(let s=i[e+1];;){let Q=i[s++],n=Q&1,a=i[s++];if(n&&t)return a;for(let P=s+(Q>>1);s0}validAction(O,e){return!!this.allActions(O,t=>t==e?!0:null)}allActions(O,e){let t=this.stateSlot(O,4),i=t?e(t):void 0;for(let s=this.stateSlot(O,1);i==null;s+=3){if(this.data[s]==65535)if(this.data[s+1]==1)s=c(this.data,s+2);else break;i=e(c(this.data,s+1))}return i}nextStates(O){let e=[];for(let t=this.stateSlot(O,1);;t+=3){if(this.data[t]==65535)if(this.data[t+1]==1)t=c(this.data,t+2);else break;if((this.data[t+2]&1)==0){let i=this.data[t+1];e.some((s,Q)=>Q&1&&s==i)||e.push(this.data[t],i)}}return e}configure(O){let e=Object.assign(Object.create(r.prototype),this);if(O.props&&(e.nodeSet=this.nodeSet.extend(...O.props)),O.top){let t=this.topRules[O.top];if(!t)throw new RangeError(`Invalid top rule name ${O.top}`);e.top=t}return O.tokenizers&&(e.tokenizers=this.tokenizers.map(t=>{let i=O.tokenizers.find(s=>s.from==t);return i?i.to:t})),O.specializers&&(e.specializers=this.specializers.slice(),e.specializerSpecs=this.specializerSpecs.map((t,i)=>{let s=O.specializers.find(n=>n.from==t.external);if(!s)return t;let Q=Object.assign(Object.assign({},t),{external:s.to});return e.specializers[i]=J(Q),Q})),O.contextTracker&&(e.context=O.contextTracker),O.dialect&&(e.dialect=this.parseDialect(O.dialect)),O.strict!=null&&(e.strict=O.strict),O.wrap&&(e.wrappers=e.wrappers.concat(O.wrap)),O.bufferLength!=null&&(e.bufferLength=O.bufferLength),e}hasWrappers(){return this.wrappers.length>0}getName(O){return this.termNames?this.termNames[O]:String(O<=this.maxNode&&this.nodeSet.types[O].name||O)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(O){let e=this.dynamicPrecedences;return e==null?0:e[O]||0}parseDialect(O){let e=Object.keys(this.dialects),t=e.map(()=>!1);if(O)for(let s of O.split(" ")){let Q=e.indexOf(s);Q>=0&&(t[Q]=!0)}let i=null;for(let s=0;st)&&e.p.parser.stateFlag(e.state,2)&&(!O||O.scorer.external(e,t)<<1|O}return r.get}var nO=1,rO=2,aO=3,PO=4,$O=5,B=98,XO=101,hO=102,K=114,oO=69,w=48,M=46,lO=43,SO=45,OO=35,eO=34,fO=124,cO=60,uO=62;function G(r){return r>=48&&r<=57}function _(r){return G(r)||r==95}var pO=new d((r,O)=>{if(G(r.next)){let e=!1;do r.advance();while(_(r.next));if(r.next==M){if(e=!0,r.advance(),G(r.next))do r.advance();while(_(r.next));else if(r.next==M||r.next>127||/\w/.test(String.fromCharCode(r.next)))return}if(r.next==XO||r.next==oO){if(e=!0,r.advance(),(r.next==lO||r.next==SO)&&r.advance(),!_(r.next))return;do r.advance();while(_(r.next))}if(r.next==hO){let t=r.peek(1);if(t==w+3&&r.peek(2)==w+2||t==w+6&&r.peek(2)==w+4)r.advance(3),e=!0;else return}e&&r.acceptToken($O)}else if(r.next==B||r.next==K){if(r.next==B&&r.advance(),r.next!=K)return;r.advance();let e=0;for(;r.next==OO;)e++,r.advance();if(r.next!=eO)return;r.advance();O:for(;;){if(r.next<0)return;let t=r.next==eO;if(r.advance(),t){for(let i=0;i{r.next==fO&&r.acceptToken(nO,1)}),WO=new d(r=>{r.next==cO?r.acceptToken(rO,1):r.next==uO&&r.acceptToken(aO,1)}),gO=N({"const macro_rules struct union enum type fn impl trait let static":X.definitionKeyword,"mod use crate":X.moduleKeyword,"pub unsafe async mut extern default move":X.modifier,"for if else loop while match continue break return await":X.controlKeyword,"as in ref":X.operatorKeyword,"where _ crate super dyn":X.keyword,self:X.self,String:X.string,Char:X.character,RawString:X.special(X.string),Boolean:X.bool,Identifier:X.variableName,"CallExpression/Identifier":X.function(X.variableName),BoundIdentifier:X.definition(X.variableName),"FunctionItem/BoundIdentifier":X.function(X.definition(X.variableName)),LoopLabel:X.labelName,FieldIdentifier:X.propertyName,"CallExpression/FieldExpression/FieldIdentifier":X.function(X.propertyName),Lifetime:X.special(X.variableName),ScopeIdentifier:X.namespace,TypeIdentifier:X.typeName,"MacroInvocation/Identifier MacroInvocation/ScopedIdentifier/Identifier":X.macroName,"MacroInvocation/TypeIdentifier MacroInvocation/ScopedIdentifier/TypeIdentifier":X.macroName,'"!"':X.macroName,UpdateOp:X.updateOperator,LineComment:X.lineComment,BlockComment:X.blockComment,Integer:X.integer,Float:X.float,ArithOp:X.arithmeticOperator,LogicOp:X.logicOperator,BitOp:X.bitwiseOperator,CompareOp:X.compareOperator,"=":X.definitionOperator,".. ... => ->":X.punctuation,"( )":X.paren,"[ ]":X.squareBracket,"{ }":X.brace,". DerefOp":X.derefOperator,"&":X.operator,", ; ::":X.separator,"Attribute/...":X.meta}),zO={__proto__:null,self:28,super:32,crate:34,impl:46,true:72,false:72,pub:88,in:92,const:96,unsafe:104,async:108,move:110,if:114,let:118,ref:142,mut:144,_:198,else:200,match:204,as:248,return:252,await:262,break:270,continue:276,while:312,loop:316,for:320,macro_rules:327,mod:334,extern:342,struct:346,where:364,union:379,enum:382,type:390,default:395,fn:396,trait:412,use:420,static:438,dyn:476},_O=Z.deserialize({version:14,states:"$2xQ]Q_OOP$wOWOOO&sQWO'#CnO)WQWO'#I`OOQP'#I`'#I`OOQQ'#Ie'#IeO)hO`O'#C}OOQR'#Ih'#IhO)sQWO'#IuOOQO'#Hk'#HkO)xQWO'#DpOOQR'#Iw'#IwO)xQWO'#DpO*ZQWO'#DpOOQO'#Iv'#IvO,SQWO'#J`O,ZQWO'#EiOOQV'#Hp'#HpO,cQYO'#F{OOQV'#El'#ElOOQV'#Em'#EmOOQV'#En'#EnO.YQ_O'#EkO0_Q_O'#EoO2gQWOOO4QQ_O'#FPO7hQWO'#J`OOQV'#FY'#FYO7{Q_O'#F^O:WQ_O'#FaOOQO'#F`'#F`O=sQ_O'#FcO=}Q_O'#FbO@VQWO'#FgOOQO'#J`'#J`OOQV'#Io'#IoOA]Q_O'#InOEPQWO'#InOOQV'#Fw'#FwOF[QWO'#JuOFcQWO'#F|OOQO'#IO'#IOOGrQWO'#GhOOQV'#Im'#ImOOQV'#Il'#IlOOQV'#Hj'#HjQGyQ_OOOKeQ_O'#DUOKlQYO'#CqOOQP'#I_'#I_OOQV'#Hg'#HgQ]Q_OOOLuQWO'#I`ONsQYO'#DXO!!eQWO'#JuO!!lQWO'#JuO!!vQ_O'#DfO!%]Q_O'#E}O!(sQ_O'#FWO!,ZQWO'#FZO!.^QXO'#FbO!.cQ_O'#EeO!!vQ_O'#FmO!0uQWO'#FoO!0zQWO'#FoO!1PQ^O'#FqO!1WQWO'#JuO!1_QWO'#FtO!1dQWO'#FxO!2WQWO'#JjO!2_QWO'#GOO!2_QWO'#G`O!2_QWO'#GbO!2_QWO'#GsOOQO'#Ju'#JuO!2dQWO'#GhO!2lQYO'#GpO!2_QWO'#GqO!3uQ^O'#GtO!3|QWO'#GuO!4hQWO'#HOP!4sOpO'#CcPOOO)CC})CC}OOOO'#Hi'#HiO!5OO`O,59iOOQV,59i,59iO!5ZQYO,5?aOOQO-E;i-E;iOOQO,5:[,5:[OOQP,59Z,59ZO)xQWO,5:[O)xQWO,5:[O!5oQWO,5?kO!5zQYO,5;qO!6PQYO,5;TO!6hQWO,59QO!7kQXO'#CnO!7xQXO'#I`O!9SQWO'#CoO,^QWO'#EiOOQV-E;n-E;nO!9eQWO'#FsOOQV,5WQWO,5:fOOQP,5:h,5:hO!1PQ^O,5:hO!1PQ^O,5:mO$>]QYO,5gQ_O'#HsO$>tQXO,5@QOOQV1G1i1G1iOOQP,5:e,5:eO$>|QXO,5]QYO,5=vO$LRQWO'#KRO$L^QWO,5=xOOQR,5=y,5=yO$LcQWO,5=zO$>]QYO,5>PO$>]QYO,5>POOQO1G.w1G.wO$>]QYO1G.wO$LnQYO,5=pO$LvQZO,59^OOQR,59^,59^O$>]QYO,5=wO% YQZO,5=}OOQR,5=},5=}O%#lQWO1G/_O!6PQYO1G/_O#FYQYO1G2vO%#qQWO1G2vO%$PQYO1G2vOOQV1G/i1G/iO%%YQWO,5:SO%%bQ_O1G/lO%*kQWO1G1^O%+RQWO1G1hOOQO1G1h1G1hO$>]QYO1G1hO%+iQ^O'#EgOOQV1G0k1G0kOOQV1G1s1G1sO!!vQ_O1G1sO!0zQWO1G1uO!1PQ^O1G1wO!.cQ_O1G1wOOQP,5:j,5:jO$>]QYO1G/^OOQO'#Cn'#CnO%+vQWO1G1zOOQV1G2O1G2OO%,OQWO'#CnO%,WQWO1G3TO%,]QWO1G3TO%,bQYO'#GQO%,sQWO'#G]O%-UQYO'#G_O%.hQYO'#GXOOQV1G2U1G2UO%/wQWO1G2UO%/|QWO1G2UO$ARQWO1G2UOOQV1G2f1G2fO%/wQWO1G2fO#CpQWO1G2fO%0UQWO'#GdOOQV1G2h1G2hO%0gQWO1G2hO#C{QWO1G2hO%0lQYO'#GSO$>]QYO1G2lO$AdQWO1G2lOOQV1G2y1G2yO%1xQWO1G2yO%3hQ^O'#GkO%3rQWO1G2nO#DfQWO1G2nO%4QQYO,5]QYO1G2vOOQV1G2w1G2wO%5tQWO1G2wO%5yQWO1G2wO#HXQWO1G2wOOQV1G2z1G2zO.YQ_O1G2zO$>]QYO1G2zO%6RQWO1G2zOOQO,5>l,5>lOOQO-E]QYO1G3UPOOO-E;d-E;dPOOO1G.i1G.iOOQO7+*g7+*gO%7VQYO'#IcO%7nQYO'#IfO%7yQYO'#IfO%8RQYO'#IfO%8^QYO,59eOOQO7+%b7+%bOOQP7+$a7+$aO%8cQ!fO'#JTOOQS'#EX'#EXOOQS'#EY'#EYOOQS'#EZ'#EZOOQS'#JT'#JTO%;UQWO'#EWOOQS'#E`'#E`OOQS'#JR'#JROOQS'#Hn'#HnO%;ZQ!fO,5:oOOQV,5:o,5:oOOQV'#JQ'#JQO%;bQ!fO,5:{OOQV,5:{,5:{O%;iQ!fO,5:|OOQV,5:|,5:|OOQV7+'e7+'eOOQV7+&Z7+&ZO%;pQ!fO,59TOOQO,59T,59TO%>YQWO7+$WO%>_QWO1G1yOOQV1G1y1G1yO!9SQWO1G.uO%>dQWO,5?}O%>nQ_O'#HqO%@|QWO,5?}OOQO1G1X1G1XOOQO7+&}7+&}O%AUQWO,5>^OOQO-E;p-E;pO%AcQWO7+'OO.YQ_O7+'OOOQO7+'O7+'OOOQO7+'P7+'PO%AjQWO7+'POOQO7+'W7+'WOOQP1G0V1G0VO%ArQXO1G/tO!M{QWO1G/tO%BsQXO1G0RO%CkQ^O'#HlO%C{QWO,5?eOOQP1G/u1G/uO%DWQWO1G/uO%D]QWO'#D_OOQO'#Dt'#DtO%DhQWO'#DtO%DmQWO'#I{OOQO'#Iz'#IzO%DuQWO,5:_O%DzQWO'#DtO%EPQWO'#DtOOQP1G0Q1G0QOOQP1G0S1G0SOOQP1G0X1G0XO%EXQXO1G1jO%EdQXO'#FeOOQP,5>_,5>_O!1PQ^O'#FeOOQP-E;q-E;qO$>]QYO1G1jOOQO7+'S7+'SOOQO,5]QYO7+$xOOQV7+'j7+'jO%FsQWO7+(oO%FxQWO7+(oOOQV7+'p7+'pO%/wQWO7+'pO%F}QWO7+'pO%GVQWO7+'pOOQV7+(Q7+(QO%/wQWO7+(QO#CpQWO7+(QOOQV7+(S7+(SO%0gQWO7+(SO#C{QWO7+(SO$>]QYO7+(WO%GeQWO7+(WO#HUQYO7+(cO%GjQWO7+(YO#DfQWO7+(YOOQV7+(c7+(cO%5tQWO7+(cO%5yQWO7+(cO#HXQWO7+(cOOQV7+(g7+(gO$>]QYO7+(pO%GxQWO7+(pO!1dQWO7+(pOOQV7+$v7+$vO%G}QWO7+$vO%HSQZO1G3ZO%JfQWO1G4jOOQO1G4j1G4jOOQR1G.}1G.}O#.WQWO1G.}O%JkQWO'#KQOOQO'#HW'#HWO%J|QWO'#HXO%KXQWO'#KQOOQO'#KP'#KPO%KaQWO,5=qO%KfQYO'#H[O%LrQWO'#GmO%L}QYO'#CtO%MXQWO'#GmO$>]QYO1G3ZOOQR1G3g1G3gO#7aQWO1G3ZO%M^QZO1G3bO$>]QYO1G3bO& mQYO'#IVO& }QWO,5@mOOQR1G3d1G3dOOQR1G3f1G3fO.YQ_O1G3fOOQR1G3k1G3kO&!VQYO7+$cO&!_QYO'#KOOOQQ'#J}'#J}O&!gQYO1G3[O&!lQZO1G3cOOQQ7+$y7+$yO&${QWO7+$yO&%QQWO7+(bOOQV7+(b7+(bO%5tQWO7+(bO$>]QYO7+(bO#FYQYO7+(bO&%YQWO7+(bO!.cQ_O1G/nO&%hQWO7+%WO$?[QWO7+'SO&%pQWO'#EhO&%{Q^O'#EhOOQU'#Ho'#HoO&%{Q^O,5;ROOQV,5;R,5;RO&&VQWO,5;RO&&[Q^O,5;RO!0zQWO7+'_OOQV7+'a7+'aO&&iQWO7+'cO&&qQWO7+'cO&&xQWO7+$xO&'TQ!fO7+'fO&'[Q!fO7+'fOOQV7+(o7+(oO!1dQWO7+(oO&'cQYO,5]QYO'#JrOOQO'#Jq'#JqO&*YQWO,5]QYO'#GUO&,SQYO'#JkOOQQ,5]QYO7+(YO&0SQYO'#HxO&0hQYO1G2WOOQQ1G2W1G2WOOQQ,5]QYO,5]QYO7+(fO&1dQWO'#IRO&1nQWO,5@hOOQO1G3Q1G3QOOQO1G2}1G2}OOQO1G3P1G3POOQO1G3R1G3ROOQO1G3S1G3SOOQO1G3O1G3OO&1vQWO7+(pO$>]QYO,59fO&2RQ^O'#ISO&2xQYO,5?QOOQR1G/P1G/PO&3QQ!bO,5:pO&3VQ!fO,5:rOOQS-E;l-E;lOOQV1G0Z1G0ZOOQV1G0g1G0gOOQV1G0h1G0hO&3^QWO'#JTOOQO1G.o1G.oOOQV<]O&3qQWO,5>]OOQO-E;o-E;oOOQO<WOOQO-E;j-E;jOOQP7+%a7+%aO!1PQ^O,5:`O&5cQWO'#HmO&5wQWO,5?gOOQP1G/y1G/yOOQO,5:`,5:`O&6PQWO,5:`O%DzQWO,5:`O$>]QYO,5`,5>`OOQO-E;r-E;rOOQV7+'l7+'lO&6yQWO<]QYO<]QYO<]QYO<]QYO7+(uOOQO7+*U7+*UOOQR7+$i7+$iO&8cQWO,5@lOOQO'#Gm'#GmO&8kQWO'#GmO&8vQYO'#IUO&8cQWO,5@lOOQR1G3]1G3]O&:cQYO,5=vO&;rQYO,5=XO&;|QWO,5=XOOQO,5=X,5=XOOQR7+(u7+(uO&eQZO7+(|O&@tQWO,5>qOOQO-E]QYO<]QYO,5]QYO,5@^O&D^QYO'#H|O&EsQWO,5@^OOQO1G2e1G2eO%,nQWO,5]QYO,5PO&I]QYO,5@VOOQV<]QYO,5=WO&KuQWO,5@cO&K}QWO,5@cO&MvQ^O'#IPO&KuQWO,5@cOOQO1G2q1G2qO&NTQWO,5=WO&N]QWO<oO&NvQYO,5>dO' UQYO,5>dOOQQ,5>d,5>dOOQQ-E;v-E;vOOQQ7+'r7+'rO' aQYO1G2]O$>]QYO1G2^OOQV<m,5>mOOQO-EnOOQQ,5>n,5>nO'!fQYO,5>nOOQQ-EX,5>XOOQO-E;k-E;kO!1PQ^O1G/zOOQO1G/z1G/zO'%oQWO1G/zO'%tQXO1G1kO$>]QYO1G1kO'&PQWO7+'[OOQVANA`ANA`O'&ZQWOANA`O$>]QYOANA`O'&cQWOANA`OOQVAN>OAN>OO.YQ_OAN>OO'&qQWOANAuOOQVAN@vAN@vO'&vQWOAN@vOOQVANAWANAWOOQVANAYANAYOOQVANA^ANA^O'&{QWOANA^OOQVANAiANAiO%5tQWOANAiO%5yQWOANAiO''TQWOANA`OOQVANAvANAvO.YQ_OANAvO''cQWOANAvO$>]QYOANAvOOQR<pOOQO'#HY'#HYO''vQWO'#HZOOQO,5>p,5>pOOQO-E]QYO<o,5>oOOQQ-E]QYOANAhO'(bQWO1G1rO')UQ^O1G0nO.YQ_O1G0nO'*zQWO,5;UO'+RQWO1G0nP'+WQWO'#ERP&%{Q^O'#HpOOQV7+&X7+&XO'+cQWO7+&XO&&qQWOAN@iO'+hQWOAN>OO!5oQWO,5a,5>aO'+oQWOAN@lO'+tQWOAN@lOOQS-E;s-E;sOOQVAN@lAN@lO'+|QWOAN@lOOQVANAuANAuO',UQWO1G5vO',^QWO1G2dO$>]QYO1G2dO&'|QWO,5>gOOQO,5>g,5>gOOQO-E;y-E;yO',iQWO1G5xO',qQWO1G5xO&(nQYO,5>hO',|QWO,5>hO$>]QYO,5>hOOQO-E;z-E;zO'-XQWO'#JnOOQO1G2a1G2aOOQO,5>f,5>fOOQO-E;x-E;xO&'cQYO,5iOOQO,5>i,5>iOOQO-E;{-E;{OOQQ,5>c,5>cOOQQ-E;u-E;uO'.pQWO1G2sO'/QQWO1G2rO'/]QWO1G5}O'/eQ^O,5>kOOQO'#Go'#GoOOQO,5>k,5>kO'/lQWO,5>kOOQO-E;}-E;}O$>]QYO1G2rO'/zQYO7+'xO'0VQWOANAlOOQVANAlANAlO.YQ_OANAlO'0^QWOANAvOOQS7+%x7+%xO'0eQWO7+%xO'0pQ!fO7+%xO'0}QWO7+%fO!1PQ^O7+%fO'1YQXO7+'VOOQVG26zG26zO'1eQWOG26zO'1sQWOG26zO$>]QYOG26zO'1{QWOG23jOOQVG27aG27aOOQVG26bG26bOOQVG26xG26xOOQVG27TG27TO%5tQWOG27TO'2SQWOG27bOOQVG27bG27bO.YQ_OG27bO'2ZQWOG27bOOQO1G4[1G4[OOQO7+(_7+(_OOQRANA{ANA{OOQVG27SG27SO%5tQWOG27SO&0uQWOG27SO'2fQ^O7+&YO'4PQWO7+'^O'4sQ^O7+&YO.YQ_O7+&YP.YQ_O,5;SP'6PQWO,5;SP'6UQWO,5;SOOQV<]QYO1G4SO%,nQWO'#HyO'7UQWO,5@YO'7dQWO7+(VO.YQ_O7+(VOOQO1G4T1G4TOOQO1G4V1G4VO'7nQWO1G4VO'7|QWO7+(^OOQVG27WG27WO'8XQWOG27WOOQS<e,5>eOOQO-E;w-E;wO'?rQWO<wD_DpPDvHQPPPPPPK`P! P! _PPPPP!!VP!$oP!$oPP!&oP!(rP!(w!)n!*f!*f!*f!(w!+]P!(w!.Q!.TPP!.ZP!(w!(w!(w!(wP!(w!(wP!(w!(w!.y!/dP!/dJ}J}J}PPPP!/d!.y!/sPP!$oP!0^!0a!0g!1h!1t!3t!3t!5r!7t!1t!1t!9p!;_!=O!>k!@U!Am!CS!De!1t!1tP!1tP!1t!1t!Et!1tP!Ge!1t!1tP!Ie!1tP!1t!7t!7t!1t!7t!1t!Kl!Mt!Mw!7t!1t!Mz!M}!M}!M}!NR!$oP!$oP!$oP! P! PP!N]! P! PP!Ni# }! PP! PP#!^##c##k#$Z#$_#$e#$e#$mP#&s#&s#&y#'o#'{! PP! PP#(]#(l! PP! PPP#(x#)W#)d#)|#)^! P! PP! P! P! PP#*S#*S#*Y#*`#*S#*S! P! PP#*m#*v#+Q#+Q#,x#.l#.x#.x#.{#.{5a5a5a5a5a5a5a5aP5a#/O#/U#/p#1{#2R#2b#6^#6d#6j#6|#7W#8w#9R#9b#9h#9n#9x#:S#:Y#:g#:m#:s#:}#;]#;g#=u#>R#>`#>f#>n#>u#?PPPPPPPP#?V#BaP#F^#Jx#Ls#Nr$&^P$&aPPP$)_$)h$)z$/U$1d$1m$3fP!(w$4`$7r$:i$>T$>^$>c$>fPPP$>i$A`$A|P$BaPPPPPPPPPP$BvP$EU$EX$E[$Eb$Ee$Eh$Ek$En$Et$HO$HR$HU$HX$H[$H_$Hb$He$Hh$Hk$Hn$Jt$Jw$Jz#*S$KW$K^$Ka$Kd$Kh$Kl$Ko$KrQ!tPT'V!s'Wi!SOlm!P!T$T$W$y%b)U*f/gQ'i#QR,n'l(OSOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%X%_%b&U&Y&[&b&u&z&|'P'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n+z,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1P1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:gS(z$v-oQ*p&eQ*t&hQ-k(yQ-y)ZW0Z+Q0Y4Z7UR4Y0[&w!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#r]Ofgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hb#[b#Q$y'l(b)S)U*Z-t!h$bo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m$b%k!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g!W:y!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:|%n$_%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g$e%l!Q!n$O$u%n%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g'hZOY[fgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r%_%b%i%j&U&Y&[&b&u'a'}(W(Y(d(e(f(j(o(p(r(|)i)p)q*f*i*k*l+Z+n,s,z-R-T-g-m.i.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:x$^%l!Q!n$O$u%n%o%p%q%y%{&P&p&r(q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ&j!hQ&k!iQ&l!jQ&m!kQ&s!oQ)[%QQ)]%RQ)^%SQ)_%TQ)b%WQ+`&oS,R']1ZQ.W)`S/r*u4TR4n0s+yTOY[bfgilmop!O!P!Q!T!Y!Z![!_!`!c!n!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$O$T$W$`$a$e$g$h$q$r$u$y%X%_%b%i%j%n%o%p%q%y%{&P&U&Y&[&b&o&p&r&u&z&|'P']'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(q(r(|)S)U)i)p)q)s)x)y*O*P*R*V*Z*[*^*e*f*i*k*l*n*w*x+U+V+Z+h+n+o+z+},q,s,z-R-T-g-i-m-t-v.U.`.i.p.t.x.y.}/Z/[/^/b/d/g/{/}0`0e0g0m0r0w0}1O1P1Y1Z1h1r1y1|2a2h2j2m2s2v3V3_3a3f3h3k3u3{3|4R4U4W4_4c4e4h4t4v4|5[5`5d5g5t5v6R6Y6]6a6p6v6x7S7^7c7g7m7r7{8W8X8g8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:xQ'[!xQ'h#PQ)l%gU)r%m*T*WR.f)kQ,T']R5P1Z#t%s!Q!n$O$u%p%q&P&p&r(q)x)y*O*R*V*[*^*e*n*w+V+h+o+}-i-v.U.`.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2v3V3u3{3|4U4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)x%oQ+_&oQ,U']n,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7kS.q)s2sQ/O*PQ/Q*SQ/q*uS0Q*x4RQ0a+U[0o+Z.j0g4h5y7^Q2v.pS4d0e2rQ4m0sQ5Q1ZQ6T3RQ6z4PQ7O4TQ7X4_R9Y8h&jVOfgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u']'}(W(Y(b(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1Z1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fU&g!g%P%[o,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7k$nsOfgilm!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y'}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9z9{:O:P:Q:R:S:T:U:V:W:X:Y:eS$tp9xS&O!W#bS&Q!X#cQ&`!bQ*_&RQ*a&VS*d&[:fQ*h&^Q,T']Q-j(wQ/i*jQ0p+[S2f.X0qQ3]/_Q3^/`Q3g/hQ3i/kQ5P1ZU5b2R2g4lU7o5c5e5rQ8]6dS8u7p7qS9_8v8wR9i9`i{Ob!O!P!T$y%_%b)S)U)i-thxOb!O!P!T$y%_%b)S)U)i-tW/v*v/t3w6qQ/}*wW0[+Q0Y4Z7UQ3{/{Q6x3|R8g6v!h$do!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ&d!dQ&f!fQ&n!mW&x!q%X&|1PQ'S!rQ)X$}Q)Y%OQ)a%VU)d%Y'T'UQ*s&hS+s&z'PS-Y(k1sQ-u)WQ-x)ZS.a)e)fS0x+c/sQ1S+zQ1W+{S1v-_-`Q2k.bQ3s/pQ5]1xR5h2V${sOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$zsOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR3]/_V&T!Y!`*i!i$lo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!k$^o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!i$co!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&e^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR(l$fQ-[(kR5Y1sQ(S#|S({$v-oS-Z(k1sQ-l(yW/u*v/t3w6qS1w-_-`Q3v/vR5^1xQ'e#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,o'mk,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ'f#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,p'mR*g&]X/c*f/d/g3f!}aOb!O!P!T#z$v$y%_%b'}(y)S)U)i)s*f*v*w+Q+Z,s-o-t.j/b/d/g/t/{0Y0g1h2s3f3w3|4Z4h5y6a6q6v7U7^Q3`/aQ6_3bQ8Y6`R9V8Z${rOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#nfOfglmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!T9u!Y!_!`*i*l/^3h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#rfOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!X9u!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$srOfglmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#U#oh#d$P$Q$V$s%^&W&X'q't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b}:P&S&]/k3[6d:[:]:c:d:h:j:k:l:m:n:o:p:q:r:v:w:{#W#ph#d$P$Q$V$s%^&W&X'q'r't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b!P:Q&S&]/k3[6d:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{#S#qh#d$P$Q$V$s%^&W&X'q'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b{:R&S&]/k3[6d:[:]:c:d:h:k:l:m:n:o:p:q:r:v:w:{#Q#rh#d$P$Q$V$s%^&W&X'q'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9by:S&S&]/k3[6d:[:]:c:d:h:l:m:n:o:p:q:r:v:w:{#O#sh#d$P$Q$V$s%^&W&X'q'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bw:T&S&]/k3[6d:[:]:c:d:h:m:n:o:p:q:r:v:w:{!|#th#d$P$Q$V$s%^&W&X'q'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bu:U&S&]/k3[6d:[:]:c:d:h:n:o:p:q:r:v:w:{!x#vh#d$P$Q$V$s%^&W&X'q'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bq:W&S&]/k3[6d:[:]:c:d:h:p:q:r:v:w:{!v#wh#d$P$Q$V$s%^&W&X'q'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bo:X&S&]/k3[6d:[:]:c:d:h:q:r:v:w:{$]#{h#`#d$P$Q$V$s%^&S&W&X&]'q'r's't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n/k0z1i1l1}3P3[4w5V5a6^6d6e7R7e7h7s7y8j8q8{9[9b:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{${jOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$v!aOfgilmp!O!P!T!Y!Z!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ&Y![Q&Z!]R:e9{#rpOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hQ&[!^!W9x!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:f:zR$moR-f(rR$wqT(}$v-oQ/f*fS3d/d/gR6c3fQ3m/mQ3p/nQ6i3nR6l3qQ$zwQ)V${Q*q&fQ+f&qQ+i&sQ-w)YW.Z)b+j+k+lS/X*]+gW2b.W.[.].^U3W/Y/]0yU5o2c2d2eS6W3X3ZS7w5p5qS8Q6V6XQ8y7xS8}8R8SR9c9O^|O!O!P!T%_%b)iX)R$y)S)U-tQ&r!nQ*^&PQ*|&jQ+P&kQ+T&lQ+W&mQ+]&nQ+l&sQ-})[Q.Q)]Q.T)^Q.V)_Q.Y)aQ.^)bQ2S-uQ2e.WR4U0VU+a&o*u4TR4o0sQ+Y&mQ+k&sS.])b+l^0v+_+`/q/r4m4n7OS2d.W.^S4Q0R0SR5q2eS0R*x4RQ0a+UR7X4_U+d&o*u4TR4p0sQ*z&jQ+O&kQ+S&lQ+g&qQ+j&sS-{)[*|S.P)]+PS.S)^+TU.[)b+k+lQ/Y*]Q0X*{Q0q+[Q2X-|Q2Y-}Q2].QQ2_.TU2c.W.].^Q2g.XS3Z/]0yS5c2R4lQ5j2ZS5p2d2eQ6X3XS7q5e5rQ7x5qQ8R6VQ8v7pQ9O8SR9`8wQ0T*xR6|4RQ*y&jQ*}&kU-z)[*z*|U.O)]+O+PS2W-{-}S2[.P.QQ4X0ZQ5i2YQ5k2]R7T4YQ/w*vQ3t/tQ6r3wR8d6qQ*{&jS-|)[*|Q2Z-}Q4X0ZR7T4YQ+R&lU.R)^+S+TS2^.S.TR5l2_Q0]+QQ4V0YQ7V4ZR8l7UQ+[&nS.X)a+]S2R-u.YR5e2SQ0i+ZQ4f0gQ7`4hR8m7^Q.m)sQ0i+ZQ2p.jQ4f0gQ5|2sQ7`4hQ7}5yR8m7^Q0i+ZR4f0gX'O!q%X&|1PX&{!q%X&|1PW'O!q%X&|1PS+u&z'PR1U+z_|O!O!P!T%_%b)iQ%a!PS)h%_%bR.d)i$^%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ*U%yR*X%{$c%n!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gW)t%m%x*T*WQ.e)jR2{.vR.m)sR5|2sQ'W!sR,O'WQ!TOQ$TlQ$WmQ%b!P[%|!T$T$W%b)U/gQ)U$yR/g*f$b%i!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g[)n%i)p.i:`:t:xQ)p%jQ.i)qQ:`%nQ:t:aR:x:uQ!vUR'Y!vS!OO!TU%]!O%_)iQ%_!PR)i%b#rYOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hh!yY!|#U$`'a'n(d,q-R9s9|:gQ!|[b#Ub#Q$y'l(b)S)U*Z-t!h$`o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ'a!}Q'n#ZQ(d$aQ,q'oQ-R(e!W9s!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ9|9tR:g9}Q-U(gR1p-UQ1t-[R5Z1tQ,c'bQ,f'cQ,h'dW1`,c,f,h5UR5U1_Q/d*fS3c/d3fR3f/gfbO!O!P!T$y%_%b)S)U)i-tp#Wb'}(y.j/b/t/{0Y0g1h5y6a6q6v7U7^Q'}#zS(y$v-oQ.j)sW/b*f/d/g3fQ/t*vQ/{*wQ0Y+QQ0g+ZQ1h,sQ5y2sQ6q3wQ6v3|Q7U4ZR7^4hQ,t(OQ1g,rT1j,t1gS(X$Q([Q(^$VU,x(X(^,}R,}(`Q(s$mR-h(sQ-p)OR2P-pQ3n/mQ3q/nT6j3n3qQ)S$yS-r)S-tR-t)UQ4`0aR7Y4``0t+^+_+`+a+d/q/r7OR4q0tQ8i6zR9Z8iQ4S0TR6}4SQ3x/wQ6n3tT6s3x6nQ3}/|Q6t3zU6y3}6t8eR8e6uQ4[0]Q7Q4VT7W4[7QhzOb!O!P!T$y%_%b)S)U)i-tQ$|xW%Zz$|%f)v$b%f!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR)v%nS4i0i0nS7]4f4gT7b4i7]W&z!q%X&|1PS+r&z+zR+z'PQ1Q+wR4z1QU1[,S,T,UR5R1[S3S/Q7OR6U3SQ2t.mQ5x2pT5}2t5xQ.z)zR3O.z^_O!O!P!T%_%b)iY#Xb$y)S)U-t$l#_fgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!h$io!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'j#Q'lQ-P(bR/V*Z&v!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!{Y[#U#Z9s9tW&{!q%X&|1P['`!|!}'n'o9|9}S(c$`$aS+t&z'PU,X'a,q:gS-Q(d(eQ1T+zR1n-RS%t!Q&oQ&q!nQ(V$OQ(w$uS)w%o.pQ)z%pQ)}%qS*]&P&rQ+e&pQ,S']Q-d(qQ.l)sU.w)x)y2vS/O*O*PQ/P*RQ/T*VQ/W*[Q/]*^Q/`*eQ/l*nQ/|*wS0S*x4RQ0a+UQ0c+VQ0y+hQ0{+oQ1X+}Q1{-iQ2T-vQ2`.UQ2i.`Q2z.tQ2|.xQ2}.yQ3X/ZQ3Y/[S3z/{/}Q4^0`Q4l0rQ4s0wQ4x1OQ4}1YQ5O1ZQ5_1yQ5n2aQ5r2hQ5u2jQ5w2mQ5{2sQ6V3VQ6o3uQ6u3{Q6w3|Q7P4UQ7X4_Q7[4eQ7d4tQ7n5`Q7p5dQ7|5vQ8P6RQ8S6YQ8c6pS8f6v6xQ8o7cQ8w7rR9X8g$^%m!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)j%nQ*T%yR*W%{$y%h!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x'pWOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$x%g!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x_&y!q%X&z&|'P+z1PR,V']$zrOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!j$]o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ,T']R5P1Z_}O!O!P!T%_%b)i^|O!O!P!T%_%b)iQ#YbX)R$y)S)U-tbhO!O!T3_6]8W8X9U9hS#`f9uQ#dgQ$PiQ$QlQ$VmQ$spW%^!P%_%b)iU&S!Y!`*iQ&W!ZQ&X![Q&]!_Q'q#eQ'r#oS's#p:QQ't#qQ'u#rQ'v#sQ'w#tQ'x#uQ'y#vQ'z#wQ'{#xQ'|#yQ(O#zQ(U#}Q([$TQ(`$WQ*b&YQ*c&[Q,r'}Q,w(WQ,y(YQ-n(|Q/k*lQ0z+nQ1i,sQ1l,zQ1}-mQ3P.}Q3[/^Q4w0}Q5V1hQ5a1|Q6^3aQ6d3hQ6e3kQ7R4WQ7e4vQ7h4|Q7s5gQ7y5tQ8j7SQ8q7gQ8{7{Q9[8kQ9b8|Q:[9wQ:]9xQ:c9zQ:d9{Q:h:OQ:i:PQ:j:RQ:k:SQ:l:TQ:m:UQ:n:VQ:o:WQ:p:XQ:q:YQ:r:ZQ:v:eQ:w:fR:{9v^tO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6[3_Q8V6]Q9R8WQ9T8XQ9g9UR9m9hQ&V!YQ&^!`R/h*iQ$joQ&a!cQ&t!pU(g$e$g(jS(n$h0eQ(u$qQ(v$rQ*`&UQ*m&bQ+p&uQ-S(fS-b(o4cQ-c(pQ-e(rW/a*f/d/g3fQ/j*kW0f+Z0g4h7^Q1o-TQ1z-gQ3b/bQ4k0mQ5X1rQ7l5[Q8Z6aR8t7m!h$_o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mR-P(b'qXOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$zqOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$fo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&d^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!zY[$`$a9s9t['_!|!}(d(e9|9}W)o%i%j:`:aU,W'a-R:gW.h)p)q:t:uT2o.i:xQ(i$eQ(m$gR-W(jV(h$e$g(jR-^(kR-](k$znOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$ko!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'g#O'pj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ,m'jQ.u)uR8_6f`,b'b'c'd,c,f,h1_5UQ1e,lX3l/m/n3n3qj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ7j5TR8s7k^uO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6Z3_Q8U6]Q9Q8WQ9S8XQ9f9UR9l9hR(Q#zR(P#zQ$SlR(]$TR$ooR$noR)Q$vR)P$vQ)O$vR2O-ohwOb!O!P!T$y%_%b)S)U)i-t$l!lz!Q!n$O$u$|%f%n%o%p%q%y%{&P&o&p&r'](q)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR${xR0b+UR0W*xR0U*xR6{4PR/y*vR/x*vR0P*wR0O*wR0_+QR0^+Q%XyObxz!O!P!Q!T!n$O$u$y$|%_%b%f%n%o%p%q%y%{&P&o&p&r'](q)S)U)i)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-t-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR0k+ZR0j+ZQ'R!qQ)c%XQ+w&|R4y1PX'Q!q%X&|1PR+y&|R+x&|T/S*S4TT/R*S4TR.o)sR.n)sR){%p",nodeNames:"\u26A0 | < > RawString Float LineComment BlockComment SourceFile ] InnerAttribute ! [ MetaItem self Metavariable super crate Identifier ScopedIdentifier :: QualifiedScope AbstractType impl SelfType MetaType TypeIdentifier ScopedTypeIdentifier ScopeIdentifier TypeArgList TypeBinding = Lifetime String Escape Char Boolean Integer } { Block ; ConstItem Vis pub ( in ) const BoundIdentifier : UnsafeBlock unsafe AsyncBlock async move IfExpression if LetDeclaration let LiteralPattern ArithOp MetaPattern SelfPattern ScopedIdentifier TuplePattern ScopedTypeIdentifier , StructPattern FieldPatternList FieldPattern ref mut FieldIdentifier .. RefPattern SlicePattern CapturedPattern ReferencePattern & MutPattern RangePattern ... OrPattern MacroPattern ParenthesizedTokens TokenBinding Identifier TokenRepetition ArithOp BitOp LogicOp UpdateOp CompareOp -> => ArithOp BracketedTokens BracedTokens _ else MatchExpression match MatchBlock MatchArm Attribute Guard UnaryExpression ArithOp DerefOp LogicOp ReferenceExpression TryExpression BinaryExpression ArithOp ArithOp BitOp BitOp BitOp BitOp LogicOp LogicOp AssignmentExpression TypeCastExpression as ReturnExpression return RangeExpression CallExpression ArgList AwaitExpression await FieldExpression GenericFunction BreakExpression break LoopLabel ContinueExpression continue IndexExpression ArrayExpression TupleExpression MacroInvocation UnitExpression ClosureExpression ParamList Parameter Parameter ParenthesizedExpression StructExpression FieldInitializerList ShorthandFieldInitializer FieldInitializer BaseFieldInitializer MatchArm WhileExpression while LoopExpression loop ForExpression for MacroInvocation MacroDefinition macro_rules MacroRule EmptyStatement ModItem mod DeclarationList AttributeItem ForeignModItem extern StructItem struct TypeParamList ConstrainedTypeParameter TraitBounds HigherRankedTraitBound RemovedTraitBound OptionalTypeParameter ConstParameter WhereClause where LifetimeClause TypeBoundClause FieldDeclarationList FieldDeclaration OrderedFieldDeclarationList UnionItem union EnumItem enum EnumVariantList EnumVariant TypeItem type FunctionItem default fn ParamList Parameter SelfParameter VariadicParameter VariadicParameter ImplItem TraitItem trait AssociatedType LetDeclaration UseDeclaration use ScopedIdentifier UseAsClause ScopedIdentifier UseList ScopedUseList UseWildcard ExternCrateDeclaration StaticItem static ExpressionStatement ExpressionStatement GenericType FunctionType ForLifetimes ParamList VariadicParameter Parameter VariadicParameter Parameter ReferenceType PointerType TupleType UnitType ArrayType MacroInvocation EmptyType DynamicType dyn BoundedType",maxTerm:359,nodeProps:[["isolate",-4,4,6,7,33,""],["group",-42,4,5,14,15,16,17,18,19,33,35,36,37,40,51,53,56,101,107,111,112,113,122,123,125,127,128,130,132,133,134,137,139,140,141,142,143,144,148,149,155,157,159,"Expression",-16,22,24,25,26,27,222,223,230,231,232,233,234,235,236,237,239,"Type",-20,42,161,162,165,166,169,170,172,188,190,194,196,204,205,207,208,209,217,218,220,"Statement",-17,49,60,62,63,64,65,68,74,75,76,77,78,80,81,83,84,99,"Pattern"],["openedBy",9,"[",38,"{",47,"("],["closedBy",12,"]",39,"}",45,")"]],propSources:[gO],skippedNodes:[0,6,7,240],repeatNodeCount:32,tokenData:"$%h_R!XOX$nXY5gYZ6iZ]$n]^5g^p$npq5gqr7Xrs9cst:Rtu;Tuv>vvwAQwxCbxy!+Tyz!,Vz{!-X{|!/_|}!0g}!O!1i!O!P!3v!P!Q!8[!Q!R!Bw!R![!Dr![!]#+q!]!^#-{!^!_#.}!_!`#1b!`!a#3o!a!b#6S!b!c#7U!c!}#8W!}#O#:T#O#P#;V#P#Q#Cb#Q#R#Dd#R#S#8W#S#T$n#T#U#8W#U#V#El#V#f#8W#f#g#Ic#g#o#8W#o#p$ S#p#q$!U#q#r$$f#r${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nU$u]'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU%uV'_Q'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&aV'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&yVOz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`S'cVOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S'{UOz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`S(bUOz(t{!P(t!P!Q(_!Q;'S(t;'S;=`*a<%lO(tS(wVOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)eV'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)}UOz(tz{)z{!P(t!Q;'S(t;'S;=`*a<%lO(tS*dP;=`<%l(tS*jP;=`<%l)^S*pP;=`<%l'`S*vP;=`<%l&[S+OO'PSU+T]'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U,R]'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU-P]'_QOY+|YZ-xZr+|rs'`sz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U-}V'_QOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[Q.iV'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.dQ/TO'_QQ/WP;=`<%l.dU/`]'_QOY0XYZ3uZr0Xrs(tsz0Xz{.d{!P0X!P!Q/Z!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU0^]'_QOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU1`]'_Q'PS'OSOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU2bV'_Q'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U2|]'_QOY0XYZ3uZr0Xrs(tsz0Xz{2w{!P0X!P!Q.d!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU3zV'_QOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U4dP;=`<%l0XU4jP;=`<%l1VU4pP;=`<%l+|U4vP;=`<%l$nU5QV'_Q'PSOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_5p]'_Q&|X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_6rV'_Q&|X'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_7b_ZX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_8j]#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_9lV']Q'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_:[]'QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_;^i'_Q'vW'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_=Uj'_Q_X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![<{![!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_?P_(TP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_@X]#OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_AZa!qX'_Q'OSOY$nYZ%nZr$nrs&[sv$nvwB`wz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Bi]'}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Cik'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q!cE^!c!}Lp!}#OE^#O#P!!l#P#RE^#R#SLp#S#TE^#T#oLp#o${E^${$|Lp$|4wE^4w5bLp5b5iE^5i6SLp6S;'SE^;'S;=`!*}<%lOE^_Ee_'_Q'OSOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Fm]'_Q'OSsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_GmX'_Q'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]HaV'OSsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]H{X'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_Im_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Js]'_QsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Kq_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Lyl'_Q'OS'ZXOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n_Nzj'_Q'OS'ZXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n]!!qZ'OSOzHvz{!#d{!PHv!P!Q!$n!Q#iHv#i#j!%Z#j#lHv#l#m!'V#m;'SHv;'S;=`!*w<%lOHv]!#gXOw'`wx!$Sxz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`]!$XVsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]!$qWOw'`wx!$Sxz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`]!%`^'OSOz&[z{&v{!P&[!P!Q'x!Q![!&[![!c&[!c!i!&[!i#T&[#T#Z!&[#Z#o&[#o#p!({#p;'S&[;'S;=`*s<%lO&[]!&a['OSOz&[z{&v{!P&[!P!Q'x!Q![!'V![!c&[!c!i!'V!i#T&[#T#Z!'V#Z;'S&[;'S;=`*s<%lO&[]!'[['OSOz&[z{&v{!P&[!P!Q'x!Q![!(Q![!c&[!c!i!(Q!i#T&[#T#Z!(Q#Z;'S&[;'S;=`*s<%lO&[]!(V['OSOz&[z{&v{!P&[!P!Q'x!Q![Hv![!c&[!c!iHv!i#T&[#T#ZHv#Z;'S&[;'S;=`*s<%lO&[]!)Q['OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z;'S&[;'S;=`*s<%lO&[]!){^'OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z#q&[#q#rHv#r;'S&[;'S;=`*s<%lO&[]!*zP;=`<%lHv_!+QP;=`<%lE^_!+^]}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!,`]!PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!-`_(QX'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!.f]#OX'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!/h_(PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!0p]!eX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!1r`'gX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`!a!2t!a#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!2}]#QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!4P^(OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!4{!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!5U`!lX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!6W!P!Q,z!Q!_$n!_!`!7Y!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!6a]!tX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nV!7c]'qP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!8c_'_Q'xXOY+|YZ-xZr+|rs'`sz+|z{!9b{!P+|!P!Q!:O!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!9iV&}]'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_!:V]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!Aq{!P!;O!P!Q!:O!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;O_!;V]'_QUXOY!jYZ(tZz!>jz{!=x{!P!>j!P!Q!?|!Q;'S!>j;'S;=`!@e<%lO!>j]!>oXUXOY!=SYZ)^Zz!=Sz{!=x{!P!=S!P!Q!?[!Q;'S!=S;'S;=`!@k<%lO!=S]!?aXUXOY!>jYZ(tZz!>jz{!?|{!P!>j!P!Q!?[!Q;'S!>j;'S;=`!@e<%lO!>jX!@RSUXOY!?|Z;'S!?|;'S;=`!@_<%lO!?|X!@bP;=`<%l!?|]!@hP;=`<%l!>j]!@nP;=`<%l!=S_!@x]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!@q{!P!;O!P!Q!Aq!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;OZ!AxX'_QUXOY!AqYZ/OZr!Aqrs!?|s#O!Aq#O#P!?|#P;'S!Aq;'S;=`!Be<%lO!AqZ!BhP;=`<%l!Aq_!BnP;=`<%l!;O_!BtP;=`<%l!o![!c&[!c!i#>o!i#T&[#T#Z#>o#Z#o&[#o#p#A`#p;'S&[;'S;=`*s<%lO&[U#>t['OSOz&[z{&v{!P&[!P!Q'x!Q![#?j![!c&[!c!i#?j!i#T&[#T#Z#?j#Z;'S&[;'S;=`*s<%lO&[U#?o['OSOz&[z{&v{!P&[!P!Q'x!Q![#@e![!c&[!c!i#@e!i#T&[#T#Z#@e#Z;'S&[;'S;=`*s<%lO&[U#@j['OSOz&[z{&v{!P&[!P!Q'x!Q![#;}![!c&[!c!i#;}!i#T&[#T#Z#;}#Z;'S&[;'S;=`*s<%lO&[U#Ae['OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z;'S&[;'S;=`*s<%lO&[U#B`^'OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z#q&[#q#r#;}#r;'S&[;'S;=`*s<%lO&[U#C_P;=`<%l#;}_#Ck]XX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Dm_'{X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Ewl'_Q'OS!yW'TPOY$nYZ%nZr$nrs#Gosw$nwx#H]xz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$n]#GvV'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_#Hd_'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q#OE^#O#P!!l#P;'SE^;'S;=`!*}<%lOE^_#Ink'_Q'OS!yW'TPOY$nYZ%nZr$nrs&[st#Kctz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nV#Kji'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$nV#Mbj'_Q'OS'TPOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#MX![!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$n_$ ]]wX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$!_a'rX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P#p$n#p#q$#d#q;'S$n;'S;=`4s<%lO$n_$#m]'|X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$$o]vX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n",tokenizers:[dO,WO,pO,0,1,2,3],topRules:{SourceFile:[0,8]},specialized:[{term:281,get:r=>zO[r]||-1}],tokenPrec:15596});export{_O as a};
diff --git a/static/dist/chunks/chunk-CGTIGMIP.js b/static/dist/chunks/chunk-CGTIGMIP.js
new file mode 100644
index 0000000..274fbe4
--- /dev/null
+++ b/static/dist/chunks/chunk-CGTIGMIP.js
@@ -0,0 +1 @@
+var De=0,ie=class{constructor(e,t){this.from=e,this.to=t}},k=class{constructor(e={}){this.id=De++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=F.match(e)),t=>{let r=e(t);return r===void 0?null:[this,r]}}};k.closedBy=new k({deserialize:s=>s.split(" ")});k.openedBy=new k({deserialize:s=>s.split(" ")});k.group=new k({deserialize:s=>s.split(" ")});k.isolate=new k({deserialize:s=>{if(s&&s!="rtl"&&s!="ltr"&&s!="auto")throw new RangeError("Invalid value for isolate: "+s);return s||"auto"}});k.contextHash=new k({perNode:!0});k.lookAhead=new k({perNode:!0});k.mounted=new k({perNode:!0});var te=class{constructor(e,t,r){this.tree=e,this.overlay=t,this.parser=r}static get(e){return e&&e.props&&e.props[k.mounted.id]}},Le=Object.create(null),F=class s{constructor(e,t,r,i=0){this.name=e,this.props=t,this.id=r,this.flags=i}static define(e){let t=e.props&&e.props.length?Object.create(null):Le,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),i=new s(e.name||"",t,e.id,r);if(e.props){for(let n of e.props)if(Array.isArray(n)||(n=n(i)),n){if(n[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[n[0].id]=n[1]}}return i}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(k.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let r in e)for(let i of r.split(" "))t[i]=e[r];return r=>{for(let i=r.prop(k.group),n=-1;n<(i?i.length:0);n++){let l=t[n<0?r.name:i[n]];if(l)return l}}}};F.none=new F("",Object.create(null),0,8);var Ie=class s{constructor(e){this.types=e;for(let t=0;t0;for(let a=this.cursor(l|B.IncludeAnonymous);;){let u=!1;if(a.from<=n&&a.to>=i&&(!o&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;u=!0}for(;u&&r&&(o||!a.type.isAnonymous)&&r(a),!a.nextSibling();){if(!a.parent())return;u=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:ve(F.none,this.children,this.positions,0,this.children.length,0,this.length,(t,r,i)=>new s(this.type,t,r,i,this.propValues),e.makeTree||((t,r,i)=>new s(F.none,t,r,i)))}static build(e){return Ue(e)}};J.empty=new J(F.none,[],[],0);var me=class s{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new s(this.buffer,this.index)}},K=class s{constructor(e,t,r){this.buffer=e,this.length=t,this.set=r}get type(){return F.none}toString(){let e=[];for(let t=0;t0));a=l[a+3]);return o}slice(e,t,r){let i=this.buffer,n=new Uint16Array(t-e),l=0;for(let o=e,a=0;o=e&&te;case 1:return t<=e&&r>e;case 2:return r>e;case 4:return!0}}function ne(s,e,t,r){for(var i;s.from==s.to||(t<1?s.from>=e:s.from>e)||(t>-1?s.to<=e:s.to0?o.length:-1;e!=u;e+=t){let m=o[e],y=a[e]+l.from;if(Ee(i,r,y,y+m.length)){if(m instanceof K){if(n&B.ExcludeBuffers)continue;let c=m.findChild(0,m.buffer.length,t,r-y,i);if(c>-1)return new se(new be(l,m,e,y),null,c)}else if(n&B.IncludeAnonymous||!m.type.isAnonymous||ke(m)){let c;if(!(n&B.IgnoreMounts)&&(c=te.get(m))&&!c.overlay)return new s(c.tree,y,e,l);let _=new s(m,y,e,l);return n&B.IncludeAnonymous||!_.type.isAnonymous?_:_.nextChild(t<0?m.children.length-1:0,t,r,i)}}}if(n&B.IncludeAnonymous||!l.type.isAnonymous||(l.index>=0?e=l.index+t:e=t<0?-1:l._parent._tree.children.length,l=l._parent,!l))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,r=0){let i;if(!(r&B.IgnoreOverlays)&&(i=te.get(this._tree))&&i.overlay){let n=e-this.from;for(let{from:l,to:o}of i.overlay)if((t>0?l<=n:l=n:o>n))return new s(i.tree,i.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function Pe(s,e,t,r){let i=s.cursor(),n=[];if(!i.firstChild())return n;if(t!=null){for(let l=!1;!l;)if(l=i.type.is(t),!i.nextSibling())return n}for(;;){if(r!=null&&i.type.is(r))return n;if(i.type.is(e)&&n.push(i.node),!i.nextSibling())return r==null?n:[]}}function ye(s,e,t=e.length-1){for(let r=s.parent;t>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[t]&&e[t]!=r.name)return!1;t--}}return!0}var be=class{constructor(e,t,r,i){this.parent=e,this.buffer=t,this.index=r,this.start=i}},se=class s extends ue{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,r){super(),this.context=e,this._parent=t,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,t,r){let{buffer:i}=this.context,n=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.context.start,r);return n<0?null:new s(this.context,this,n)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,r=0){if(r&B.ExcludeBuffers)return null;let{buffer:i}=this.context,n=i.findChild(this.index+4,i.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return n<0?null:new s(this.context,this,n)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new s(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new s(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:r}=this.context,i=this.index+4,n=r.buffer[this.index+3];if(n>i){let l=r.buffer[this.index+1];e.push(r.slice(i,n,l)),t.push(0)}return new J(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function Te(s){if(!s.length)return null;let e=0,t=s[0];for(let n=1;nt.from||l.to=e){let o=new D(l.tree,l.overlay[0].from+n.from,-1,n);(i||(i=[r])).push(ne(o,e,t,!1))}}return i?Te(i):r}var le=class{get name(){return this.type.name}constructor(e,t=0){if(this.mode=t,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof D)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:r,buffer:i}=this.buffer;return this.type=t||i.set.types[i.buffer[e]],this.from=r+i.buffer[e+1],this.to=r+i.buffer[e+2],!0}yield(e){return e?e instanceof D?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,r,this.mode));let{buffer:i}=this.buffer,n=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.buffer.start,r);return n<0?!1:(this.stack.push(this.index),this.yieldBuf(n))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,r=this.mode){return this.buffer?r&B.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&B.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&B.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,r=this.stack.length-1;if(e<0){let i=r<0?0:this.stack[r]+4;if(this.index!=i)return this.yieldBuf(t.findChild(i,this.index,-1,0,4))}else{let i=t.buffer[this.index+3];if(i<(r<0?t.buffer.length:t.buffer[this.stack[r]+3]))return this.yieldBuf(i)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,r,{buffer:i}=this;if(i){if(e>0){if(this.index-1)for(let n=t+e,l=e<0?-1:r._tree.children.length;n!=l;n+=e){let o=r._tree.children[n];if(this.mode&B.IncludeAnonymous||o instanceof K||!o.type.isAnonymous||ke(o))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let l=e;l;l=l._parent)if(l.index==i){if(i==this.index)return l;t=l,r=n+1;break e}i=this.stack[--n]}for(let i=r;i=0;n--){if(n<0)return ye(this.node,e,i);let l=r[t.buffer[this.stack[n]]];if(!l.isAnonymous){if(e[i]&&e[i]!=l.name)return!1;i--}}return!0}};function ke(s){return s.children.some(e=>e instanceof K||!e.type.isAnonymous||ke(e))}function Ue(s){var e;let{buffer:t,nodeSet:r,maxBufferLength:i=1024,reused:n=[],minRepeatType:l=r.types.length}=s,o=Array.isArray(t)?new me(t,t.length):t,a=r.types,u=0,m=0;function y(b,v,f,N,w,x){let{id:d,start:g,end:C,size:A}=o,P=m;for(;A<0;)if(o.next(),A==-1){let q=n[d];f.push(q),N.push(g-b);return}else if(A==-3){u=d;return}else if(A==-4){m=d;return}else throw new RangeError(`Unrecognized record size: ${A}`);let $=a[d],Z,Q,Se=g-b;if(C-g<=i&&(Q=T(o.pos-v,w))){let q=new Uint16Array(Q.size-Q.skip),M=o.pos-Q.size,j=q.length;for(;o.pos>M;)j=E(Q.start,q,j);Z=new K(q,C-Q.start,r),Se=Q.start-b}else{let q=o.pos-A;o.next();let M=[],j=[],X=d>=l?d:-1,ee=0,he=C;for(;o.pos>q;)X>=0&&o.id==X&&o.size>=0?(o.end<=he-i&&(I(M,j,g,ee,o.end,he,X,P),ee=M.length,he=o.end),o.next()):x>2500?c(g,q,M,j):y(g,q,M,j,X,x+1);if(X>=0&&ee>0&&ee-1&&ee>0){let _e=_($);Z=ve($,M,j,0,M.length,0,C-g,_e,_e)}else Z=O($,M,j,C-g,P-C)}f.push(Z),N.push(Se)}function c(b,v,f,N){let w=[],x=0,d=-1;for(;o.pos>v;){let{id:g,start:C,end:A,size:P}=o;if(P>4)o.next();else{if(d>-1&&C=0;A-=3)g[P++]=w[A],g[P++]=w[A+1]-C,g[P++]=w[A+2]-C,g[P++]=P;f.push(new K(g,w[2]-C,r)),N.push(C-b)}}function _(b){return(v,f,N)=>{let w=0,x=v.length-1,d,g;if(x>=0&&(d=v[x])instanceof J){if(!x&&d.type==b&&d.length==N)return d;(g=d.prop(k.lookAhead))&&(w=f[x]+d.length+g)}return O(b,v,f,N,w)}}function I(b,v,f,N,w,x,d,g){let C=[],A=[];for(;b.length>N;)C.push(b.pop()),A.push(v.pop()+f-w);b.push(O(r.types[d],C,A,x-w,g-x)),v.push(w-f)}function O(b,v,f,N,w=0,x){if(u){let d=[k.contextHash,u];x=x?[d].concat(x):[d]}if(w>25){let d=[k.lookAhead,w];x=x?[d].concat(x):[d]}return new J(b,v,f,N,x)}function T(b,v){let f=o.fork(),N=0,w=0,x=0,d=f.end-i,g={size:0,start:0,skip:0};e:for(let C=f.pos-b;f.pos>C;){let A=f.size;if(f.id==v&&A>=0){g.size=N,g.start=w,g.skip=x,x+=4,N+=4,f.next();continue}let P=f.pos-A;if(A<0||P=l?4:0,Z=f.start;for(f.next();f.pos>P;){if(f.size<0)if(f.size==-3)$+=4;else break e;else f.id>=l&&($+=4);f.next()}w=Z,N+=A,x+=$}return(v<0||N==b)&&(g.size=N,g.start=w,g.skip=x),g.size>4?g:void 0}function E(b,v,f){let{id:N,start:w,end:x,size:d}=o;if(o.next(),d>=0&&N4){let C=o.pos-(d-4);for(;o.pos>C;)f=E(b,v,f)}v[--f]=g,v[--f]=x-b,v[--f]=w-b,v[--f]=N}else d==-3?u=N:d==-4&&(m=N);return f}let z=[],S=[];for(;o.pos>0;)y(s.start||0,s.bufferStart||0,z,S,-1,0);let R=(e=s.length)!==null&&e!==void 0?e:z.length?S[0]+z[0].length:0;return new J(a[s.topID],z.reverse(),S.reverse(),R)}var ze=new WeakMap;function ae(s,e){if(!s.isAnonymous||e instanceof K||e.type!=s)return 1;let t=ze.get(e);if(t==null){t=1;for(let r of e.children){if(r.type!=s||!(r instanceof J)){t=1;break}t+=ae(s,r)}ze.set(e,t)}return t}function ve(s,e,t,r,i,n,l,o,a){let u=0;for(let I=r;I=m)break;v+=f}if(S==R+1){if(v>m){let f=I[R];_(f.children,f.positions,0,f.children.length,O[R]+z);continue}y.push(I[R])}else{let f=O[S-1]+I[S-1].length-b;y.push(ve(s,I,O,R,S,b,f,null,a))}c.push(b+z-n)}}return _(e,t,r,i,0),(o||a)(y,c,l)}var Me=class s{constructor(e,t,r,i,n=!1,l=!1){this.from=e,this.to=t,this.tree=r,this.offset=i,this.open=(n?1:0)|(l?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],r=!1){let i=[new s(0,e.length,e,0,!1,r)];for(let n of t)n.to>e.length&&i.push(n);return i}static applyChanges(e,t,r=128){if(!t.length)return e;let i=[],n=1,l=e.length?e[0]:null;for(let o=0,a=0,u=0;;o++){let m=o=r)for(;l&&l.from=c.from||y<=c.to||u){let _=Math.max(c.from,a)-u,I=Math.min(c.to,y)-u;c=_>=I?null:new s(_,I,c.tree,c.offset+u,o>0,!!m)}if(c&&i.push(c),l.to>y)break;l=nnew ie(i.from,i.to)):[new ie(0,0)]:[new ie(0,e.length)],this.createParse(e,t||[],r)}parse(e,t,r){let i=this.startParse(e,t,r);for(;;){let n=i.advance();if(n)return n}}},we=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};var Qe=new k({perNode:!0});var We=0,W=class s{constructor(e,t,r){this.set=e,this.base=t,this.modified=r,this.id=We++}static define(e){if(e?.base)throw new Error("Can not derive from a modified tag");let t=new s([],null,[]);if(t.set.push(t),e)for(let r of e.set)t.set.push(r);return t}static defineModifier(){let e=new ge;return t=>t.modified.indexOf(e)>-1?t:ge.get(t.base||t,t.modified.concat(e).sort((r,i)=>r.id-i.id))}},qe=0,ge=class s{constructor(){this.instances=[],this.id=qe++}static get(e,t){if(!t.length)return e;let r=t[0].instances.find(o=>o.base==e&&Je(t,o.modified));if(r)return r;let i=[],n=new W(i,e,t);for(let o of t)o.instances.push(n);let l=Ke(t);for(let o of e.set)if(!o.modified.length)for(let a of l)i.push(s.get(o,a));return n}};function Je(s,e){return s.length==e.length&&s.every((t,r)=>t==e[r])}function Ke(s){let e=[[]];for(let t=0;tr.length-t.length)}function Ze(s){let e=Object.create(null);for(let t in s){let r=s[t];Array.isArray(r)||(r=[r]);for(let i of t.split(" "))if(i){let n=[],l=2,o=i;for(let y=0;;){if(o=="..."&&y>0&&y+3==i.length){l=1;break}let c=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(o);if(!c)throw new RangeError("Invalid path: "+i);if(n.push(c[0]=="*"?"":c[0][0]=='"'?JSON.parse(c[0]):c[0]),y+=c[0].length,y==i.length)break;let _=i[y++];if(y==i.length&&_=="!"){l=0;break}if(_!="/")throw new RangeError("Invalid path: "+i);o=i.slice(y)}let a=n.length-1,u=n[a];if(!u)throw new RangeError("Invalid path: "+i);let m=new re(r,l,a>0?n.slice(0,a):null);e[u]=m.sort(e[u])}}return Fe.add(e)}var Fe=new k,re=class{constructor(e,t,r,i){this.tags=e,this.mode=t,this.context=r,this.next=i}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let l=i;for(let o of n)for(let a of o.set){let u=t[a.id];if(u){l=l?l+" "+u:u;break}}return l},scope:r}}function Ge(s,e){let t=null;for(let r of s){let i=r.style(e);i&&(t=t?t+" "+i:i)}return t}function et(s,e,t,r=0,i=s.length){let n=new Ne(r,Array.isArray(e)?e:[e],t);n.highlightRange(s.cursor(),r,i,"",n.highlighters),n.flush(i)}var Ne=class{constructor(e,t,r){this.at=e,this.highlighters=t,this.span=r,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,r,i,n){let{type:l,from:o,to:a}=e;if(o>=r||a<=t)return;l.isTop&&(n=this.highlighters.filter(_=>!_.scope||_.scope(l)));let u=i,m=$e(e)||re.empty,y=Ge(n,m.tags);if(y&&(u&&(u+=" "),u+=y,m.mode==1&&(i+=(i?" ":"")+y)),this.startSpan(Math.max(t,o),u),m.opaque)return;let c=e.tree&&e.tree.prop(k.mounted);if(c&&c.overlay){let _=e.node.enter(c.overlay[0].from+o,1),I=this.highlighters.filter(T=>!T.scope||T.scope(c.tree.type)),O=e.firstChild();for(let T=0,E=o;;T++){let z=T=S||!e.nextSibling())););if(!z||S>r)break;E=z.to+o,E>t&&(this.highlightRange(_.cursor(),Math.max(t,z.from+o),Math.min(r,E),"",I),this.startSpan(Math.min(r,E),u))}O&&e.parent()}else if(e.firstChild()){c&&(i="");do if(!(e.to<=t)){if(e.from>=r)break;this.highlightRange(e,t,r,i,n),this.startSpan(Math.min(r,e.to),u)}while(e.nextSibling());e.parent()}}};function $e(s){let e=s.type.prop(Fe);for(;e&&e.context&&!s.matchContext(e.context);)e=e.next;return e||null}var h=W.define,pe=h(),V=h(),Re=h(V),je=h(V),G=h(),ce=h(G),Ae=h(G),U=h(),Y=h(U),L=h(),H=h(),Ce=h(),oe=h(Ce),de=h(),p={comment:pe,lineComment:h(pe),blockComment:h(pe),docComment:h(pe),name:V,variableName:h(V),typeName:Re,tagName:h(Re),propertyName:je,attributeName:h(je),className:h(V),labelName:h(V),namespace:h(V),macroName:h(V),literal:G,string:ce,docString:h(ce),character:h(ce),attributeValue:h(ce),number:Ae,integer:h(Ae),float:h(Ae),bool:h(G),regexp:h(G),escape:h(G),color:h(G),url:h(G),keyword:L,self:h(L),null:h(L),atom:h(L),unit:h(L),modifier:h(L),operatorKeyword:h(L),controlKeyword:h(L),definitionKeyword:h(L),moduleKeyword:h(L),operator:H,derefOperator:h(H),arithmeticOperator:h(H),logicOperator:h(H),bitwiseOperator:h(H),compareOperator:h(H),updateOperator:h(H),definitionOperator:h(H),typeOperator:h(H),controlOperator:h(H),punctuation:Ce,separator:h(Ce),bracket:oe,angleBracket:h(oe),squareBracket:h(oe),paren:h(oe),brace:h(oe),content:U,heading:Y,heading1:h(Y),heading2:h(Y),heading3:h(Y),heading4:h(Y),heading5:h(Y),heading6:h(Y),contentSeparator:h(U),list:h(U),quote:h(U),emphasis:h(U),strong:h(U),link:h(U),monospace:h(U),strikethrough:h(U),inserted:h(),deleted:h(),changed:h(),invalid:h(),meta:de,documentMeta:h(de),annotation:h(de),processingInstruction:h(de),definition:W.defineModifier(),constant:W.defineModifier(),function:W.defineModifier(),standard:W.defineModifier(),local:W.defineModifier(),special:W.defineModifier()},tt=Ve([{tag:p.link,class:"tok-link"},{tag:p.heading,class:"tok-heading"},{tag:p.emphasis,class:"tok-emphasis"},{tag:p.strong,class:"tok-strong"},{tag:p.keyword,class:"tok-keyword"},{tag:p.atom,class:"tok-atom"},{tag:p.bool,class:"tok-bool"},{tag:p.url,class:"tok-url"},{tag:p.labelName,class:"tok-labelName"},{tag:p.inserted,class:"tok-inserted"},{tag:p.deleted,class:"tok-deleted"},{tag:p.literal,class:"tok-literal"},{tag:p.string,class:"tok-string"},{tag:p.number,class:"tok-number"},{tag:[p.regexp,p.escape,p.special(p.string)],class:"tok-string2"},{tag:p.variableName,class:"tok-variableName"},{tag:p.local(p.variableName),class:"tok-variableName tok-local"},{tag:p.definition(p.variableName),class:"tok-variableName tok-definition"},{tag:p.special(p.variableName),class:"tok-variableName2"},{tag:p.definition(p.propertyName),class:"tok-propertyName tok-definition"},{tag:p.typeName,class:"tok-typeName"},{tag:p.namespace,class:"tok-namespace"},{tag:p.className,class:"tok-className"},{tag:p.macroName,class:"tok-macroName"},{tag:p.propertyName,class:"tok-propertyName"},{tag:p.operator,class:"tok-operator"},{tag:p.comment,class:"tok-comment"},{tag:p.meta,class:"tok-meta"},{tag:p.invalid,class:"tok-invalid"},{tag:p.punctuation,class:"tok-punctuation"}]);export{k as a,F as b,Ie as c,B as d,J as e,Me as f,Oe as g,Ze as h,Ve as i,et as j,p as k,tt as l};
diff --git a/static/dist/chunks/chunk-CSOMSVJQ.js b/static/dist/chunks/chunk-CSOMSVJQ.js
new file mode 100644
index 0000000..1c25e9e
--- /dev/null
+++ b/static/dist/chunks/chunk-CSOMSVJQ.js
@@ -0,0 +1,3 @@
+import{a as y,b as N,c as At,d as Ct,e as b,f as B,g as it,h as It,i as Dt,j as Ot,k as u}from"./chunk-CGTIGMIP.js";import{O as Tt,R as Pt,a as nt,b as rt,d,f as O,h as St,i as M,l as k}from"./chunk-IVRVZEPW.js";import{A as q,B as xt,l as v,m as $,n as Z,s as D,v as C,w as tt,z as et}from"./chunk-6OYJTXGR.js";var st,P=new y;function $t(n){return v.define({combine:n?t=>t.concat(n):void 0})}var ce=new y,p=class{constructor(t,e,r=[],i=""){this.data=t,this.name=i,C.prototype.hasOwnProperty("tree")||Object.defineProperty(C.prototype,"tree",{get(){return w(this)}}),this.parser=e,this.extension=[S.of(this),C.languageData.of((s,o,l)=>{let a=Mt(s,o,l),f=a.type.prop(P);if(!f)return[];let h=s.facet(f),c=a.type.prop(ce);if(c){let g=a.resolve(o-a.from,l);for(let m of c)if(m.test(g,s)){let x=s.facet(m.facet);return m.type=="replace"?x:x.concat(h)}}return h})].concat(r)}isActiveAt(t,e,r=-1){return Mt(t,e,r).type.prop(P)==this.data}findRegions(t){let e=t.facet(S);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let r=[],i=(s,o)=>{if(s.prop(P)==this.data){r.push({from:o,to:o+s.length});return}let l=s.prop(y.mounted);if(l){if(l.tree.prop(P)==this.data){if(l.overlay)for(let a of l.overlay)r.push({from:a.from+o,to:a.to+o});else r.push({from:o,to:o+s.length});return}else if(l.overlay){let a=r.length;if(i(l.tree,l.overlay[0].from+o),r.length>a)return}}for(let a=0;ar.isTop?e:void 0)]}),t.name)}configure(t,e){return new n(this.data,this.parser.configure(t),e||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function w(n){let t=n.field(p.state,!1);return t?t.tree:b.empty}function de(n,t,e=50){var r;let i=(r=n.field(p.state,!1))===null||r===void 0?void 0:r.context;if(!i)return null;let s=i.viewport;i.updateViewport({from:0,to:t});let o=i.isDone(t)||i.work(e,t)?i.tree:null;return i.updateViewport(s),o}function ln(n,t=n.doc.length){var e;return((e=n.field(p.state,!1))===null||e===void 0?void 0:e.context.isDone(t))||!1}function an(n,t=n.viewport.to,e=100){let r=de(n.state,t,e);return r!=w(n.state)&&n.dispatch({}),!!r}function fn(n){var t;return((t=n.plugin(zt))===null||t===void 0?void 0:t.isWorking())||!1}var at=class{constructor(t){this.doc=t,this.cursorPos=0,this.string="",this.cursor=t.iter()}get length(){return this.doc.length}syncTo(t){return this.string=this.cursor.next(t-this.cursorPos).value,this.cursorPos=t+this.string.length,this.cursorPos-this.string.length}chunk(t){return this.syncTo(t),this.string}get lineChunks(){return!0}read(t,e){let r=this.cursorPos-this.string.length;return t=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-r,e-r)}},L=null,E=class n{constructor(t,e,r=[],i,s,o,l,a){this.parser=t,this.state=e,this.fragments=r,this.tree=i,this.treeLen=s,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,r){return new n(t,e,[],b.empty,0,r,[],null)}startParse(){return this.parser.startParse(new at(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=b.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof t=="number"){let i=Date.now()+t;t=()=>Date.now()>i}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(B.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=L;L=this;try{return t()}finally{L=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=Bt(t,e.from,e.to);return t}changes(t,e){let{fragments:r,tree:i,treeLen:s,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((f,h,c,g)=>a.push({fromA:f,toA:h,fromB:c,toB:g})),r=B.applyChanges(r,a),i=b.empty,s=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let f of this.skipped){let h=t.mapPos(f.from,1),c=t.mapPos(f.to,-1);ht.from&&(this.fragments=Bt(this.fragments,i,s),this.skipped.splice(r--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends it{createParse(e,r,i){let s=i[0].from,o=i[i.length-1].to;return{parsedPos:s,advance(){let a=L;if(a){for(let f of i)a.tempSkipped.push(f);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new b(N.none,[],[],o-s)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return L}};function Bt(n,t,e){return B.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var F=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),r=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,r)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),r=E.create(t.facet(S).parser,t,{from:0,to:e});return r.work(20,e)||r.takeTree(),new n(r)}};p.state=$.define({create:F.init,update(n,t){for(let e of t.effects)if(e.is(p.setState))return e.value;return t.startState.facet(S)!=t.state.facet(S)?F.init(t.state):n.apply(t)}});var qt=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(qt=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var ot=typeof navigator<"u"&&(!((st=navigator.scheduling)===null||st===void 0)&&st.isInputPending)?()=>navigator.scheduling.isInputPending():null,zt=M.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(p.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(p.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=qt(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEndi+1e3,a=s.context.work(()=>ot&&ot()||Date.now()>o,i+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:p.setState.of(new F(s.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>St(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),S=v.define({combine(n){return n.length?n[0]:null},enables:n=>[p.state,zt,k.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]}),Lt=class{constructor(t,e=[]){this.language=t,this.support=e,this.extension=[t,e]}},Rt=class n{constructor(t,e,r,i,s,o=void 0){this.name=t,this.alias=e,this.extensions=r,this.filename=i,this.loadFunc=s,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(t=>this.support=t,t=>{throw this.loading=null,t}))}static of(t){let{load:e,support:r}=t;if(!e){if(!r)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");e=()=>Promise.resolve(r)}return new n(t.name,(t.alias||[]).concat(t.name).map(i=>i.toLowerCase()),t.extensions||[],t.filename,e,r)}static matchFilename(t,e){for(let i of t)if(i.filename&&i.filename.test(e))return i;let r=/\.([^.]+)$/.exec(e);if(r){for(let i of t)if(i.extensions.indexOf(r[1])>-1)return i}return null}static matchLanguageName(t,e,r=!0){e=e.toLowerCase();for(let i of t)if(i.alias.some(s=>s==e))return i;if(r)for(let i of t)for(let s of i.alias){let o=e.indexOf(s);if(o>-1&&(s.length>2||!/\w/.test(e[o-1])&&!/\w/.test(e[o+s.length])))return i}return null}},Gt=v.define(),Jt=v.define({combine:n=>{if(!n.length)return"  ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function J(n){let t=n.facet(Jt);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function _t(n,t){let e="",r=n.tabSize,i=n.facet(Jt)[0];if(i=="	"){for(;t>=r;)e+="	",t-=r;i=" "}for(let s=0;s=t?me(n,e,t):null}function un(n,t,e){let r=Object.create(null),i=new U(n,{overrideIndentation:o=>{var l;return(l=r[o])!==null&&l!==void 0?l:-1}}),s=[];for(let o=t;o<=e;){let l=n.doc.lineAt(o);o=l.to+1;let a=Kt(i,l.from);if(a==null)continue;/\S/.test(l.text)||(a=0);let f=/^\s*/.exec(l.text)[0],h=_t(n,a);f!=h&&(r[l.from]=a,s.push({from:l.from,to:l.from+f.length,insert:h}))}return n.changes(s)}var U=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=J(t)}lineAt(t,e=1){let r=this.state.doc.lineAt(t),{simulateBreak:i,simulateDoubleBreak:s}=this.options;return i!=null&&i>=r.from&&i<=r.to?s&&i==t?{text:"",from:t}:(e<0?i-1&&(s+=o-this.countColumn(r,r.search(/\S|$/))),s}countColumn(t,e=t.length){return xt(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:r,from:i}=this.lineAt(t,e),s=this.options.overrideIndentation;if(s){let o=s(i);if(o>-1)return o}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},pe=new y;function me(n,t,e){let r=t.resolveStack(e),i=r.node.enterUnfinishedNodesBefore(e);if(i!=r.node){let s=[];for(let o=i;o!=r.node;o=o.parent)s.push(o);for(let o=s.length-1;o>=0;o--)r={node:s[o],next:r}}return Qt(r,n,e)}function Qt(n,t,e){for(let r=n;r;r=r.next){let i=ke(r.node);if(i)return i(ft.create(t,e,r))}return 0}function ge(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function ke(n){let t=n.type.prop(pe);if(t)return t;let e=n.firstChild,r;if(e&&(r=e.type.prop(y.closedBy))){let i=n.lastChild,s=i&&r.indexOf(i.name)>-1;return o=>Xt(o,!0,1,void 0,s&&!ge(o)?i.from:void 0)}return n.parent==null?be:null}function be(){return 0}var ft=class n extends U{constructor(t,e,r){super(t.state,t.options),this.base=t,this.pos=e,this.context=r}get node(){return this.context.node}static create(t,e,r){return new n(t,e,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let r=t.resolve(e.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(we(r,t))break;e=this.state.doc.lineAt(r.from)}return this.lineIndent(e.from)}continue(){return Qt(this.context.next,this.base,this.pos)}};function we(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ye(n){let t=n.node,e=t.childAfter(t.from),r=t.lastChild;if(!e)return null;let i=n.options.simulateBreak,s=n.state.doc.lineAt(e.from),o=i==null||i<=s.from?s.to:Math.min(s.to,i);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==r)return null;if(!a.type.isSkipped)return a.fromXt(r,t,e,n)}function Xt(n,t,e,r,i){let s=n.textAfter,o=s.match(/^\s*/)[0].length,l=r&&s.slice(o,o+r.length)==r||i==n.pos+o,a=t?ye(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var dn=n=>n.baseIndent;function pn({except:n,units:t=1}={}){return e=>{let r=n&&n.test(e.textAfter);return e.baseIndent+(r?0:t*e.unit)}}var ve=200;function mn(){return C.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:r}=n.newSelection.main,i=e.lineAt(r);if(r>i.from+ve)return n;let s=e.sliceString(i.from,r);if(!t.some(f=>f.test(s)))return n;let{state:o}=n,l=-1,a=[];for(let{head:f}of o.selection.ranges){let h=o.doc.lineAt(f);if(h.from==l)continue;l=h.from;let c=Kt(o,h.from);if(c==null)continue;let g=/^\s*/.exec(h.text)[0],m=_t(o,c);g!=m&&a.push({from:h.from,to:h.from+g.length,insert:m})}return a.length?[n,{changes:a,sequential:!0}]:n})}var xe=v.define(),Se=new y;function gn(n){let t=n.firstChild,e=n.lastChild;return t&&t.toe)continue;if(s&&l.from=t&&f.to>e&&(s=f)}}return s}function Pe(n){let t=n.lastChild;return t&&t.to==n.to&&t.type.isError}function W(n,t,e){for(let r of n.facet(xe)){let i=r(n,t,e);if(i)return i}return Te(n,t,e)}function Yt(n,t){let e=t.mapPos(n.from,1),r=t.mapPos(n.to,-1);return e>=r?void 0:{from:e,to:r}}var V=D.define({map:Yt}),I=D.define({map:Yt});function kt(n){let t=[];for(let{head:e}of n.state.selection.ranges)t.some(r=>r.from<=e&&r.to>=e)||t.push(n.lineBlockAt(e));return t}var T=$.define({create(){return d.none},update(n,t){n=n.map(t.changes);for(let e of t.effects)if(e.is(V)&&!Ae(n,e.value.from,e.value.to)){let{preparePlaceholder:r}=t.state.facet(wt),i=r?d.replace({widget:new ht(r(t.state,e.value))}):Et;n=n.update({add:[i.range(e.value.from,e.value.to)]})}else e.is(I)&&(n=n.update({filter:(r,i)=>e.value.from!=r||e.value.to!=i,filterFrom:e.value.from,filterTo:e.value.to}));if(t.selection){let e=!1,{head:r}=t.selection.main;n.between(r,r,(i,s)=>{ir&&(e=!0)}),e&&(n=n.update({filterFrom:r,filterTo:r,filter:(i,s)=>s<=r||i>=r}))}return n},provide:n=>k.decorations.from(n),toJSON(n,t){let e=[];return n.between(0,t.doc.length,(r,i)=>{e.push(r,i)}),e},fromJSON(n){if(!Array.isArray(n)||n.length%2)throw new RangeError("Invalid JSON for fold state");let t=[];for(let e=0;e{(!i||i.from>s)&&(i={from:s,to:o})}),i}function Ae(n,t,e){let r=!1;return n.between(t,t,(i,s)=>{i==t&&s==e&&(r=!0)}),r}function bt(n,t){return n.field(T,!1)?t:t.concat(D.appendConfig.of(Zt()))}var Ce=n=>{for(let t of kt(n)){let e=W(n.state,t.from,t.to);if(e)return n.dispatch({effects:bt(n.state,[V.of(e),_(n,e)])}),!0}return!1},Ie=n=>{if(!n.state.field(T,!1))return!1;let t=[];for(let e of kt(n)){let r=j(n.state,e.from,e.to);r&&t.push(I.of(r),_(n,r,!1))}return t.length&&n.dispatch({effects:t}),t.length>0};function _(n,t,e=!0){let r=n.state.doc.lineAt(t.from).number,i=n.state.doc.lineAt(t.to).number;return k.announce.of(`${n.state.phrase(e?"Folded lines":"Unfolded lines")} ${r} ${n.state.phrase("to")} ${i}.`)}var De=n=>{let{state:t}=n,e=[];for(let r=0;r{let t=n.state.field(T,!1);if(!t||!t.size)return!1;let e=[];return t.between(0,n.state.doc.length,(r,i)=>{e.push(I.of({from:r,to:i}))}),n.dispatch({effects:e}),!0};function Me(n,t){for(let e=t;;){let r=W(n.state,e.from,e.to);if(r&&r.to>t.from)return r;if(!e.from)return null;e=n.lineBlockAt(e.from-1)}}var bn=n=>{let t=[];for(let e of kt(n)){let r=j(n.state,e.from,e.to);if(r)t.push(I.of(r),_(n,r,!1));else{let i=Me(n,e);i&&t.push(V.of(i),_(n,i))}}return t.length>0&&n.dispatch({effects:bt(n.state,t)}),!!t.length},wn=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:Ce},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:Ie},{key:"Ctrl-Alt-[",run:De},{key:"Ctrl-Alt-]",run:Oe}],Ne={placeholderDOM:null,preparePlaceholder:null,placeholderText:"\u2026"},wt=v.define({combine(n){return tt(n,Ne)}});function Zt(n){let t=[T,Le];return n&&t.push(wt.of(n)),t}function te(n,t){let{state:e}=n,r=e.facet(wt),i=o=>{let l=n.lineBlockAt(n.posAtDOM(o.target)),a=j(n.state,l.from,l.to);a&&n.dispatch({effects:I.of(a)}),o.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(n,i,t);let s=document.createElement("span");return s.textContent=r.placeholderText,s.setAttribute("aria-label",e.phrase("folded code")),s.title=e.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=i,s}var Et=d.replace({widget:new class extends rt{toDOM(n){return te(n,null)}}}),ht=class extends rt{constructor(t){super(),this.value=t}eq(t){return this.value==t.value}toDOM(t){return te(t,this.value)}},Be={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1},R=class extends Tt{constructor(t,e){super(),this.config=t,this.open=e}eq(t){return this.config==t.config&&this.open==t.open}toDOM(t){if(this.config.markerDOM)return this.config.markerDOM(this.open);let e=document.createElement("span");return e.textContent=this.open?this.config.openText:this.config.closedText,e.title=t.state.phrase(this.open?"Fold line":"Unfold line"),e}};function yn(n={}){let t=Object.assign(Object.assign({},Be),n),e=new R(t,!0),r=new R(t,!1),i=M.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(S)!=o.state.facet(S)||o.startState.field(T,!1)!=o.state.field(T,!1)||w(o.startState)!=w(o.state)||t.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let l=new q;for(let a of o.viewportLineBlocks){let f=j(o.state,a.from,a.to)?r:W(o.state,a.from,a.to)?e:null;f&&l.add(a.from,a.from,f)}return l.finish()}}),{domEventHandlers:s}=t;return[i,Pt({class:"cm-foldGutter",markers(o){var l;return((l=o.plugin(i))===null||l===void 0?void 0:l.markers)||et.empty},initialSpacer(){return new R(t,!1)},domEventHandlers:Object.assign(Object.assign({},s),{click:(o,l,a)=>{if(s.click&&s.click(o,l,a))return!0;let f=j(o.state,l.from,l.to);if(f)return o.dispatch({effects:I.of(f)}),!0;let h=W(o.state,l.from,l.to);return h?(o.dispatch({effects:V.of(h)}),!0):!1}})}),Zt()]}var Le=k.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}}),K=class n{constructor(t,e){this.specs=t;let r;function i(l){let a=nt.newName();return(r||(r=Object.create(null)))["."+a]=l,a}let s=typeof e.all=="string"?e.all:e.all?i(e.all):void 0,o=e.scope;this.scope=o instanceof p?l=>l.prop(P)==o.data:o?l=>l==o:void 0,this.style=Dt(t.map(l=>({tag:l.tag,class:l.class||i(Object.assign({},l,{tag:null}))})),{all:s}).style,this.module=r?new nt(r):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},ut=v.define(),ee=v.define({combine(n){return n.length?[n[0]]:null}});function G(n){let t=n.facet(ut);return t.length?t:n.facet(ee)}function vn(n,t){let e=[Re],r;return n instanceof K&&(n.module&&e.push(k.styleModule.of(n.module)),r=n.themeType),t?.fallback?e.push(ee.of(n)):r?e.push(ut.computeN([k.darkTheme],i=>i.facet(k.darkTheme)==(r=="dark")?[n]:[])):e.push(ut.of(n)),e}function xn(n,t,e){let r=G(n),i=null;if(r){for(let s of r)if(!s.scope||e&&s.scope(e)){let o=s.style(t);o&&(i=i?i+" "+o:o)}}return i}var ct=class{constructor(t){this.markCache=Object.create(null),this.tree=w(t.state),this.decorations=this.buildDeco(t,G(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=w(t.state),r=G(t.state),i=r!=G(t.startState),{viewport:s}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=s.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||i)&&(this.tree=e,this.decorations=this.buildDeco(t.view,r),this.decoratedTo=s.to)}buildDeco(t,e){if(!e||!this.tree.length)return d.none;let r=new q;for(let{from:i,to:s}of t.visibleRanges)Ot(this.tree,e,(o,l,a)=>{r.add(o,l,this.markCache[a]||(this.markCache[a]=d.mark({class:a})))},i,s);return r.finish()}},Re=Z.high(M.fromClass(ct,{decorations:n=>n.decorations})),Sn=K.define([{tag:u.meta,color:"#404740"},{tag:u.link,textDecoration:"underline"},{tag:u.heading,textDecoration:"underline",fontWeight:"bold"},{tag:u.emphasis,fontStyle:"italic"},{tag:u.strong,fontWeight:"bold"},{tag:u.strikethrough,textDecoration:"line-through"},{tag:u.keyword,color:"#708"},{tag:[u.atom,u.bool,u.url,u.contentSeparator,u.labelName],color:"#219"},{tag:[u.literal,u.inserted],color:"#164"},{tag:[u.string,u.deleted],color:"#a11"},{tag:[u.regexp,u.escape,u.special(u.string)],color:"#e40"},{tag:u.definition(u.variableName),color:"#00f"},{tag:u.local(u.variableName),color:"#30a"},{tag:[u.typeName,u.namespace],color:"#085"},{tag:u.className,color:"#167"},{tag:[u.special(u.variableName),u.macroName],color:"#256"},{tag:u.definition(u.propertyName),color:"#00c"},{tag:u.comment,color:"#940"},{tag:u.invalid,color:"#f00"}]),Ee=k.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),ne=1e4,re="()[]{}",ie=v.define({combine(n){return tt(n,{afterCursor:!0,brackets:re,maxScanDistance:ne,renderMatch:We})}}),Fe=d.mark({class:"cm-matchingBracket"}),Ue=d.mark({class:"cm-nonmatchingBracket"});function We(n){let t=[],e=n.matched?Fe:Ue;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}var je=$.define({create(){return d.none},update(n,t){if(!t.docChanged&&!t.selection)return n;let e=[],r=t.state.facet(ie);for(let i of t.state.selection.ranges){if(!i.empty)continue;let s=z(t.state,i.head,-1,r)||i.head>0&&z(t.state,i.head-1,1,r)||r.afterCursor&&(z(t.state,i.head,1,r)||i.headk.decorations.from(n)}),He=[je,Ee];function Tn(n={}){return[ie.of(n),He]}var Ve=new y;function dt(n,t,e){let r=n.prop(t<0?y.openedBy:y.closedBy);if(r)return r;if(n.name.length==1){let i=e.indexOf(n.name);if(i>-1&&i%2==(t<0?1:0))return[e[i+t]]}return null}function pt(n){let t=n.type.prop(Ve);return t?t(n.node):n}function z(n,t,e,r={}){let i=r.maxScanDistance||ne,s=r.brackets||re,o=w(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let f=dt(a.type,e,s);if(f&&a.from0?t>=h.from&&th.from&&t<=h.to))return $e(n,t,e,a,h,f,s)}}return qe(n,t,e,o,l.type,i,s)}function $e(n,t,e,r,i,s,o){let l=r.parent,a={from:i.from,to:i.to},f=0,h=l?.cursor();if(h&&(e<0?h.childBefore(r.from):h.childAfter(r.to)))do if(e<0?h.to<=r.from:h.from>=r.to){if(f==0&&s.indexOf(h.type.name)>-1&&h.from0)return null;let f={from:e<0?t-1:t,to:e>0?t+1:t},h=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let g=0;!h.next().done&&g<=s;){let m=h.value;e<0&&(g+=m.length);let x=t+g*e;for(let A=e>0?0:m.length-1,ue=e>0?m.length:-1;A!=ue;A+=e){let Y=o.indexOf(m[A]);if(!(Y<0||r.resolveInner(x+A,1).type!=i))if(Y%2==0==e>0)c++;else{if(c==1)return{start:f,end:{from:x+A,to:x+A+1},matched:Y>>1==a>>1};c--}}e>0&&(g+=m.length)}return h.done?{start:f,matched:!1}:null}function Ft(n,t,e,r=0,i=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let s=i;for(let o=r;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosr?o.toLowerCase():o,s=this.string.substr(this.pos,t.length);return i(s)==i(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let i=this.string.slice(this.pos).match(t);return i&&i.index>0?null:(i&&e!==!1&&(this.pos+=i[0].length),i)}}current(){return this.string.slice(this.start,this.pos)}};function ze(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||Ge,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||vt}}function Ge(n){if(typeof n!="object")return n;let t={};for(let e in n){let r=n[e];t[e]=r instanceof Array?r.slice():r}return t}var Ut=new WeakMap,Wt=class n extends p{constructor(t){let e=$t(t.languageData),r=ze(t),i,s=new class extends it{createParse(o,l,a){return new mt(i,o,l,a)}};super(e,s,[Gt.of((o,l)=>this.getIndent(o,l))],t.name),this.topNode=Qe(e),i=this,this.streamParser=r,this.stateAfter=new y({perNode:!0}),this.tokenTable=t.tokenTable?new X(r.tokenTable):Ke}static define(t){return new n(t)}getIndent(t,e){let r=w(t.state),i=r.resolve(e);for(;i&&i.type!=this.topNode;)i=i.parent;if(!i)return null;let s,{overrideIndentation:o}=t.options;o&&(s=Ut.get(t.state),s!=null&&s1e4)return null;for(;a=r&&e+t.length<=i&&t.prop(n.stateAfter);if(s)return{state:n.streamParser.copyState(s),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],f=l instanceof b&&a=t.length)return t;!i&&t.type==n.topNode&&(i=!0);for(let s=t.children.length-1;s>=0;s--){let o=t.positions[s],l=t.children[s],a;if(oe&&yt(n,i.tree,0-i.offset,e,o),a;if(l&&(a=se(n,i.tree,e+i.offset,l.pos+i.offset,!1)))return{state:l.state,tree:a}}return{state:n.streamParser.startState(r?J(r):4),tree:b.empty}}var mt=class{constructor(t,e,r,i){this.lang=t,this.input=e,this.fragments=r,this.ranges=i,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=i[i.length-1].to;let s=E.get(),o=i[0].from,{state:l,tree:a}=Je(t,r,o,s?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let f=0;f=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==`
+`&&(e="");else{let r=e.indexOf(`
+`);r>-1&&(e=e.slice(0,r))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),r=t+e.length;for(let i=this.rangeIndex;;){let s=this.ranges[i].to;if(s>=r||(e=e.slice(0,s-(r-e.length)),i++,i==this.ranges.length))break;let o=this.ranges[i].from,l=this.lineAfter(o);e+=l,r=o+l.length}return{line:e,end:r}}skipGapsTo(t,e,r){for(;;){let i=this.ranges[this.rangeIndex].to,s=t+e;if(r>0?i>s:i>=s)break;let o=this.ranges[++this.rangeIndex].from;e+=o-i}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let o=this.chunk.length;s=this.skipGapsTo(r,s,-1),r+=s,i+=this.chunk.length-o}return this.chunk.push(t,e,r,i),s}parseLine(t){let{line:e,end:r}=this.nextLine(),i=0,{streamParser:s}=this.lang,o=new Q(e,t?t.state.tabSize:4,t?J(t.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=oe(s.token,o,this.state);if(l&&(i=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,4,i)),o.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPost.start)return i}throw new Error("Stream parser failed to advance stream.")}var vt=Object.create(null),H=[N.none],_e=new At(H),jt=[],Ht=Object.create(null),le=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])le[n]=ae(vt,t);var X=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),le)}resolve(t){return t?this.table[t]||(this.table[t]=ae(this.extra,t)):0}},Ke=new X(vt);function lt(n,t){jt.indexOf(n)>-1||(jt.push(n),console.warn(t))}function ae(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let f of l.split(".")){let h=n[f]||u[f];h?typeof h=="function"?a.length?a=a.map(h):lt(f,`Modifier ${f} used at start of tag`):a.length?lt(f,`Tag ${f} used as modifier`):a=Array.isArray(h)?h:[h]:lt(f,`Unknown highlighting tag ${f}`)}for(let f of a)e.push(f)}if(!e.length)return 0;let r=t.replace(/ /g,"_"),i=r+" "+e.map(l=>l.id),s=Ht[i];if(s)return s.id;let o=Ht[i]=N.define({id:H.length,name:r,props:[It({[r]:e})]});return H.push(o),o.id}function Qe(n){let t=N.define({id:H.length,name:"Document",props:[P.add(()=>n)],top:!0});return H.push(t),t}function fe(n){return n.length<=4096&&/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/.test(n)}function he(n){for(let t=n.iter();!t.next().done;)if(fe(t.value))return!0;return!1}function Xe(n){let t=!1;return n.iterChanges((e,r,i,s,o)=>{!t&&he(o)&&(t=!0)}),t}var gt=v.define({combine:n=>n.some(t=>t)});function Pn(n={}){let t=[Ye];return n.alwaysIsolate&&t.push(gt.of(!0)),t}var Ye=M.fromClass(class{constructor(n){this.always=n.state.facet(gt)||n.textDirection!=O.LTR||n.state.facet(k.perLineTextDirection),this.hasRTL=!this.always&&he(n.state.doc),this.tree=w(n.state),this.decorations=this.always||this.hasRTL?Vt(n,this.tree,this.always):d.none}update(n){let t=n.state.facet(gt)||n.view.textDirection!=O.LTR||n.state.facet(k.perLineTextDirection);if(!t&&!this.hasRTL&&Xe(n.changes)&&(this.hasRTL=!0),!t&&!this.hasRTL)return;let e=w(n.state);(t!=this.always||e!=this.tree||n.docChanged||n.viewportChanged)&&(this.tree=e,this.always=t,this.decorations=Vt(n.view,e,t))}},{provide:n=>{function t(e){var r,i;return(i=(r=e.plugin(n))===null||r===void 0?void 0:r.decorations)!==null&&i!==void 0?i:d.none}return[k.outerDecorations.of(t),Z.lowest(k.bidiIsolatedRanges.of(t))]}});function Vt(n,t,e){let r=new q,i=n.visibleRanges;e||(i=Ze(i,n.state.doc));for(let{from:s,to:o}of i)t.iterate({enter:l=>{let a=l.type.prop(y.isolate);a&&r.add(l.from,l.to,tn[a])},from:s,to:o});return r.finish()}function Ze(n,t){let e=t.iter(),r=0,i=[],s=null;for(let{from:o,to:l}of n)if(!(s&&s.to>o&&(o=s.to,o>=l)))for(r+e.value.lengtha-10?s.to=Math.min(l,f):i.push(s={from:a,to:Math.min(l,f)})),f>=l)break;r=f,e.next()}return i}var tn={rtl:d.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:O.RTL}),ltr:d.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:O.LTR}),auto:d.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};export{P as a,$t as b,ce as c,p as d,Nt as e,w as f,de as g,ln as h,an as i,fn as j,at as k,E as l,S as m,Lt as n,Rt as o,Gt as p,Jt as q,J as r,_t as s,Kt as t,un as u,U as v,pe as w,ft as x,cn as y,dn as z,pn as A,mn as B,xe as C,Se as D,gn as E,W as F,V as G,I as H,T as I,kn as J,Ce as K,Ie as L,De as M,Oe as N,bn as O,wn as P,Zt as Q,yn as R,K as S,vn as T,xn as U,Sn as V,Tn as W,Ve as X,z as Y,Q as Z,Wt as _,Pn as $};
diff --git a/static/dist/chunks/chunk-IVRVZEPW.js b/static/dist/chunks/chunk-IVRVZEPW.js
new file mode 100644
index 0000000..36e6268
--- /dev/null
+++ b/static/dist/chunks/chunk-IVRVZEPW.js
@@ -0,0 +1,7 @@
+import{A as ks,B as ni,C as me,a as K,c as ct,d as ii,f as xs,g as yt,i as si,k as v,l as C,m as de,n as ue,p as vs,s as G,t as Ss,u as Cs,v as Dt,w as pe,x as ge,z as E}from"./chunk-6OYJTXGR.js";var Ms=typeof Symbol>"u"?"__\u037C":Symbol.for("\u037C"),ri=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),As=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},it=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function n(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let c=[],f=/^@(\w+)\b/.exec(o[0]),d=f&&f[1]=="keyframes";if(f&&l==null)return a.push(o[0]+";");for(let u in l){let p=l[u];if(/&/.test(u))r(u.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!f)throw new RangeError("The value of a property ("+u+") should be a primitive value.");r(n(u),p,c,d)}else p!=null&&c.push(u.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(c.length||d)&&a.push((i&&!f&&!h?o.map(i):o).join(", ")+" {"+c.join(" ")+"}")}for(let o in t)r(n(o),t[o],this.rules)}getRules(){return this.rules.join(`
+`)}static newName(){let t=As[Ms]||1;return As[Ms]=t+1,"\u037C"+t.toString(36)}static mount(t,e,i){let n=t[ri],r=i&&i.nonce;n?r&&n.setNonce(r):n=new oi(t,r),n.mount(Array.isArray(e)?e:[e],t)}},Ts=new Map,oi=class{constructor(t,e){let i=t.ownerDocument||t,n=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&n.CSSStyleSheet){let r=Ts.get(i);if(r)return t[ri]=r;this.sheet=new n.CSSStyleSheet,Ts.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[ri]=this}mount(t,e){let i=this.sheet,n=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},wr=typeof navigator<"u"&&/Mac/.test(navigator.platform),xr=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(H=0;H<10;H++)st[48+H]=st[96+H]=String(H);var H;for(H=1;H<=24;H++)st[H+111]="F"+H;var H;for(H=65;H<=90;H++)st[H]=String.fromCharCode(H+32),Ot[H]=String.fromCharCode(H);var H;for(be in st)Ot.hasOwnProperty(be)||(Ot[be]=st[be]);var be;function Ds(s){var t=wr&&s.metaKey&&s.shiftKey&&!s.ctrlKey&&!s.altKey||xr&&s.shiftKey&&s.key&&s.key.length==1||s.key=="Unidentified",e=!t&&s.key||(s.shiftKey?Ot:st)[s.keyCode]||s.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}function ft(){var s=arguments[0];typeof s=="string"&&(s=document.createElement(s));var t=1,e=arguments[1];if(e&&typeof e=="object"&&e.nodeType==null&&!Array.isArray(e)){for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var n=e[i];typeof n=="string"?s.setAttribute(i,n):n!=null&&(s[i]=n)}t++}for(;t2),y={mac:Bs||/Mac/.test(V.platform),windows:/Win/.test(V.platform),linux:/Linux|X11/.test(V.platform),ie:Qe,ie_version:pn?pi.documentMode||6:mi?+mi[1]:gi?+gi[1]:0,gecko:Ls,gecko_version:Ls?+(/Firefox\/(\d+)/.exec(V.userAgent)||[0,0])[1]:0,chrome:!!li,chrome_version:li?+li[1]:0,ios:Bs,android:/Android\b/.test(V.userAgent),webkit:Rs,webkit_version:Rs?+(/\bAppleWebKit\/(\d+)/.exec(V.userAgent)||[0,0])[1]:0,safari:bi,safari_version:bi?+(/\bVersion\/(\d+(\.\d+)?)/.exec(V.userAgent)||[0,0])[1]:0,tabSize:pi.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function cs(s,t){for(let e in s)e=="class"&&t.class?t.class+=" "+s.class:e=="style"&&t.style?t.style+=";"+s.style:t[e]=s[e];return t}var Ee=Object.create(null);function fs(s,t,e){if(s==t)return!0;s||(s=Ee),t||(t=Ee);let i=Object.keys(s),n=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=n.length-(e&&n.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(n.indexOf(r)==-1||s[r]!==t[r]))return!1;return!0}function vr(s,t){for(let e=s.attributes.length-1;e>=0;e--){let i=s.attributes[e].name;t[i]==null&&s.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?s.style.cssText=i:s.getAttribute(e)!=i&&s.setAttribute(e,i)}}function Es(s,t,e){let i=!1;if(t)for(let n in t)e&&n in e||(i=!0,n=="style"?s.style.cssText="":s.removeAttribute(n));if(e)for(let n in e)t&&t[n]==e[n]||(i=!0,n=="style"?s.style.cssText=e[n]:s.setAttribute(n,e[n]));return i}function Sr(s){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new St(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,n;if(t.isBlockGap)i=-5e8,n=4e8;else{let{start:r,end:o}=gn(t,e);i=(r?e?-3e8:-1:5e8)-1,n=(o?e?2e8:1:-6e8)+1}return new St(t,i,n,e,t.widget||null,!0)}static line(t){return new ie(t)}static set(t,e=!1){return E.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};T.none=E.empty;var ee=class s extends T{constructor(t){let{start:e,end:i}=gn(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?cs(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||Ee}eq(t){return this==t||t instanceof s&&this.tagName==t.tagName&&fs(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};ee.prototype.point=!1;var ie=class s extends T{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof s&&this.spec.class==t.spec.class&&fs(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};ie.prototype.mapMode=yt.TrackBefore;ie.prototype.point=!0;var St=class s extends T{constructor(t,e,i,n,r,o){super(e,i,r,t),this.block=n,this.isReplace=o,this.mapMode=n?e<=0?yt.TrackBefore:yt.TrackAfter:yt.TrackDel}get type(){return this.startSide!=this.endSide?N.WidgetRange:this.startSide<=0?N.WidgetBefore:N.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof s&&Cr(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};St.prototype.point=!0;function gn(s,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=s;return e==null&&(e=s.inclusive),i==null&&(i=s.inclusive),{start:e??t,end:i??t}}function Cr(s,t){return s==t||!!(s&&t&&s.compare(t))}function Pt(s,t,e,i=0){let n=e.length-1;n>=0&&e[n]+i>=s?e[n]=Math.max(e[n],t):e.push(s,t)}var He=class s extends ge{constructor(t,e,i){super(),this.tagName=t,this.attributes=e,this.rank=i}eq(t){return t==this||t instanceof s&&this.tagName==t.tagName&&fs(this.attributes,t.attributes)}static create(t){return new s(t.tagName,t.attributes||Ee,t.rank==null?50:Math.max(0,Math.min(t.rank,100)))}static set(t,e=!1){return E.of(t,e)}};He.prototype.startSide=He.prototype.endSide=-1;function se(s){let t;return s.nodeType==11?t=s.getSelection?s:s.ownerDocument:t=s,t.getSelection()}function yi(s,t){return t?s==t||s.contains(t.nodeType!=1?t.parentNode:t):!1}function jt(s,t){if(!t.anchorNode)return!1;try{return yi(s,t.anchorNode)}catch{return!1}}function Yt(s){return s.nodeType==3?re(s,0,s.nodeValue.length).getClientRects():s.nodeType==1?s.getClientRects():[]}function Xt(s,t,e,i){return e?Hs(s,t,e,i,-1)||Hs(s,t,e,i,1):!1}function pt(s){for(var t=0;;t++)if(s=s.previousSibling,!s)return t}function Pe(s){return s.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(s.nodeName)}function Hs(s,t,e,i,n){for(;;){if(s==e&&t==i)return!0;if(t==(n<0?0:lt(s))){if(s.nodeName=="DIV")return!1;let r=s.parentNode;if(!r||r.nodeType!=1)return!1;t=pt(s)+(n<0?0:1),s=r}else if(s.nodeType==1){if(s=s.childNodes[t+(n<0?-1:0)],s.nodeType==1&&s.contentEditable=="false")return!1;t=n<0?lt(s):0}else return!1}}function lt(s){return s.nodeType==3?s.nodeValue.length:s.childNodes.length}function ne(s,t){let{left:e,right:i}=s;if(e==i)return s;let n=t?e:i;return{left:n,right:n,top:s.top,bottom:s.bottom}}function kr(s){let t=s.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:s.innerWidth,top:0,bottom:s.innerHeight}}function mn(s,t){let e=t.width/s.offsetWidth,i=t.height/s.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-s.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-s.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function Mr(s,t,e,i,n,r,o,l){let a=s.ownerDocument,h=a.defaultView||window;for(let c=s,f=!1;c&&!f;)if(c.nodeType==1){let d,u=c==a.body,p=1,g=1;if(u)d=kr(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(f=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let w=c.getBoundingClientRect();({scaleX:p,scaleY:g}=mn(c,w)),d={left:w.left,right:w.left+c.clientWidth*p,top:w.top,bottom:w.top+c.clientHeight*g}}let m=0,b=0;if(n=="nearest")t.top0&&t.bottom>d.bottom+b&&(b=t.bottom-d.bottom+o)):t.bottom>d.bottom-o&&(b=t.bottom-d.bottom+o,e<0&&t.top-b0&&t.right>d.right+m&&(m=t.right-d.right+r)):t.right>d.right-r&&(m=t.right-d.right+r,e<0&&t.leftd.bottom||t.leftd.right)&&(t={left:Math.max(t.left,d.left),right:Math.min(t.right,d.right),top:Math.max(t.top,d.top),bottom:Math.min(t.bottom,d.bottom)}),c=c.assignedSlot||c.parentNode}else if(c.nodeType==11)c=c.host;else break}function bn(s,t=!0){let e=s.ownerDocument,i=null,n=null;for(let r=s.parentNode;r&&!(r==e.body||(!t||i)&&n);)if(r.nodeType==1)!n&&r.scrollHeight>r.clientHeight&&(n=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:n}}var wi=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?lt(e):0),i,Math.min(t.focusOffset,i?lt(i):0))}set(t,e,i,n){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=n}},wt=null;y.safari&&y.safari_version>=26&&(wt=!1);function yn(s){if(s.setActive)return s.setActive();if(wt)return s.focus(wt);let t=[];for(let e=s;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(s.focus(wt==null?{get preventScroll(){return wt={preventScroll:!0},!0}}:void 0),!wt){wt=!1;for(let e=0;eMath.max(0,s.document.documentElement.scrollHeight-s.innerHeight-4):s.scrollTop>Math.max(1,s.scrollHeight-s.clientHeight-4)}function xn(s,t){for(let e=s,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=lt(e)}else if(e.parentNode&&!Pe(e))i=pt(e),e=e.parentNode;else return null}}function vn(s,t){for(let e=s,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(n!=0?n<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function kn(s,t){if(s.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(U[g+1]==-u){let m=U[g+2],b=m&2?n:m&4?m&1?r:n:0;b&&(L[f]=L[U[g]]=b),l=g;break}}else{if(U.length==189)break;U[l++]=f,U[l++]=d,U[l++]=a}else if((p=L[f])==2||p==1){let g=p==n;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=U[m+2];if(b&2)break;if(g)U[m+2]|=2;else{if(b&4)break;U[m+2]|=4}}}}}function Er(s,t,e,i){for(let n=0,r=i;n<=e.length;n++){let o=n?e[n-1].to:s,l=na;)p==m&&(p=e[--g].from,m=g?e[g-1].to:s),L[--p]=u;a=c}else r=h,a++}}}function vi(s,t,e,i,n,r,o){let l=i%2?2:1;if(i%2==n%2)for(let a=t,h=0;aa&&o.push(new j(a,g.from,u));let m=g.direction==Ct!=!(u%2);Si(s,m?i+1:i,n,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(c?L[p]!=l:L[p]==l))break;p++}d?vi(s,a,p,i+1,n,d,o):at;){let c=!0,f=!1;if(!h||a>r[h-1].to){let g=L[a-1];g!=l&&(c=!1,f=g==16)}let d=!c&&l==1?[]:null,u=c?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(f)break t;let g=r[--h];if(!c)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(L[m-1]==l)break t;break}}if(d)d.push(g);else{g.toL.length;)L[L.length]=256;let i=[],n=t==Ct?0:1;return Si(s,n,n,e,0,s.length,i),i}function An(s){return[new j(0,s,0)]}var Tn="";function Dn(s,t,e,i,n){var r;let o=i.head-s.from,l=j.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(n,e);if(o==h){let d=l+=n?1:-1;if(d<0||d>=t.length)return null;a=t[l=d],o=a.side(!n,e),h=a.side(n,e)}let c=ct(s.text,o,a.forward(n,e));(ca.to)&&(c=h),Tn=s.text.slice(Math.min(o,c),Math.max(o,c));let f=l==(n?t.length-1:0)?null:t[l+(n?1:-1)];return f&&c==h&&f.level+(n?0:1)s.some(t=>t)}),Nn=C.define({combine:s=>s.some(t=>t)}),Wn=C.define(),$t=class s{constructor(t,e,i,n,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=n,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new s(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new s(v.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},ye=G.define({map:(s,t)=>s.map(t)}),Vn=G.define();function J(s,t,e){let i=s.facet(Bn);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var nt=C.define({combine:s=>s.length?s[0]:!0}),Pr=0,Rt=C.define({combine(s){return s.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Ze.of(h=>{let c=h.plugin(l);return c?o(c):T.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return s.define((i,n)=>new t(i,n),e)}},Gt=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(J(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){J(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){J(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Fn=C.define(),Je=C.define(),Ze=C.define(),In=C.define(),gs=C.define(),ae=C.define(),zn=C.define();function Ns(s,t){let e=s.state.facet(zn);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(s):r),n=[];return E.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,c=o-t.from,f=n;for(let d=l.length-1;d>=0;d--,a--){let u=l[d].spec.bidiIsolate,p;if(u==null&&(u=Hr(t.text,h,c)),a>0&&f.length&&(p=f[f.length-1]).to==h&&p.direction==u)p.to=c,f=p.inner;else{let g={from:h,to:c,direction:u,inner:[]};f.push(g),f=g.inner}}}}),n}var Kn=C.define();function ms(s){let t=0,e=0,i=0,n=0;for(let r of s.state.facet(Kn)){let o=r(s);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(n=Math.max(n,o.bottom)))}return{left:t,right:e,top:i,bottom:n}}var Kt=C.define(),Y=class s{constructor(t,e,i,n){this.fromA=t,this.toA=e,this.fromB=i,this.toB=n}join(t){return new s(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let n=t[e-1];if(!(n.fromA>i.toA)){if(n.toAn.push(new Y(r,o,l,a))),this.changedRanges=n}static create(t,e,i){return new s(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Nr=[],R=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Nr}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&vr(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let n of this.children){if(n==t)return i;i+=n.length+n.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e,i){return null}domPosFor(t,e){let i=pt(this.dom),n=this.length?t>0:e>0;return new Q(this.parent.dom,i+(n?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof Vt)return t;return null}static get(t){return t.cmTile}},Wt=class extends R{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,n,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,n=i?i.nextSibling:e.firstChild,r&&n!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;n&&n!=l.dom;)n=Ws(n);else e.insertBefore(l.dom,n);i=l.dom}for(n=i?i.nextSibling:e.firstChild,r&&n&&(r.written=!0);n;)n=Ws(n);this.length=o}};function Ws(s){let t=s.nextSibling;return s.parentNode.removeChild(s),t}var Vt=class extends Wt{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=R.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,n=0,r=0;;)if(n==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,n=e.pop()}else{let o=i.children[n++];if(o instanceof rt)e.push(n),i=o,n=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,n=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:n}:{tile:r,offset:o}}},rt=class s extends Wt{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new s(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},Ft=class s extends Wt{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let n=new s(e||document.createElement("div"),t);return(!e||!i)&&(n.flags|=4),n}get domAttrs(){return this.attrs}resolveInline(t,e,i){let n=null,r=-1,o=null,l=-1;function a(c,f){for(let d=0,u=0;d=f&&(p.isComposite()?a(p,f-u):(!o||o.isHidden&&(e>0&&!(o.flags&32)||i&&Vr(o,p)))&&(g>f||p.flags&32&&e<=1)?(o=p,l=f-u):(u=-1)&&(n=p,r=f-u)),u=g}}a(this,t);let h=(e<0?n:o)||n||o;return h?{tile:h,offset:h==n?r:l}:null}coordsIn(t,e,i){let n=this.resolveInline(t,e,!0);return n?n.tile.coordsIn(Math.max(0,n.offset),e,i):Wr(this)}domIn(t,e){let i=this.resolveInline(t,e);if(i){let{tile:n,offset:r}=i;if(this.dom.contains(n.dom))return n.isText()?new Q(n.dom,Math.min(n.dom.nodeValue.length,r)):n.domPosFor(r,n.flags&16?1:n.flags&32?-1:e);let o=i.tile.parent,l=!1;for(let a of o.children){if(l)return new Q(a.dom,0);a==i.tile&&(l=!0)}}return new Q(this.dom,0)}};function Wr(s){let t=s.dom.lastChild;if(!t)return s.dom.getBoundingClientRect();let e=Yt(t);return e[e.length-1]||null}function Vr(s,t){let e=s.coordsIn(0,1),i=t.coordsIn(0,1);return e&&i&&i.topn&&(t=n);let r=t,o=t,l=0;t==0&&e<0||t==n&&e>=0?y.chrome||y.gecko||(t?(r--,l=1):o=0)?0:a.length-1];return y.safari&&!l&&h.width==0&&(h=Array.prototype.find.call(a,c=>c.width)||h),i==null?h:ne(h,(l?l>0:e<0)==i)}static of(t,e){let i=new s(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},kt=class s extends R{constructor(t,e,i,n){super(t,e,n),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let n=this.widget.coordsAt(this.dom,t,e);if(n)return n;if(i)return ne(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0==i)}},ki=class{constructor(t){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=t}advance(t,e,i){let{tile:n,index:r,beforeBreak:o,parents:l}=this;for(;t||e>0;)if(n.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==n.children.length){if(!t&&!l.length)break;i&&i.leave(n),o=!!n.breakAfter,{tile:n,index:r}=l.pop(),r++}else{let a=n.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=n.lastChild;if(h instanceof I&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(ai(a.dom)),n=h;else{if(this.cache.reused.get(a)){let f=R.get(a.dom);f&&f.setDOM(ai(a.dom))}let c=I.of(a.mark,a.dom);n.append(c),n=c}this.cache.reused.set(a,2)}let r=R.get(t.text);r&&this.cache.reused.set(r,2);let o=new xt(t.text,t.text.nodeValue);o.flags|=8,this.pos=t.range.toB,n.append(o)}addInlineWidget(t,e,i){let n=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);n||this.flushBuffer();let r=this.ensureMarks(e,i);!n&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=qn);let n=Ft.start(t,e||((i=this.cache.find(Ft))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=n)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let n=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=n.lastChild)&&l instanceof I&&l.mark.eq(o))n=l,e--;else{let a=I.of(o,(i=this.cache.find(I,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);n.append(a),n=a,e=0}}return n}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Vs(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(y.ios&&Vs(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(hi,0,32)||new kt(hi.toDOM(),0,hi,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=t.rank*102+t.value.rank,i=new Mi(t.from,t.to,t.value,e),n=this.wrappers.length;for(;n>0&&(this.wrappers[n-1].rank-i.rank||this.wrappers[n-1].to-i.to)<0;)n--;this.wrappers.splice(n,0,i)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let n=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(It,void 0,1);return i&&(i.flags=e),i||new It(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Ti=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:n,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=n;let l=this.textOff=Math.min(t,n.length);return r?null:n.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},We=[kt,Ft,xt,I,It,rt,Vt];for(let s=0;s[]),this.index=We.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let n=t.bucket,r=this.buckets[n],o=this.index[n];for(let l=0;l{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let n=0,r=0,o=0;;){let l=on){let h=a-n;this.preserve(h,!o,!l),n=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof I&&n.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?n.length&&(n.length=r=0):o instanceof I&&(n.shift(),r=Math.min(r,n.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,n=this.builder,r=-1,o=E.spans(this.decorations,t,e,{point:(l,a,h,c,f,d)=>{if(h instanceof St){if(this.disallowBlockEffectsFor[d]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=c.length,f>c.length)n.continueWidget(a-l);else{let u=h.widget||(h.block?gt.block:gt.inline),p=Fr(h),g=this.cache.findWidget(u,a-l,p)||kt.of(u,this.view,a-l,p);h.block?(h.startSide>0&&n.addLineStartIfNotCovered(i),n.addBlockWidget(g)):(n.ensureLine(i),n.addInlineWidget(g,c,f))}i=null}else i=Ir(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,c)=>{for(let f=l;f-1&&(this.openWidget=o>r),this.openWidget||n.addLineStartIfNotCovered(i),this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let n=t.parentNode;;n=n.parentNode){let r=R.get(n);if(n==this.view.contentDOM)break;r instanceof I?e.push(r):r?.isLine()?i=r:r instanceof rt||(n.nodeName=="DIV"&&!i&&n!=this.view.contentDOM?i=new Ft(n,qn):i||e.push(I.of(new ee({tagName:n.nodeName.toLowerCase(),attributes:Sr(n)}),n)))}return{line:i,marks:e}}};function Vs(s,t){let e=i=>{for(let n of i.children)if((t?n.isText():n.length)||e(n))return!0;return!1};return e(s)}function Fr(s){let t=s.isReplace?(s.startSide<0?64:0)|(s.endSide>0?128:0):s.startSide>0?32:16;return s.block&&(t|=256),t}var qn={class:"cm-line"};function Ir(s,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(s||(s={class:"cm-line"}),e&&cs(e,s),i&&(s.class+=" "+i)),s}function zr(s){let t=[];for(let e=s.parents.length;e>1;e--){let i=e==s.parents.length?s.tile:s.parents[e].tile;i instanceof I&&t.push(i.mark)}return t}function ai(s){let t=R.get(s);return t&&t.setDOM(s.cloneNode()),s}var gt=class extends ot{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};gt.inline=new gt("span");gt.block=new gt("div");var hi=new class extends ot{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},Ve=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=T.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Vt(t,t.contentDOM),this.updateInner([new Y(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:c,toA:f})=>fthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let n=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?n=this.domChanged.newSel.head:!Gr(t.changes,this.hasComposition)&&!t.selectionSet&&(n=t.state.selection.main.head));let r=n>-1?qr(this.view,t.changes,n):null;if(this.domChanged=null,this.hasComposition){let{from:c,to:f}=this.hasComposition;i=new Y(c,f,t.changes.mapPos(c,-1),t.changes.mapPos(f,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(y.ie||y.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Yr(o,this.decorations,t.changes);a.length&&(i=Y.extendWithRanges(i,a));let h=Xr(l,this.blockWrappers,t.changes);return h.length&&(i=Y.extendWithRanges(i,h)),r&&!i.some(c=>c.fromA<=r.range.fromA&&c.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Oi(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&R.get(e.text)&&l.cache.reused.set(R.get(e.text),2),this.tile=l.run(t,e),Li(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=y.chrome||y.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let n=[];if(this.view.viewport.from||this.view.viewport.to-1)&&jt(i,this.view.observer.selectionRange)&&!(n&&i.contains(n));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,c;if(a.empty?c=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(c=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),y.gecko&&a.empty&&!this.hasComposition&&Kr(h)){let d=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(d,h.node.childNodes[h.offset]||null)),h=c=new Q(d,0),l=!0}let f=this.view.observer.selectionRange;(l||!f.focusNode||(!Xt(h.node,h.offset,f.anchorNode,f.anchorOffset)||!Xt(c.node,c.offset,f.focusNode,f.focusOffset))&&!this.suppressWidgetCursorChange(f,a))&&(this.view.observer.ignore(()=>{y.android&&y.chrome&&i.contains(f.focusNode)&&$r(f.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let d=se(this.view.root);if(d)if(a.empty){if(y.gecko){let u=_r(h.node,h.offset);if(u&&u!=3){let p=(u==1?xn:vn)(h.node,h.offset);p&&(h=new Q(p.node,p.offset))}}d.collapse(h.node,h.offset),a.bidiLevel!=null&&d.caretBidiLevel!==void 0&&(d.caretBidiLevel=a.bidiLevel)}else if(d.extend){d.collapse(h.node,h.offset);try{d.extend(c.node,c.offset)}catch{}}else{let u=document.createRange();a.anchor>a.head&&([h,c]=[c,h]),u.setEnd(c.node,c.offset),u.setStart(h.node,h.offset),d.removeAllRanges(),d.addRange(u)}o&&this.view.root.activeElement==i&&(i.blur(),n&&n.focus())}),this.view.observer.setSelectionRange(h,c)),this.impreciseAnchor=h.precise?null:new Q(f.anchorNode,f.anchorOffset),this.impreciseHead=c.precise?null:new Q(f.focusNode,f.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&Xt(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=se(t.root),{anchorNode:n,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let c=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(c.node,c.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let f=t.observer.selectionRange;t.docView.posFromDOM(f.anchorNode,f.anchorOffset)!=e.from&&i.collapse(n,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let n=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=lt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return n;for(;r&&!R.get(r);)r=r.nextSibling;if(!r)return n+i.length;for(let o=0,l=n;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?n+e:n+(e?i.length:0):n}domAtPos(t,e){let{tile:i,offset:n}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(n,e):i.domIn(n,e)}inlineDOMNearPos(t,e){let i,n=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,c)=>{if(h.isWidget()){if(h.flags&32&&c>=t)return!0;h.flags&16&&(r=!0)}else{let f=c+h.length;if(c<=t&&(i=h,n=t-c,r=f=t&&!o&&(o=h,l=t-c,a=c>t),c>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(n,e):o.domIn(l,e))}coordsAt(t,e,i){let{tile:n,offset:r}=this.tile.resolveBlock(t,e);return n.isWidget()?n.widget instanceof Ut?null:n.coordsInWidget(r,e,!0):n.coordsIn(r,e,i)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function n(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=n(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==B.LTR,h=0,c=(f,d,u)=>{for(let p=0;pn);p++){let g=f.children[p],m=d+g.length,b=g.dom.getBoundingClientRect(),{height:w}=b;if(u&&!p&&(h+=b.top-u.top),g instanceof rt)m>i&&c(g,d,b);else if(d>=i&&(h>0&&e.push(-h),e.push(w+h),h=0,o)){let S=g.dom.lastChild,A=S?Yt(S):[];if(A.length){let k=A[A.length-1],x=a?k.right-b.left:b.right-k.left;x>l&&(l=x,this.minWidth=r,this.minWidthFrom=d,this.minWidthTo=m)}}u&&p==f.children.length-1&&(h+=u.bottom-b.bottom),d=m+g.breakAfter}};return c(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?B.RTL:B.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let c=Yt(h.dom);if(c.length!=1)return;l+=c[0].width,a=c[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,n,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=Yt(e.firstChild)[0];i=e.getBoundingClientRect().height,n=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:n,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,n=0;;n++){let r=n==e.viewports.length?null:e.viewports[n],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(T.replace({widget:new Ut(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return T.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Ze).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,n=this.view.state.facet(gs).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(n.length&&(this.dynamicDecorationMap[t++]=i,e.push(E.join(n))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){if(t.isSnapshot){let h=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=h.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let h of this.view.state.facet(Wn))try{if(h(this.view,t.range,t))return!0}catch(c){J(this.view.state,c,"scroll handler")}let{range:e}=t,i=this.coordsAt(e.head,e.assoc||(e.head>e.anchor?-1:1)),n;if(!i)return;!e.empty&&(n=this.coordsAt(e.anchor,e.anchor>e.head?-1:1))&&(i={left:Math.min(i.left,n.left),top:Math.min(i.top,n.top),right:Math.max(i.right,n.right),bottom:Math.max(i.bottom,n.bottom)});let r=ms(this.view),o={left:i.left-r.left,top:i.top-r.top,right:i.right+r.right,bottom:i.bottom+r.bottom},{offsetWidth:l,offsetHeight:a}=this.view.scrollDOM;if(Mr(this.view.scrollDOM,o,e.head1&&(i.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||i.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Li(this.tile)}};function Li(s,t){let e=t?.get(s);if(e!=1){e==null&&s.destroy();for(let i of s.children)Li(i,t)}}function Kr(s){return s.node.nodeType==1&&s.node.firstChild&&(s.offset==0||s.node.childNodes[s.offset-1].contentEditable=="false")&&(s.offset==s.node.childNodes.length||s.node.childNodes[s.offset].contentEditable=="false")}function _n(s,t){let e=s.observer.selectionRange;if(!e.focusNode)return null;let i=xn(e.focusNode,e.focusOffset),n=vn(e.focusNode,e.focusOffset),r=i||n;if(n&&i&&n.node!=i.node){let l=R.get(n.node);if(!l||l.isText()&&l.text!=n.node.nodeValue)r=n;else if(s.docView.lastCompositionAfterCursor){let a=R.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=n)}}if(s.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function qr(s,t,e){let i=_n(s,e);if(!i)return null;let{node:n,from:r,to:o}=i,l=n.nodeValue;if(/[\n\r]/.test(l)||s.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Y(a.mapPos(r),a.mapPos(o),r,o),text:n}}function _r(s,t){return s.nodeType!=1?0:(t&&s.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var Ut=class extends ot{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Ur(s,t,e=1){let i=s.charCategorizer(t),n=s.doc.lineAt(t),r=t-n.from;if(n.length==0)return v.cursor(t);r==0?e=1:r==n.length&&(e=-1);let o=r,l=r;e<0?o=ct(n.text,r,!1):l=ct(n.text,r);let a=i(n.text.slice(o,l));for(;o>0;){let h=ct(n.text,o,!1);if(i(n.text.slice(h,o))!=a)break;o=h}for(;ls.defaultLineHeight*1.5){let l=s.viewState.heightOracle.textHeight,a=Math.floor((n-e.top-(s.defaultLineHeight-l)*.5)/l);r+=a*s.viewState.heightOracle.lineLength}let o=s.state.sliceDoc(e.from,e.to);return e.from+me(o,r,s.state.tabSize)}function Bi(s,t,e){let i=s.lineBlockAt(t);if(Array.isArray(i.type)){let n;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!n||r.type==N.Text&&(n.type!=r.type||(e<0?r.fromt)))&&(n=r)}}return n||i}return i}function Jr(s,t,e,i){let n=Bi(s,t.head,t.assoc||-1),r=!i||n.type!=N.Text||!(s.lineWrapping||n.widgetLineBreaks)?null:s.coordsAtPos(t.assoc<0&&t.head>n.from?t.head-1:t.head);if(r){let o=s.dom.getBoundingClientRect(),l=s.textDirectionAt(n.from),a=s.posAtCoords({x:e==(l==B.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return v.cursor(a,e?-1:1)}return v.cursor(e?n.to:n.from,e?-1:1)}function Fs(s,t,e,i){let n=s.state.doc.lineAt(t.head),r=s.bidiSpans(n),o=s.textDirectionAt(n.from);for(let l=t,a=null;;){let h=Dn(n,r,o,l,e),c=Tn;if(!h){if(n.number==(e?s.state.doc.lines:1))return l;c=`
+`,n=s.state.doc.line(n.number+(e?1:-1)),r=s.bidiSpans(n),h=s.visualLineSide(n,!e)}if(a){if(!a(c))return l}else{if(!i)return h;a=i(c)}l=h}}function Zr(s,t,e){let i=s.state.charCategorizer(t),n=i(e);return r=>{let o=i(r);return n==Cs.Space&&(n=o),n==o}}function to(s,t,e,i){let n=t.head,r=e?1:-1;if(n==(e?s.state.doc.length:0))return v.cursor(n,t.assoc);let o=t.goalColumn,l,a=s.contentDOM.getBoundingClientRect(),h=s.coordsAtPos(n,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),c=s.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=s.viewState.lineBlockAt(n);o==null&&(o=Math.min(a.right-a.left,s.defaultCharacterWidth*(n-p.from))),l=(r<0?p.top:p.bottom)+c}let f=a.left+o,d=s.viewState.heightOracle.textHeight>>1,u=i??d;for(let p=0;;p+=d){let g=l+(u+p)*r,m=Ei(s,{x:f,y:g},!1,r);if(e?g>a.bottom:gl:w{if(t>r&&tn(s)),e.from,t.head>e.from?-1:1);return i==e.from?e:v.cursor(i,is.viewState.docHeight)return new _(s.state.doc.length,-1);if(h=s.elementAtHeight(a),i==null)break;if(h.type==N.Text){if(i<0?h.tos.viewport.to)break;let d=s.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(d&&(i<0?d.top<=a+r:d.bottom>=a+r))break}let f=s.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+f:h.top-f}if(s.viewport.from>=h.to||s.viewport.to<=h.from){if(e)return null;if(h.type==N.Text){let f=Qr(s,n,h,o,l);return new _(f,f==h.from?1:-1)}}if(h.type!=N.Text)return a<(h.top+h.bottom)/2?new _(h.from,1):new _(h.to,-1);let c=s.docView.lineAt(h.from,2);return(!c||c.length!=h.length)&&(c=s.docView.lineAt(h.from,-2)),new Hi(s,o,l,s.textDirectionAt(h.from)).scanTile(c,h.from)}var Hi=class{constructor(t,e,i,n){this.view=t,this.x=e,this.y=i,this.baseDir=n,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+n.from>1;e:if(o.has(g)){let b=n+Math.floor(Math.random()*p);for(let w=0;w1)){if(w.bottomthis.y)(!h||h.top>w.top)&&(h=w),S=-1;else{let A=w.left>this.x?this.x-w.left:w.right(p+p+g)/3)return this.y=a.bottom-1,this.scan(t,e,!0);if(h&&h.top<(p+g+g)/3)return this.y=h.top+1,this.scan(t,e,!0)}let u=(l?this.dirAt(t[c],1):this.baseDir)==B.LTR;return{i:c,after:this.x>(d.left+d.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return re(t.dom,o,l).getClientRects()});return n.after?new _(i[n.i+1],-1):new _(i[n.i],1)}scanTile(t,e){if(!t.length)return new _(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:re(a.dom,0,a.length)).getClientRects()}),r=t.children[n.i],o=i[n.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):n.after?new _(i[n.i+1],-1):new _(o,1)}},Lt="\uFFFF",Pi=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet(Dt.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=Lt}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let n=t;;){this.findPointBefore(i,n);let r=this.text.length;this.readNode(n);let o=R.get(n),l=n.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=R.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:Pe(n))||Pe(l)&&(n.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!io(l,e)&&this.lineBreak(),n=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,n=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=n.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=R.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let n=i.iter();!n.next().done;)n.lineBreak?this.lineBreak():this.append(n.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(eo(t,i.node,i.offset)?e:0))}};function eo(s,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Yn(t.docView.tile,e,i,0))){let a=r||o?[]:no(t),h=new Pi(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=ro(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!yi(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),c=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!yi(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),f=t.viewport;if((y.ios||y.chrome)&&h!=c&&Math.min(h,c)<=l.main.from&&Math.max(h,c)>=l.main.to&&(f.from>0||f.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(v.range(c,h));else if(t.lineWrapping&&c==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let d=t.coordsAtPos(h,-1),u=0;d&&(u=t.inputState.lastTouchY<=d.bottom?-1:1),this.newSel=v.create([v.cursor(h,u)])}else this.newSel=v.single(c,h)}}};function Yn(s,t,e,i){if(s.isComposite()){let n=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,c=i;ae)return Yn(f,t,e,h);if(d>=t&&n==-1&&(n=a,r=h),h>e&&f.dom.parentNode==s.dom){o=a,l=c;break}c=d,h=d+f.breakAfter}return{from:r,to:l<0?i+s.length:l,startDOM:(n?s.children[n-1].dom.nextSibling:null)||s.dom.firstChild,endDOM:o=0?s.children[o].dom:null}}else return s.isText()?{from:i,to:i+s.length,startDOM:s.dom,endDOM:s.dom.nextSibling}:null}function Xn(s,t){let e,{newSel:i}=t,{state:n}=s,r=n.selection.main,o=s.inputState.lastKeyTime>Date.now()-100?s.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,c=null;(o===8||y.android&&t.text.length=l&&r.to<=a&&(t.typeOver||f!=t.text)&&f.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&f.slice(r.to-l)==t.text.slice(d=t.text.length-(f.length-(r.to-l)))?e={from:r.from,to:r.to,insert:K.of(t.text.slice(r.from-l,d).split(Lt))}:(u=$n(f,t.text,h-l,c))&&(y.chrome&&o==13&&u.toB==u.from+2&&t.text.slice(u.from,u.toB)==Lt+Lt&&u.toB--,e={from:l+u.from,to:l+u.toA,insert:K.of(t.text.slice(u.from,u.toB).split(Lt))})}else i&&(!s.hasFocus&&n.facet(nt)||Ie(i,r))&&(i=null);if(!e&&!i)return!1;if((y.mac||y.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&s.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=v.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:K.of([e.insert.toString().replace("."," ")])}):n.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:n.toText(s.inputState.insertingText)}:y.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==`
+ `&&s.lineWrapping&&(i&&(i=v.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:K.of([" "])}),e)return bs(s,e,i,o);if(i&&!Ie(i,r)){let l=!1,a="select";return s.inputState.lastSelectionTime>Date.now()-50&&(s.inputState.lastSelectionOrigin=="select"&&(l=!0),a=s.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=jn(n.facet(ae).map(h=>h(s)),i))),s.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function bs(s,t,e,i=-1){if(y.ios&&s.inputState.flushIOSKey(t))return!0;let n=s.state.selection.main;if(y.android&&(t.to==n.to&&(t.from==n.from||t.from==n.from-1&&s.state.sliceDoc(t.from,n.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Nt(s.contentDOM,"Enter",13)||(t.from==n.from-1&&t.to==n.to&&t.insert.length==0||i==8&&t.insert.lengthn.head)&&Nt(s.contentDOM,"Backspace",8)||t.from==n.from&&t.to==n.to+1&&t.insert.length==0&&Nt(s.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();s.inputState.composing>=0&&s.inputState.composing++;let o,l=()=>o||(o=so(s,t,e));return s.state.facet(En).some(a=>a(s,t.from,t.to,r,l))||s.dispatch(l()),!0}function so(s,t,e){let i,n=s.state,r=n.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromf(s)),h,a);t.from==c&&(o=c)}if(o>-1)i={changes:t,selection:v.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&s.inputState.composing<0){let a=r.fromt.to?n.sliceDoc(t.to,r.to):"";i=n.replaceSelection(s.state.toText(a+t.insert.sliceString(0,void 0,s.state.lineBreak)+h))}else{let a=n.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(n.selection.ranges.length>1&&(s.inputState.composing>=0||s.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let c=s.state.sliceDoc(t.from,t.to),f,d=e&&_n(s,e.main.head);if(d){let p=t.insert.length-(t.to-t.from);f={from:d.from,to:d.to-p}}else f=s.state.doc.lineAt(r.head);let u=r.to-t.to;i=n.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-u,m=g-c.length;if(s.state.sliceDoc(m,g)!=c||g>=f.from&&m<=f.to)return{range:p};let b=n.changes({from:m,to:g,insert:t.insert}),w=p.to-r.to;return{changes:b,range:h?v.range(Math.max(0,h.anchor+w),Math.max(0,h.head+w)):p.map(b)}})}else i={changes:a,selection:h&&n.selection.replaceRange(h)}}let l="input.type";return(s.composing||s.inputState.compositionPendingChange&&s.inputState.compositionEndedAt>Date.now()-50)&&(s.inputState.compositionPendingChange=!1,l+=".compose",s.inputState.compositionFirstChange&&(l+=".start",s.inputState.compositionFirstChange=!1)),n.update(i,{userEvent:l,scrollIntoView:!0})}function $n(s,t,e,i){let n=Math.min(s.length,t.length),r=0;for(;r0&&l>0&&s.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function no(s){let t=[];if(s.root.activeElement!=s.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:n,focusOffset:r}=s.observer.selectionRange;return e&&(t.push(new Fe(e,i)),(n!=e||r!=i)&&t.push(new Fe(n,r))),t}function ro(s,t){if(s.length==0)return null;let e=s[0].pos,i=s.length==2?s[1].pos:e;return e>-1&&i>-1?v.single(e+t,i+t):null}function Ie(s,t){return t.head==s.main.head&&t.anchor==s.main.anchor}var Wi=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,y.safari&&t.contentDOM.addEventListener("input",()=>null),y.gecko&&vo(t.contentDOM.ownerDocument)}handleEvent(t){!po(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let n of i.observers)n(this.view,e);for(let n of i.handlers){if(e.defaultPrevented)break;if(n(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=lo(t),i=this.handlers,n=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(n.removeEventListener(r,this.handleEvent),l=null),l||n.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&n.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&Un.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),y.android&&y.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;if(y.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&(Gn.some(e=>e.keyCode==t.keyCode)&&!t.ctrlKey||ao.indexOf(t.key)>-1&&t.ctrlKey)){let e={ctrlKey:t.ctrlKey,altKey:t.altKey,metaKey:t.metaKey,shiftKey:t.shiftKey};return e.shiftKey&&y.ios&&!/^(off|none)$/.test(this.view.contentDOM.autocapitalize)&&oo(this.view.win)&&(e.shiftKey=!1),this.pendingIOSKey={key:t.key,keyCode:t.keyCode,mods:e},setTimeout(()=>this.flushIOSKey(),250),!0}return t.keyCode!=229&&this.view.observer.forceFlush(),!1}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:y.safari&&!y.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function oo(s){return s.visualViewport?s.visualViewport.height*s.visualViewport.scale/s.document.documentElement.clientHeight<.85:!1}function Is(s,t){return(e,i)=>{try{return t.call(s,i,e)}catch(n){J(e.state,n)}}}function lo(s){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of s){let n=i.spec,r=n&&n.plugin.domEventHandlers,o=n&&n.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Is(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Is(i.value,a))}}for(let i in $)e(i).handlers.push($[i]);for(let i in F)e(i).observers.push(F[i]);return t}var Gn=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],ao="dthko",Un=[16,17,18,20,91,92,224,225],we=6;function xe(s){return Math.max(0,s)*.7+8}function ho(s,t){return Math.max(Math.abs(s.clientX-t.clientX),Math.abs(s.clientY-t.clientY))}var Vi=class{constructor(t,e,i,n){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=n,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=bn(t.contentDOM),this.atoms=t.state.facet(ae).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet(Dt.allowMultipleSelections)&&co(t,e),this.dragging=uo(t,e)&&Zn(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&ho(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,n=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:n,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=ms(this.view);t.clientX-a.left<=n+we?e=-xe(n-t.clientX):t.clientX+a.right>=o-we&&(e=xe(t.clientX-o)),t.clientY-a.top<=r+we?i=-xe(r-t.clientY):t.clientY+a.bottom>=l-we&&(i=xe(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=jn(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function co(s,t){let e=s.state.facet(On);return e.length?e[0](t):y.mac?t.metaKey:t.ctrlKey}function fo(s,t){let e=s.state.facet(Ln);return e.length?e[0](t):y.mac?!t.altKey:!t.ctrlKey}function uo(s,t){let{main:e}=s.state.selection;if(e.empty)return!1;let i=se(s.root);if(!i||i.rangeCount==0)return!0;let n=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function po(s,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=s.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=R.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var $=Object.create(null),F=Object.create(null),Qn=y.ie&&y.ie_version<15||y.ios&&y.webkit_version<604;function go(s){let t=s.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{s.focus(),e.remove(),Jn(s,e.value)},50)}function ti(s,t,e){for(let i of s.facet(t))e=i(e,s);return e}function Jn(s,t){t=ti(s.state,us,t);let{state:e}=s,i,n=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if(Fi!=null&&e.selection.ranges.every(a=>a.empty)&&Fi==r.toString()){let a=-1;i=e.changeByRange(h=>{let c=e.doc.lineAt(h.from);if(c.from==a)return{range:h};a=c.from;let f=e.toText((o?r.line(n++).text:t)+e.lineBreak);return{changes:{from:c.from,insert:f},range:v.cursor(h.from+f.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(n++);return{changes:{from:a.from,to:a.to,insert:h.text},range:v.cursor(a.from+h.length)}}):i=e.replaceSelection(r);s.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}F.scroll=s=>{let t=s.inputState;t.lastScrollTop=s.scrollDOM.scrollTop,t.lastScrollLeft=s.scrollDOM.scrollLeft,y.ios&&!t.touchActive&&(t.lastIOSMomentumScroll=Date.now())};F.wheel=F.mousewheel=s=>{s.inputState.lastWheelEvent=Date.now()};$.keydown=(s,t)=>(s.inputState.setSelectionOrigin("select"),t.keyCode==27&&s.inputState.tabFocusMode!=0&&(s.inputState.tabFocusMode=Date.now()+2e3),!1);F.touchstart=(s,t)=>{let e=s.inputState,i=t.targetTouches[0];e.touchActive=!0,e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};F.touchmove=s=>{s.inputState.setSelectionOrigin("select.pointer")};F.touchend=(s,t)=>{s.inputState.touchActive=!1};$.mousedown=(s,t)=>{if(s.observer.flush(),s.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of s.state.facet(Rn))if(e=i(s,t),e)break;if(!e&&t.button==0&&(e=bo(s,t)),e){let i=!s.hasFocus;s.inputState.startMouseSelection(new Vi(s,t,e,i)),i&&s.observer.ignore(()=>{yn(s.contentDOM);let r=s.root.activeElement;r&&!r.contains(s.contentDOM)&&r.blur()});let n=s.inputState.mouseSelection;if(n)return n.start(t),n.dragging===!1}else s.inputState.setSelectionOrigin("select.pointer");return!1};function zs(s,t,e,i){if(i==1)return v.cursor(t,e);if(i==2)return Ur(s.state,t,e);{let n=s.docView.lineAt(t,e),r=s.state.doc.lineAt(n?n.posAtEnd:t),o=n?n.posAtStart:r.from,l=n?n.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-s.clientX)<2&&Math.abs(t.clientY-s.clientY)<2?(qs+1)%3:1}function bo(s,t){let e=s.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=Zn(t),n=s.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),n=n.map(r.changes))},get(r,o,l){let a=s.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,c=zs(s,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let f=zs(s,e.pos,e.assoc,i),d=Math.min(f.from,c.from),u=Math.max(f.to,c.to);c=d1&&(h=yo(n,a.pos))?h:l?n.addRange(c):v.create([c])}}}function yo(s,t){for(let e=0;e=t)return v.create(s.ranges.slice(0,e).concat(s.ranges.slice(e+1)),s.mainIndex==e?0:s.mainIndex-(s.mainIndex>e?1:0))}return null}$.dragstart=(s,t)=>{let{selection:{main:e}}=s.state;if(t.target.draggable){let n=s.docView.tile.nearest(t.target);if(n&&n.isWidget()){let r=n.posAtStart,o=r+n.length;(r>=e.to||o<=e.from)&&(e=v.undirectionalRange(r,o))}}let{inputState:i}=s;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",ti(s.state,ps,s.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};$.dragend=s=>(s.inputState.draggedContent=null,!1);function js(s,t,e,i){if(e=ti(s.state,us,e),!e)return;let n=s.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=s.inputState,o=i&&r&&fo(s,t)?{from:r.from,to:r.to}:null,l={from:n,insert:e},a=s.state.changes(o?[o,l]:l);s.focus(),s.dispatch({changes:a,selection:{anchor:a.mapPos(n,-1),head:a.mapPos(n,1)},userEvent:o?"move.drop":"input.drop"}),s.inputState.draggedContent=null}$.drop=(s,t)=>{if(!t.dataTransfer)return!1;if(s.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),n=0,r=()=>{++n==e.length&&js(s,t,i.filter(o=>o!=null).join(s.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return js(s,t,i,!0),!0}return!1};$.paste=(s,t)=>{if(s.state.readOnly)return!0;s.observer.flush();let e=Qn?null:t.clipboardData;return e?(Jn(s,e.getData("text/plain")||e.getData("text/uri-list")),!0):(go(s),!1)};function wo(s,t){let e=s.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),s.focus()},50)}function xo(s){let t=[],e=[],i=!1;for(let n of s.selection.ranges)n.empty||(t.push(s.sliceDoc(n.from,n.to)),e.push(n));if(!t.length){let n=-1;for(let{from:r}of s.selection.ranges){let o=s.doc.lineAt(r);o.number>n&&(t.push(o.text),e.push({from:o.from,to:Math.min(s.doc.length,o.to+1)})),n=o.number}i=!0}return{text:ti(s,ps,t.join(s.lineBreak)),ranges:e,linewise:i}}var Fi=null;$.copy=$.cut=(s,t)=>{if(!jt(s.contentDOM,s.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:n}=xo(s.state);if(!e&&!n)return!1;Fi=n?e:null,t.type=="cut"&&!s.state.readOnly&&s.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=Qn?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(wo(s,e),!1)};var tr=vs.define();function er(s,t){let e=[];for(let i of s.facet(Hn)){let n=i(s,t);n&&e.push(n)}return e.length?s.update({effects:e,annotations:tr.of(!0)}):null}function ir(s){setTimeout(()=>{let t=s.hasFocus;if(t!=s.inputState.notifiedFocused){let e=er(s.state,t);e?s.dispatch(e):s.update([])}},10)}F.focus=s=>{s.inputState.lastFocusTime=Date.now(),!s.scrollDOM.scrollTop&&(s.inputState.lastScrollTop||s.inputState.lastScrollLeft)&&(s.scrollDOM.scrollTop=s.inputState.lastScrollTop,s.scrollDOM.scrollLeft=s.inputState.lastScrollLeft),ir(s)};F.blur=s=>{s.observer.clearSelectionRange(),ir(s)};F.compositionstart=F.compositionupdate=s=>{s.observer.editContext||(s.inputState.compositionFirstChange==null&&(s.inputState.compositionFirstChange=!0),s.inputState.composing<0&&(s.inputState.composing=0))};F.compositionend=s=>{s.observer.editContext||(s.inputState.composing=-1,s.inputState.compositionEndedAt=Date.now(),s.inputState.compositionPendingKey=!0,s.inputState.compositionPendingChange=s.observer.pendingRecords().length>0,s.inputState.compositionFirstChange=null,y.chrome&&y.android?s.observer.flushSoon():s.inputState.compositionPendingChange?Promise.resolve().then(()=>s.observer.flush()):setTimeout(()=>{s.inputState.composing<0&&s.docView.hasComposition&&s.update([])},50))};F.contextmenu=s=>{s.inputState.lastContextMenu=Date.now()};$.beforeinput=(s,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(s.inputState.insertingText=t.data,s.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&s.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=s.posAtDOM(l.startContainer,l.startOffset),h=s.posAtDOM(l.endContainer,l.endOffset);return bs(s,{from:a,to:h,insert:s.state.toText(r)},null),!0}}let n;if(y.chrome&&y.android&&(n=Gn.find(r=>r.inputType==t.inputType))&&(s.observer.delayAndroidKey(n.key,n.keyCode),n.key=="Backspace"||n.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&s.hasFocus&&(s.contentDOM.blur(),s.focus())},100)}return y.ios&&t.inputType=="deleteContentForward"&&s.observer.flushSoon(),y.safari&&t.inputType=="insertText"&&s.inputState.composing>=0&&setTimeout(()=>F.compositionend(s,t),20),!1};var Ys=new Set;function vo(s){Ys.has(s)||(Ys.add(s),s.addEventListener("copy",()=>{}),s.addEventListener("cut",()=>{}))}var Xs=["pre-wrap","normal","pre-line","break-spaces"],Mt=!1;function Ii(){Mt=!1}var ze=class{constructor(t){this.lineWrapping=t,this.doc=K.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Xs.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=n,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>Te&&(Mt=!0),this.height=t)}replace(t,e,i){return s.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,n){let r=this,o=i.doc;for(let l=n.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:c,toB:f}=n[l],d=r.lineAt(a,O.ByPosNoHeight,i.setDoc(e),0,0),u=d.to>=h?d:r.lineAt(h,O.ByPosNoHeight,i,0,0);for(f+=u.to-h,h=u.to;l>0&&d.from<=n[l-1].toA;)a=n[l-1].fromA,c=n[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,n-=l.size}else if(r>n*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(n=r&&o(this.lineAt(0,O.ByPos,i,n,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more&&this.setMeasuredHeight(n),this.outdated=!1,this}toString(){return`block(${this.length})`}},q=class s extends _e{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new X(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let n=i[0];return i.length==1&&(n instanceof s||n instanceof ut&&n.flags&4)&&Math.abs(this.length-n.length)<10?(n instanceof ut?n=new s(n.length,this.height,this.spaceAbove):n.height=this.height,this.outdated||(n.outdated=!1),n):z.of(i)}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more?this.setMeasuredHeight(n):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ut=class s extends z{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,n=t.doc.lineAt(e+this.length).number,r=n-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:n,perLine:o,perChar:l}}blockAt(t,e,i,n){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,n);if(e.lineWrapping){let h=n+(t0){let r=i[i.length-1];r instanceof s?i[i.length-1]=new s(r.length+n):i.push(null,new s(n-1))}if(t>0){let r=i[0];r instanceof s?i[0]=new s(t+r.length):i.unshift(new s(t-1),null)}return z.of(i)}decomposeLeft(t,e){e.push(new s(t-1),null)}decomposeRight(t,e){e.push(null,new s(this.length-t-1))}updateHeight(t,e=0,i=!1,n){let r=e+this.length;if(n&&n.from<=e+this.length&&n.more){let o=[],l=Math.max(e,n.from),a=-1;for(n.from>e&&o.push(new s(n.from-e-1).updateHeight(t,e));l<=r&&n.more;){let c=t.doc.lineAt(l).length;o.length&&o.push(null);let f=n.heights[n.index++],d=0;f<0&&(d=-f,f=n.heights[n.index++]),a==-1?a=f:Math.abs(f-a)>=Te&&(a=-2);let u=new q(c,f,d);u.outdated=!1,o.push(u),l+=c+1}l<=r&&o.push(null,new s(r-l).updateHeight(t,l));let h=z.of(o);return(a<0||Math.abs(h.height-this.height)>=Te||Math.abs(a-this.heightMetrics(t,e).perLine)>=Te)&&(Mt=!0),qe(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},zi=class extends z{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,n){let r=i+this.left.height;return tl))return h;let c=e==O.ByPosNoHeight?O.ByPosNoHeight:O.ByPos;return a?h.join(this.right.lineAt(l,c,i,o,l)):this.left.lineAt(l,c,i,n,r).join(h)}forEachLine(t,e,i,n,r,o){let l=n+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,O.ByPos,i,n,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let n=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-n,e-n,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&$s(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,n=i+this.break;if(t>=n)return this.right.decomposeRight(t-n,e);t2*e.size||e.size>2*t.size?z.of(this.break?[t,null,e]:[t,e]):(this.left=qe(this.left,t),this.right=qe(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,n){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return n&&n.from<=e+r.length&&n.more?a=r=r.updateHeight(t,e,i,n):r.updateHeight(t,e,i),n&&n.from<=l+o.length&&n.more?a=o=o.updateHeight(t,l,i,n):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function $s(s,t){let e,i;s[t]==null&&(e=s[t-1])instanceof ut&&(i=s[t+1])instanceof ut&&s.splice(t-1,3,new ut(e.length+1+i.length))}var Co=5,Ki=class s{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),n=this.nodes[this.nodes.length-1];n instanceof q?n.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new q(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=Co)&&this.addLineDeco(n,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new q(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ut(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof q)return t;let e=new q(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let n=this.ensureLine();n.length+=i,n.collapsed+=i,n.widgetHeight=Math.max(n.widgetHeight,t),n.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof q)&&!this.isCovered?this.nodes.push(new q(0,-1,0)):(this.writtenToc.clientHeight||c.scrollWidth>c.clientWidth)&&f.overflow!="visible"){let d=c.getBoundingClientRect();r=Math.max(r,d.left),o=Math.min(o,d.right),l=Math.max(l,d.top),a=Math.min(h==s.parentNode?n.innerHeight:a,d.bottom)}h=f.position=="absolute"||f.position=="fixed"?c.offsetParent:c.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function Ao(s){let t=s.getBoundingClientRect(),e=s.ownerDocument.defaultView||window;return t.left0&&t.top0}function To(s,t){let e=s.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var Jt=class{constructor(t,e,i,n){this.from=t,this.to=e,this.size=i,this.displaySize=n}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof n!="function"&&n.class=="cm-lineWrapping");this.heightOracle=new ze(i),this.stateDeco=Us(e),this.heightMap=z.empty().applyChanges(this.stateDeco,K.empty,this.heightOracle.setDoc(e.doc),[new Y(0,0,0,e.doc.length)]);for(let n=0;n<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());n++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=T.set(this.lineGaps.map(n=>n.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let n=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>n>=r&&n<=o)){let{from:r,to:o}=this.lineBlockAt(n);t.push(new Bt(r,o))}}return this.viewports=t.sort((i,n)=>i.from-n.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Gs:new ji(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(qt(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Us(this.state);let n=t.changedRanges,r=Y.extendWithRanges(n,ko(i,this.stateDeco,t?t.changes:si.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Ii(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Mt)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Nn)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),n=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?B.RTL:B.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,c=0;if(l.width&&l.height){let{scaleX:k,scaleY:x}=mn(e,l);(k>.005&&Math.abs(this.scaleX-k)>.005||x>.005&&Math.abs(this.scaleY-x)>.005)&&(this.scaleX=k,this.scaleY=x,h|=16,o=a=!0)}let f=(parseInt(i.paddingTop)||0)*this.scaleY,d=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=f||this.paddingBottom!=d)&&(this.paddingTop=f,this.paddingBottom=d,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(n.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let u=bn(this.view.contentDOM,!1).y;u!=this.scrollParent&&(this.scrollParent=u,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=wn(this.scrollParent||t.win);let g=(this.printing?To:Mo)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let w=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(w!=this.inView&&(this.inView=w,w&&(a=!0)),!this.inView&&!this.scrollTarget&&!Ao(t.dom))return 0;let S=l.width;if((this.contentDOMWidth!=S||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let k=t.docView.measureVisibleLineHeights(this.viewport);if(n.mustRefreshForHeights(k)&&(o=!0),o||n.lineWrapping&&Math.abs(S-this.contentDOMWidth)>n.charWidth){let{lineHeight:x,charWidth:D,textHeight:P}=t.docView.measureTextSize();o=x>0&&n.refresh(r,x,D,P,Math.max(5,S/D),k),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?c=Math.max(m,b):m<0&&b<0&&(c=Math.min(m,b)),Ii();for(let x of this.viewports){let D=x.from==this.viewport.from?k:t.docView.measureVisibleLineHeights(x);this.heightMap=(o?z.empty().applyChanges(this.stateDeco,K.empty,this.heightOracle,[new Y(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(n,0,o,new Ke(x.from,D))}Mt&&(h|=2)}let A=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return A&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(c,this.scrollTarget),h|=this.updateForViewport()),(h&2||A)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),n=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new Bt(n.lineAt(o-i*1e3,O.ByHeight,r,0,0).from,n.lineAt(l+(1-i)*1e3,O.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let c=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),f=n.lineAt(h,O.ByPos,r,0,0),d;e.y=="center"?d=(f.top+f.bottom)/2-c/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&n>o-2*1e3&&r>1,o=n<<1;if(this.defaultTextDirection!=B.LTR&&!i)return[];let l=[],a=(c,f,d,u)=>{if(f-cc&&bb.from>=d.from&&b.to<=d.to&&Math.abs(b.from-c)b.fromw));if(!m){if(fS.from<=f&&S.to>=f)){let S=e.moveToLineBoundary(v.cursor(f),!1,!0).head;S>c&&(f=S)}let b=this.gapSize(d,c,f,u),w=i||b<2e6?b:2e6;m=new Jt(c,f,b,w)}l.push(m)},h=c=>{if(c.length2e6)for(let x of t)x.from>=c.from&&x.fromc.from&&a(c.from,u,c,f),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];E.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let n=0;if(i.length!=this.visibleRanges.length)n=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||qt(this.heightMap.lineAt(t,O.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||qt(this.heightMap.lineAt(this.scaler.fromDOM(t),O.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return qt(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},Bt=class{constructor(t,e){this.from=t,this.to=e}};function Do(s,t,e){let i=[],n=s,r=0;return E.spans(e,s,t,{span(){},point(o,l){o>n&&(i.push({from:n,to:o}),r+=o-n),n=l}},20),n=1)return t[t.length-1].to;let i=Math.floor(s*e);for(let n=0;;n++){let{from:r,to:o}=t[n],l=o-r;if(i<=l)return r+i;i-=l}}function Se(s,t){let e=0;for(let{from:i,to:n}of s.ranges){if(t<=n){e+=t-i;break}e+=n-i}return e/s.total}function Oo(s,t){for(let e of s)if(t(e))return e}var Gs={toDOM(s){return s},fromDOM(s){return s},scale:1,eq(s){return s==this}};function Us(s){let t=s.facet(Ze).filter(i=>typeof i!="function"),e=s.facet(gs).filter(i=>typeof i!="function");return e.length&&t.push(E.join(e)),t}var ji=class s{constructor(t,e,i){let n=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,O.ByPos,t,0,0).top,c=e.lineAt(a,O.ByPos,t,0,0).bottom;return n+=c-h,{from:l,to:a,top:h,bottom:c,domTop:0,domBottom:0}}),this.scale=(7e6-n)/(e.height-n);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,n=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function qt(s,t){if(t.scale==1)return s;let e=t.toDOM(s.top),i=t.toDOM(s.bottom);return new X(s.from,s.length,e,i-e,Array.isArray(s._content)?s._content.map(n=>qt(n,t)):s._content)}var Ce=C.define({combine:s=>s.join(" ")}),Yi=C.define({combine:s=>s.indexOf(!0)>-1}),Xi=it.newName(),sr=it.newName(),nr=it.newName(),rr={"&light":"."+sr,"&dark":"."+nr};function $i(s,t,e){return new it(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,n=>{if(n=="&")return s;if(!e||!e[n])throw new RangeError(`Unsupported selector: ${n}`);return e[n]}):s+" "+i}})}var Lo=$i("."+Xi,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{userSelect:"none",position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},".cm-panels-top":{top:"0"},".cm-panels-bottom":{bottom:"0"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},rr),Ro={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},fi=y.ie&&y.ie_version<=11,Gi=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new wi,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(y.ie&&y.ie_version<=11||y.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&y.android&&t.constructor.EDIT_CONTEXT!==!1&&!(y.chrome&&y.chrome_version<126)&&(this.editContext=new Ui(t),t.state.facet(nt)&&(t.contentDOM.editContext=this.editContext.editContext)),fi&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,n=this.selectionRange;if(i.state.facet(nt)?i.root.activeElement!=this.dom:!jt(this.dom,n))return;let r=n.anchorNode&&i.docView.tile.nearest(n.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(y.ie&&y.ie_version<=11||y.android&&y.chrome)&&!i.state.selection.main.empty&&n.focusNode&&Xt(n.focusNode,n.focusOffset,n.anchorNode,n.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=se(t.root);if(!e)return!1;let i=y.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&Bo(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let n=jt(this.dom,i);return n&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Nt(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(n)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,n=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(n=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:n}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),n=this.selectionChanged&&jt(this.dom,this.selectionRange);if(t<0&&!n)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new Ni(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,n=Xn(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!Ie(this.view.state.selection,e.newSel.main))&&this.view.update([]),n}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qs(e,t.previousSibling||t.target.previousSibling,-1),n=Qs(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:n?e.posBefore(n):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(nt)!=t.state.facet(nt)&&(t.view.contentDOM.editContext=t.state.facet(nt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let n of this.scrollTargets)n.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qs(s,t,e){for(;t;){let i=R.get(t);if(i&&i.parent==s)return i;let n=t.parentNode;t=n!=s.dom?n:e>0?t.nextSibling:t.previousSibling}return null}function Js(s,t){let e=t.startContainer,i=t.startOffset,n=t.endContainer,r=t.endOffset,o=s.docView.domAtPos(s.state.selection.main.anchor,1);return Xt(o.node,o.offset,n,r)&&([e,i,n,r]=[n,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:n,focusOffset:r}}function Bo(s,t){if(t.getComposedRanges){let n=t.getComposedRanges(s.root)[0];if(n)return Js(s,n)}let e=null;function i(n){n.preventDefault(),n.stopImmediatePropagation(),e=n.getTargetRanges()[0]}return s.contentDOM.addEventListener("beforeinput",i,!0),s.dom.ownerDocument.execCommand("indent"),s.contentDOM.removeEventListener("beforeinput",i,!0),e?Js(s,e):null}var Ui=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let n=t.state.selection.main,{anchor:r,head:o}=n,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let c=$n(t.state.sliceDoc(l,a),i.text,(h?n.from:n.to)-l,h?"end":null);if(!c){let d=v.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));Ie(d,n)||t.dispatch({selection:d,userEvent:"select"});return}let f={from:c.from+l,to:c.toA+l,insert:K.of(i.text.slice(c.from,c.toB).split(`
+`))};if((y.mac||y.android)&&f.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(f={from:l,to:a,insert:K.of([i.text.replace("."," ")])}),this.pendingContextChange=f,!t.state.readOnly){let d=this.to-this.from+(f.to-f.from+f.insert.length);bs(t,f,v.single(this.toEditorPos(i.selectionStart,d),this.toEditorPos(i.selectionEnd,d)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),f.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let n=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let n=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{let n=se(i.root);n&&n.rangeCount&&this.editContext.updateSelectionBounds(n.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,n=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let c=h.length-(o-r);if(n&&o>=n.to)if(n.from==r&&n.to==o&&n.insert.eq(h)){n=this.pendingContextChange=null,e+=c,this.to+=c;return}else n=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=c,this.to+=c;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=c}e+=c}),n&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(n=>!n.isUserEvent("input.type")&&n.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),n=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=n)&&this.editContext.updateSelection(i,n)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},M=class s{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(n=>n.forEach(r=>i(r,this)))||(n=>this.update(n)),this.dispatch=this.dispatch.bind(this),this._root=t.root||Ar(t.parent)||document,this.viewState=new je(this,t.state||Dt.create(t)),t.scrollTo&&t.scrollTo.is(ye)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Rt).map(n=>new Gt(n));for(let n of this.plugins)n.update(this);this.observer=new Gi(this),this.inputState=new Wi(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Ve(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof Ss?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,n,r=this.state;for(let d of t){if(d.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=d.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(d=>d.annotation(tr))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=er(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,c=null;if(h?(this.observer.clearDelayedAndroidKey(),c=this.observer.readChange(),(c&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(c=null)):this.observer.clear(),r.facet(Dt.phrases)!=this.state.facet(Dt.phrases))return this.setState(r);n=Ne.create(this,r,t),n.flags|=l;let f=this.viewState.scrollTarget;try{this.updateState=2;for(let d of t){if(f&&(f=f.map(d.changes)),d.scrollIntoView){let{main:u}=d.state.selection,{x:p,y:g}=this.state.facet(s.cursorScrollMargin);f=new $t(u.empty?u:v.cursor(u.head,u.head>u.anchor?-1:1),"nearest","nearest",g,p)}for(let u of d.effects)u.is(ye)&&(f=u.value.clip(this.state))}this.viewState.update(n,f),this.bidiCache=Ye.update(this.bidiCache,n.changes),n.empty||(this.updatePlugins(n),this.inputState.update(n)),e=this.docView.update(n),this.state.facet(Kt)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(d=>d.isUserEvent("select.pointer")))}finally{this.updateState=0}if(n.startState.facet(Ce)!=n.state.facet(Ce)&&(this.viewState.mustMeasureContent=!0),(e||i||f||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!n.empty)for(let d of this.state.facet(Ci))try{d(n)}catch(u){J(this.state,u,"update listener")}(a||c)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),c&&!Xn(this,c)&&h.force&&Nt(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new je(this,t),this.plugins=t.facet(Rt).map(i=>new Gt(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new Ve(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Rt),i=t.state.facet(Rt);if(e!=i){let n=[];for(let r of i){let o=e.indexOf(r);if(o<0)n.push(new Gt(r));else{let l=this.plugins[o];l.mustUpdate=t,n.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=n,this.pluginMap.clear()}else for(let n of this.plugins)n.mustUpdate=t;for(let n=0;n-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,n=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(n-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(wn(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let u=this.viewState.scrollAnchorAt(n);r=u.from,o=u.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let c=h.map(u=>{try{return u.read(this)}catch(p){return J(this.state,p),Zs}}),f=Ne.create(this,this.state,[]),d=!1;f.flags|=a,e?e.flags|=a:e=f,this.updateState=2,f.empty||(this.updatePlugins(f),this.inputState.update(f),this.updateAttrs(),d=this.docView.update(f),d&&this.docViewUpdate());for(let u=0;u1||p<-1)&&!(y.ios&&this.inputState.lastIOSMomentumScroll>Date.now()-100)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){n=n+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Ci))l(e)}get themeClasses(){return Xi+" "+(this.state.facet(Yi)?nr:sr)+" "+this.state.facet(Ce)}updateAttrs(){let t=tn(this,Fn,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(nt)?"true":"false",class:"cm-content",style:`${y.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),tn(this,Je,e);let i=this.observer.ignore(()=>{let n=Es(this.contentDOM,this.contentAttrs,e),r=Es(this.dom,this.editorAttrs,t);return n||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let n of i.effects)if(n.is(s.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=n.value}}mountStyles(){this.styleModules=this.state.facet(Kt);let t=this.state.facet(s.cspNonce);it.mount(this.root,this.styleModules.concat(Lo).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ci(this,t,Fs(this,t,e,i))}moveByGroup(t,e){return ci(this,t,Fs(this,t,e,i=>Zr(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),n=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return v.cursor(r.side(e,n)+t.from,r.forward(!e,n)?1:-1)}moveToLineBoundary(t,e,i=!0){return Jr(this,t,e,i)}moveVertically(t,e,i){return ci(this,t,to(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ei(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ei(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.state.doc.lineAt(t),n=this.bidiSpans(i),r=n[j.find(n,t-i.from,-1,e)];return this.docView.coordsAt(t,e,r.dir==B.RTL)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Pn)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>Eo)return An(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||kn(r.isolates,i=Ns(this,t))))return r.order;i||(i=Ns(this,t));let n=Mn(t.text,e,i);return this.bidiCache.push(new Ye(t.from,t.to,e,i,!0,n)),n}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||y.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{yn(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,n,r,o;return ye.of(new $t(typeof t=="number"?v.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(n=e.x)!==null&&n!==void 0?n:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return ye.of(new $t(v.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return W.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return W.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=it.newName(),n=[Ce.of(i),Kt.of($i(`.${i}`,t))];return e&&e.dark&&n.push(Yi.of(!0)),n}static baseTheme(t){return ue.lowest(Kt.of($i("."+Xi,t,rr)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),n=i&&R.get(i)||R.get(t);return((e=n?.root)===null||e===void 0?void 0:e.view)||null}};M.styleModule=Kt;M.inputHandler=En;M.clipboardInputFilter=us;M.clipboardOutputFilter=ps;M.scrollHandler=Wn;M.focusChangeEffect=Hn;M.perLineTextDirection=Pn;M.exceptionSink=Bn;M.updateListener=Ci;M.editable=nt;M.mouseSelectionStyle=Rn;M.dragMovesSelection=Ln;M.clickAddsSelectionRange=On;M.decorations=Ze;M.blockWrappers=In;M.outerDecorations=gs;M.atomicRanges=ae;M.bidiIsolatedRanges=zn;M.cursorScrollMargin=C.define({combine:s=>{let t=5,e=5;for(let i of s)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});M.scrollMargins=Kn;M.darkTheme=Yi;M.cspNonce=C.define({combine:s=>s.length?s[0]:""});M.contentAttributes=Je;M.editorAttributes=Fn;M.lineWrapping=M.contentAttributes.of({class:"cm-lineWrapping"});M.announce=G.define();var Eo=4096,Zs={},Ye=class s{constructor(t,e,i,n,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=n,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],n=t.length?t[t.length-1].dir:B.LTR;for(let r=Math.max(0,t.length-10);r=0;n--){let r=i[n],o=typeof r=="function"?r(s):r;o&&cs(o,e)}return e}var Ho=y.mac?"mac":y.windows?"win":y.linux?"linux":"key";function Po(s,t){let e=s.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let n,r,o,l;for(let a=0;ai.concat(n),[]))),e}function Nl(s,t,e){return lr(or(s.state),t,s,e)}var dt=null,Vo=4e3;function Fo(s,t=Ho){let e=Object.create(null),i=Object.create(null),n=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,c)=>{var f,d;let u=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>Po(b,t));for(let b=1;b{let A=dt={view:S,prefix:w,scope:o};return setTimeout(()=>{dt==A&&(dt=null)},Vo),!0}]})}let g=p.join(" ");n(g,!1);let m=u[g]||(u[g]={preventDefault:!1,stopPropagation:!1,run:((d=(f=u._any)===null||f===void 0?void 0:f.run)===null||d===void 0?void 0:d.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),c&&(m.stopPropagation=!0)};for(let o of s){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let c=e[h]||(e[h]=Object.create(null));c._any||(c._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:f}=o;for(let d in c)c[d].run.push(u=>f(u,Qi))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var Qi=null;function lr(s,t,e,i){Qi=t;let n=Ds(t),r=ii(n,0),o=xs(r)==n.length&&n!=" ",l="",a=!1,h=!1,c=!1;dt&&dt.view==e&&dt.scope==i&&(l=dt.prefix+" ",Un.indexOf(t.keyCode)<0&&(h=!0,dt=null));let f=new Set,d=m=>{if(m){for(let b of m.run)if(!f.has(b)&&(f.add(b),b(e)))return m.stopPropagation&&(c=!0),!0;m.preventDefault&&(m.stopPropagation&&(c=!0),h=!0)}return!1},u=s[i],p,g;return u&&(d(u[l+ke(n,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(y.windows&&t.ctrlKey&&t.altKey)&&!(y.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=st[t.keyCode])&&p!=n?(d(u[l+ke(p,t,!0)])||t.shiftKey&&(g=Ot[t.keyCode])!=n&&g!=p&&d(u[l+ke(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&d(u[l+ke(n,t,!0)])&&(a=!0),!a&&d(u._any)&&(a=!0)),h&&(a=!0),a&&c&&t.stopPropagation(),Qi=null,a}var vt=class s{constructor(t,e,i,n,r){this.className=t,this.left=e,this.top=i,this.width=n,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let n=t.coordsAtPos(i.head,i.assoc||1);if(!n)return[];let r=ar(t);return[new s(e,n.left-r.left,n.top-r.top,null,n.bottom-n.top)]}else return Io(t,e,i)}};function ar(s){let t=s.scrollDOM.getBoundingClientRect();return{left:(s.textDirection==B.LTR?t.left:t.right-s.scrollDOM.clientWidth*s.scaleX)-s.scrollDOM.scrollLeft*s.scaleX,top:t.top-s.scrollDOM.scrollTop*s.scaleY}}function sn(s,t,e,i){let n=s.coordsAtPos(t,e*2);if(!n)return i;let r=s.dom.getBoundingClientRect(),o=(n.top+n.bottom)/2,l=s.posAtCoords({x:r.left+1,y:o}),a=s.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Io(s,t,e){if(e.to<=s.viewport.from||e.from>=s.viewport.to)return[];let i=Math.max(e.from,s.viewport.from),n=Math.min(e.to,s.viewport.to),r=s.textDirection==B.LTR,o=s.contentDOM,l=o.getBoundingClientRect(),a=ar(s),h=o.querySelector(".cm-line"),c=h&&window.getComputedStyle(h),f=l.left+(c?parseInt(c.paddingLeft)+Math.min(0,parseInt(c.textIndent)):0),d=l.right-(c?parseInt(c.paddingRight):0),u=Bi(s,i,1),p=Bi(s,n,-1),g=u.type==N.Text?u:null,m=p.type==N.Text?p:null;if(g&&(s.lineWrapping||u.widgetLineBreaks)&&(g=sn(s,i,1,g)),m&&(s.lineWrapping||p.widgetLineBreaks)&&(m=sn(s,n,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return w(S(e.from,e.to,g));{let k=g?S(e.from,null,g):A(u,!1),x=m?S(null,e.to,m):A(p,!0),D=[];return(g||u).to<(m||p).from-(g&&m?1:0)||u.widgetLineBreaks>1&&k.bottom+s.defaultLineHeight/2ce&&mt.from=Tt)break;et>ht&&ws(Math.max(tt,ht),k==null&&tt<=ce,Math.min(et,Tt),x==null&&et>=fe,zt.dir)}if(ht=bt.to+1,ht>=Tt)break}return he.length==0&&ws(ce,k==null,fe,x==null,s.textDirection),{top:P,bottom:at,horizontal:he}}function A(k,x){let D=l.top+(x?k.top:k.bottom);return{top:D,bottom:D,horizontal:[]}}}function zo(s,t){return s.constructor==t.constructor&&s.eq(t)}var Ji=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(De)!=t.state.facet(De)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(De);for(;e!zo(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let n of t)n.update&&e&&n.constructor&&this.drawn[i].constructor&&n.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(n.draw(),e);for(;e;){let n=e.nextSibling;e.remove(),e=n}this.drawn=t,y.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},De=C.define();function hr(s){return[W.define(t=>new Ji(t,s)),De.of(s)]}var At=C.define({combine(s){return pe(s,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function Wl(s={}){return[At.of(s),Ko,qo,jo,Nn.of(!0)]}function Vl(s){return s.facet(At)}function cr(s){return s.startState.facet(At)!=s.state.facet(At)}var Ko=hr({above:!0,markers(s){let{state:t}=s,e=t.facet(At),i=[];for(let n of t.selection.ranges){let r=n==t.selection.main;if(n.empty||e.drawRangeCursor&&!(r&&y.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=n.empty?n:v.cursor(n.head,n.assoc);for(let a of vt.forRange(s,o,l))i.push(a)}}return i},update(s,t){s.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=cr(s);return e&&nn(s.state,t),s.docChanged||s.selectionSet||e},mount(s,t){nn(t.state,s)},class:"cm-cursorLayer"});function nn(s,t){t.style.animationDuration=s.facet(At).cursorBlinkRate+"ms"}var qo=hr({above:!1,markers(s){let t=[],{main:e,ranges:i}=s.state.selection;for(let n of i)if(!n.empty)for(let r of vt.forRange(s,"cm-selectionBackground",n))t.push(r);if(y.ios&&!e.empty&&s.state.facet(At).iosSelectionHandles){for(let n of vt.forRange(s,"cm-selectionHandle cm-selectionHandle-start",v.cursor(e.from,1)))t.push(n);for(let n of vt.forRange(s,"cm-selectionHandle cm-selectionHandle-end",v.cursor(e.to,1)))t.push(n)}return t},update(s,t){return s.docChanged||s.selectionSet||s.viewportChanged||cr(s)},class:"cm-selectionLayer"}),_o=y.gecko&&y.gecko_version>=153?"#ffffff01":"transparent",jo=ue.highest(M.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:`${_o} !important`},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),fr=G.define({map(s,t){return s==null?null:t.mapPos(s)}}),_t=de.define({create(){return null},update(s,t){return s!=null&&(s=t.changes.mapPos(s)),t.effects.reduce((e,i)=>i.is(fr)?i.value:e,s)}}),Yo=W.fromClass(class{constructor(s){this.view=s,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(s){var t;let e=s.state.field(_t);e==null?this.cursor!=null&&((t=this.cursor)===null||t===void 0||t.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(s.startState.field(_t)!=e||s.docChanged||s.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:s}=this,t=s.state.field(_t),e=t!=null&&s.coordsAtPos(t);if(!e)return null;let i=s.scrollDOM.getBoundingClientRect();return{left:e.left-i.left+s.scrollDOM.scrollLeft*s.scaleX,top:e.top-i.top+s.scrollDOM.scrollTop*s.scaleY,height:e.bottom-e.top}}drawCursor(s){if(this.cursor){let{scaleX:t,scaleY:e}=this.view;s?(this.cursor.style.left=s.left/t+"px",this.cursor.style.top=s.top/e+"px",this.cursor.style.height=s.height/e+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(s){this.view.state.field(_t)!=s&&this.view.dispatch({effects:fr.of(s)})}},{eventObservers:{dragover(s){this.setDropPos(this.view.posAtCoords({x:s.clientX,y:s.clientY}))},dragleave(s){(s.target==this.view.contentDOM||!this.view.contentDOM.contains(s.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function Fl(){return[_t,Yo]}function rn(s,t,e,i,n){t.lastIndex=0;for(let r=s.iterRange(e,i),o=e,l;!r.next().done;o+=r.value.length)if(!r.lineBreak)for(;l=t.exec(r.value);)n(o+l.index,l)}function Xo(s,t){let e=s.visibleRanges;if(e.length==1&&e[0].from==s.viewport.from&&e[0].to==s.viewport.to)return e;let i=[];for(let{from:n,to:r}of e)n=Math.max(s.state.doc.lineAt(n).from,n-t),r=Math.min(s.state.doc.lineAt(r).to,r+t),i.length&&i[i.length-1].to>=n?i[i.length-1].to=r:i.push({from:n,to:r});return i}var oe=class{constructor(t){let{regexp:e,decoration:i,decorate:n,boundary:r,maxLength:o=1e3}=t;if(!e.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=e,n)this.addMatch=(l,a,h,c)=>n(c,h,h+l[0].length,l,a);else if(typeof i=="function")this.addMatch=(l,a,h,c)=>{let f=i(l,a,h);f&&c(h,h+l[0].length,f)};else if(i)this.addMatch=(l,a,h,c)=>c(h,h+l[0].length,i);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=r,this.maxLength=o}createDeco(t){let e=new ks,i=e.add.bind(e);for(let{from:n,to:r}of Xo(t,this.maxLength))rn(t.state.doc,this.regexp,n,r,(o,l)=>this.addMatch(l,t,o,i));return e.finish()}updateDeco(t,e){let i=1e9,n=-1;return t.docChanged&&t.changes.iterChanges((r,o,l,a)=>{a>=t.view.viewport.from&&l<=t.view.viewport.to&&(i=Math.min(l,i),n=Math.max(a,n))}),t.viewportMoved||n-i>1e3?this.createDeco(t.view):n>-1?this.updateRange(t.view,e.map(t.changes),i,n):e}updateRange(t,e,i,n){for(let r of t.visibleRanges){let o=Math.max(r.from,i),l=Math.min(r.to,n);if(l>=o){let a=t.state.doc.lineAt(o),h=a.toa.from;o--)if(this.boundary.test(a.text[o-1-a.from])){c=o;break}for(;ld.push(b.range(g,m));if(a==h)for(this.regexp.lastIndex=c-a.from;(u=this.regexp.exec(a.text))&&u.indexthis.addMatch(m,t,g,p));e=e.update({filterFrom:c,filterTo:f,filter:(g,m)=>gf,add:d})}}return e}},Zi=/x/.unicode!=null?"gu":"g",$o=new RegExp(`[\0-\b
+-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,Zi),Go={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},di=null;function Uo(){var s;if(di==null&&typeof document<"u"&&document.body){let t=document.body.style;di=((s=t.tabSize)!==null&&s!==void 0?s:t.MozTabSize)!=null}return di||!1}var Oe=C.define({combine(s){let t=pe(s,{render:null,specialChars:$o,addSpecialChars:null});return(t.replaceTabs=!Uo())&&(t.specialChars=new RegExp("	|"+t.specialChars.source,Zi)),t.addSpecialChars&&(t.specialChars=new RegExp(t.specialChars.source+"|"+t.addSpecialChars.source,Zi)),t}});function Il(s={}){return[Oe.of(s),Qo()]}var on=null;function Qo(){return on||(on=W.fromClass(class{constructor(s){this.view=s,this.decorations=T.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(s.state.facet(Oe)),this.decorations=this.decorator.createDeco(s)}makeDecorator(s){return new oe({regexp:s.specialChars,decoration:(t,e,i)=>{let{doc:n}=e.state,r=ii(t[0],0);if(r==9){let o=n.lineAt(i),l=e.state.tabSize,a=ni(o.text,l,i-o.from);return T.replace({widget:new es((l-a%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[r]||(this.decorationCache[r]=T.replace({widget:new ts(s,r)}))},boundary:s.replaceTabs?void 0:/[^]/})}update(s){let t=s.state.facet(Oe);s.startState.facet(Oe)!=t?(this.decorator=this.makeDecorator(t),this.decorations=this.decorator.createDeco(s.view)):this.decorations=this.decorator.updateDeco(s,this.decorations)}},{decorations:s=>s.decorations}))}var Jo="\u2022";function Zo(s){return s>=32?Jo:s==10?"\u2424":String.fromCharCode(9216+s)}var ts=class extends ot{constructor(t,e){super(),this.options=t,this.code=e}eq(t){return t.code==this.code}toDOM(t){let e=Zo(this.code),i=t.state.phrase("Control character")+" "+(Go[this.code]||"0x"+this.code.toString(16)),n=this.options.render&&this.options.render(this.code,i,e);if(n)return n;let r=document.createElement("span");return r.textContent=e,r.title=i,r.setAttribute("aria-label",i),r.className="cm-specialChar",r}ignoreEvent(){return!1}},es=class extends ot{constructor(t){super(),this.width=t}eq(t){return t.width==this.width}toDOM(){let t=document.createElement("span");return t.textContent="	",t.className="cm-tab",t.style.width=this.width+"px",t}ignoreEvent(){return!1}},ln=W.fromClass(class{constructor(){this.height=1e3,this.attrs={style:"padding-bottom: 1000px"}}update(s){let{view:t}=s,e=t.viewState.editorHeight-t.defaultLineHeight-t.documentPadding.top-.5;e>=0&&e!=this.height&&(this.height=e,this.attrs={style:`padding-bottom: ${e}px`})}});function zl(){return[ln,Je.of(s=>{var t;return((t=s.plugin(ln))===null||t===void 0?void 0:t.attrs)||null})]}function Kl(){return el}var tl=T.line({class:"cm-activeLine"}),el=W.fromClass(class{constructor(s){this.decorations=this.getDeco(s)}update(s){(s.docChanged||s.selectionSet)&&(this.decorations=this.getDeco(s.view))}getDeco(s){let t=-1,e=[];for(let i of s.state.selection.ranges){let n=s.lineBlockAt(i.head);n.from>t&&(e.push(tl.range(n.from)),t=n.from)}return T.set(e)}},{decorations:s=>s.decorations}),is=class extends ot{constructor(t){super(),this.content=t}toDOM(t){let e=document.createElement("span");return e.className="cm-placeholder",e.style.pointerEvents="none",e.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(t):this.content.cloneNode(!0)),e.setAttribute("aria-hidden","true"),e}coordsAt(t){let e=t.firstChild?Yt(t.firstChild):[];if(!e.length)return null;let i=window.getComputedStyle(t.parentNode),n=ne(e[0],i.direction!="rtl"),r=parseInt(i.lineHeight);return n.bottom-n.top>r*1.5?{left:n.left,right:n.right,top:n.top,bottom:n.top+r}:n}ignoreEvent(){return!1}};function ql(s){let t=W.fromClass(class{constructor(e){this.view=e,this.placeholder=s?T.set([T.widget({widget:new is(s),side:1}).range(0)]):T.none}get decorations(){return this.view.state.doc.length?T.none:this.placeholder}},{decorations:e=>e.decorations});return typeof s=="string"?[t,M.contentAttributes.of({"aria-placeholder":s})]:t}var ss=2e3;function il(s,t,e){let i=Math.min(t.line,e.line),n=Math.max(t.line,e.line),r=[];if(t.off>ss||e.off>ss||t.col<0||e.col<0){let o=Math.min(t.off,e.off),l=Math.max(t.off,e.off);for(let a=i;a<=n;a++){let h=s.doc.line(a);h.length<=l&&r.push(v.range(h.from+o,h.to+l))}}else{let o=Math.min(t.col,e.col),l=Math.max(t.col,e.col);for(let a=i;a<=n;a++){let h=s.doc.line(a),c=me(h.text,o,s.tabSize,!0);if(c<0)r.push(v.cursor(h.to));else{let f=me(h.text,l,s.tabSize);r.push(v.range(h.from+c,h.from+f))}}}return r}function sl(s,t){let e=s.coordsAtPos(s.viewport.from);return e?Math.round(Math.abs((e.left-t)/s.defaultCharacterWidth)):-1}function an(s,t){let e=s.posAtCoords({x:t.clientX,y:t.clientY},!1),i=s.state.doc.lineAt(e),n=e-i.from,r=n>ss?-1:n==i.length?sl(s,t.clientX):ni(i.text,s.state.tabSize,e-i.from);return{line:i.number,col:r,off:n}}function nl(s,t){let e=an(s,t),i=s.state.selection;return e?{update(n){if(n.docChanged){let r=n.changes.mapPos(n.startState.doc.line(e.line).from),o=n.state.doc.lineAt(r);e={line:o.number,col:e.col,off:Math.min(e.off,o.length)},i=i.map(n.changes)}},get(n,r,o){let l=an(s,n);if(!l)return i;let a=il(s.state,e,l);return a.length?o?v.create(a.concat(i.ranges)):v.create(a):i}}:null}function _l(s){let t=s?.eventFilter||(e=>e.altKey&&e.button==0);return M.mouseSelectionStyle.of((e,i)=>t(i)?nl(e,i):null)}var rl={Alt:[18,s=>!!s.altKey],Control:[17,s=>!!s.ctrlKey],Shift:[16,s=>!!s.shiftKey],Meta:[91,s=>!!s.metaKey]},ol={style:"cursor: crosshair"};function jl(s={}){let[t,e]=rl[s.key||"Alt"],i=W.fromClass(class{constructor(n){this.view=n,this.isDown=!1}set(n){this.isDown!=n&&(this.isDown=n,this.view.update([]))}},{eventObservers:{keydown(n){this.set(n.keyCode==t||e(n))},keyup(n){(n.keyCode==t||!e(n))&&this.set(!1)},mousemove(n){this.set(e(n))}}});return[i,M.contentAttributes.of(n=>{var r;return!((r=n.plugin(i))===null||r===void 0)&&r.isDown?ol:null})]}var Me="-10000px",Xe=class{constructor(t,e,i,n){this.facet=e,this.createTooltipView=i,this.removeTooltipView=n,this.input=t.state.facet(e),this.tooltips=this.input.filter(o=>o);let r=null;this.tooltipViews=this.tooltips.map(o=>r=i(o,r))}update(t,e){var i;let n=t.state.facet(this.facet),r=n.filter(a=>a);if(n===this.input){for(let a of this.tooltipViews)a.update&&a.update(t);return!1}let o=[],l=e?[]:null;for(let a=0;ae[h]=a),e.length=l.length),this.input=n,this.tooltips=r,this.tooltipViews=o,!0}};function Yl(s={}){return Le.of(s)}function ll(s){let t=s.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:t.clientHeight,right:t.clientWidth}}var Le=C.define({combine:s=>{var t,e,i;return{position:y.ios?"absolute":((t=s.find(n=>n.position))===null||t===void 0?void 0:t.position)||"fixed",parent:((e=s.find(n=>n.parent))===null||e===void 0?void 0:e.parent)||null,tooltipSpace:((i=s.find(n=>n.tooltipSpace))===null||i===void 0?void 0:i.tooltipSpace)||ll}}}),hn=new WeakMap,ei=W.fromClass(class{constructor(s){this.view=s,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let t=s.state.facet(Le);this.position=t.position,this.parent=t.parent,this.classes=s.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Xe(s,dr,(e,i)=>this.createTooltip(e,i),e=>{this.resizeObserver&&this.resizeObserver.unobserve(e.dom),e.dom.remove()}),this.above=this.manager.tooltips.map(e=>!!e.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(e=>{Date.now()>this.lastTransaction-50&&e.length>0&&e[e.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),s.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let s of this.manager.tooltipViews)this.intersectionObserver.observe(s.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(s){s.transactions.length&&(this.lastTransaction=Date.now());let t=this.manager.update(s,this.above);t&&this.observeIntersection();let e=t||s.geometryChanged,i=s.state.facet(Le);if(i.position!=this.position&&!this.madeAbsolute){this.position=i.position;for(let n of this.manager.tooltipViews)n.dom.style.position=this.position;e=!0}if(i.parent!=this.parent){this.parent&&this.container.remove(),this.parent=i.parent,this.createContainer();for(let n of this.manager.tooltipViews)this.container.appendChild(n.dom);e=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);e&&this.maybeMeasure()}createTooltip(s,t){let e=s.create(this.view),i=t?t.dom:null;if(e.dom.classList.add("cm-tooltip"),s.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let n=document.createElement("div");n.className="cm-tooltip-arrow",e.dom.appendChild(n)}return e.dom.style.position=this.position,e.dom.style.top=Me,e.dom.style.left="0px",this.container.insertBefore(e.dom,i),e.mount&&e.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(e.dom),e}destroy(){var s,t,e;this.view.win.removeEventListener("resize",this.measureSoon);for(let i of this.manager.tooltipViews)i.dom.remove(),(s=i.destroy)===null||s===void 0||s.call(i);this.parent&&this.container.remove(),(t=this.resizeObserver)===null||t===void 0||t.disconnect(),(e=this.intersectionObserver)===null||e===void 0||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let s=1,t=1,e=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:r}=this.manager.tooltipViews[0];if(y.safari){let o=r.getBoundingClientRect();e=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else e=!!r.offsetParent&&r.offsetParent!=this.container.ownerDocument.body}if(e||this.position=="absolute")if(this.parent){let r=this.parent.getBoundingClientRect();r.width&&r.height&&(s=r.width/this.parent.offsetWidth,t=r.height/this.parent.offsetHeight)}else({scaleX:s,scaleY:t}=this.view.viewState);let i=this.view.scrollDOM.getBoundingClientRect(),n=ms(this.view);return{visible:{left:i.left+n.left,top:i.top+n.top,right:i.right-n.right,bottom:i.bottom-n.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((r,o)=>{let l=this.manager.tooltipViews[o];return l.getCoords?l.getCoords(r.pos):this.view.coordsAtPos(r.pos)}),size:this.manager.tooltipViews.map(({dom:r})=>r.getBoundingClientRect()),space:this.view.state.facet(Le).tooltipSpace(this.view),scaleX:s,scaleY:t,makeAbsolute:e}}writeMeasure(s){var t;if(s.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:e,space:i,scaleX:n,scaleY:r}=s,o=[];for(let l=0;l=Math.min(e.bottom,i.bottom)||f.rightMath.min(e.right,i.right)+.1)){c.style.top=Me;continue}let u=a.arrow?h.dom.querySelector(".cm-tooltip-arrow"):null,p=u?7:0,g=d.right-d.left,m=(t=hn.get(h))!==null&&t!==void 0?t:d.bottom-d.top,b=h.offset||hl,w=this.view.textDirection==B.LTR,S=d.width>i.right-i.left?w?i.left:i.right-d.width:w?Math.max(i.left,Math.min(f.left-(u?14:0)+b.x,i.right-g)):Math.min(Math.max(i.left,f.left-g+(u?14:0)-b.x),i.right-g),A=this.above[l];!a.strictSide&&(A?f.top-m-p-b.yi.bottom)&&A==i.bottom-f.bottom>f.top-i.top&&(A=this.above[l]=!A);let k=(A?f.top-i.top:i.bottom-f.bottom)-p;if(kS&&P.topx&&(x=A?P.top-m-2-p:P.bottom+p+2);if(this.position=="absolute"?(c.style.top=(x-s.parent.top)/r+"px",cn(c,(S-s.parent.left)/n)):(c.style.top=x/r+"px",cn(c,S/n)),u){let P=f.left+(w?b.x:-b.x)-(S+14-7);u.style.left=P/n+"px"}h.overlap!==!0&&o.push({left:S,top:x,right:D,bottom:x+m}),c.classList.toggle("cm-tooltip-above",A),c.classList.toggle("cm-tooltip-below",!A),h.positioned&&h.positioned(s.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let s of this.manager.tooltipViews)s.dom.style.top=Me}},{eventObservers:{scroll(){this.maybeMeasure()}}});function cn(s,t){let e=parseInt(s.style.left,10);(isNaN(e)||Math.abs(t-e)>1)&&(s.style.left=t+"px")}var al=M.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),hl={x:0,y:0},dr=C.define({enables:[ei,al]}),le=C.define({combine:s=>s.reduce((t,e)=>t.concat(e),[])}),$e=class s{static create(t){return new s(t)}constructor(t){this.view=t,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Xe(t,le,(e,i)=>this.createHostedView(e,i),e=>e.dom.remove())}createHostedView(t,e){let i=t.create(this.view);return i.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(i.dom,e?e.dom.nextSibling:this.dom.firstChild),this.mounted&&i.mount&&i.mount(this.view),i}mount(t){for(let e of this.manager.tooltipViews)e.mount&&e.mount(t);this.mounted=!0}positioned(t){for(let e of this.manager.tooltipViews)e.positioned&&e.positioned(t)}update(t){this.manager.update(t)}destroy(){var t;for(let e of this.manager.tooltipViews)(t=e.destroy)===null||t===void 0||t.call(e)}passProp(t){let e;for(let i of this.manager.tooltipViews){let n=i[t];if(n!==void 0){if(e===void 0)e=n;else if(e!==n)return}}return e}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}},cl=dr.compute([le],s=>{let t=s.facet(le);return t.length===0?null:{pos:Math.min(...t.map(e=>e.pos)),end:Math.max(...t.map(e=>{var i;return(i=e.end)!==null&&i!==void 0?i:e.pos})),create:$e.create,above:t[0].above,arrow:t.some(e=>e.arrow)}}),ur=C.define(),ns=class{constructor(t,e,i,n,r,o){this.view=t,this.source=e,this.field=i,this.locked=n,this.setHover=r,this.hoverTime=o,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:t.dom,time:0},this.checkHover=this.checkHover.bind(this),t.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),t.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(t){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let t=Date.now()-this.lastMove.time;to.bottom||e.xo.right+t.defaultCharacterWidth)return;let l=t.bidiSpans(t.state.doc.lineAt(n)).find(h=>h.from<=n&&h.to>=n),a=l&&l.dir==B.RTL?-1:1;r=e.x{if(l&&!(Array.isArray(l)&&!l.length)){let a=Array.isArray(l)?l:[l];n&&this.locked.set(a,n),t.dispatch({effects:this.setHover.of(a)})}};if(r&&"then"in r){let l=this.pending={pos:e};r.then(a=>{this.pending==l&&(this.pending=null,o(a))},a=>J(t.state,a,"hover tooltip"))}else o(r)}get tooltip(){let t=this.view.plugin(ei),e=t?t.manager.tooltips.findIndex(i=>i.create==$e.create):-1;return e>-1?t.manager.tooltipViews[e]:null}mousemove(t){var e,i;this.lastMove={x:t.clientX,y:t.clientY,target:t.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:n,tooltip:r}=this;if(n.length&&!this.locked.has(n)&&r&&!fl(r.dom,t)||this.pending){let{pos:o}=n[0]||this.pending,l=(i=(e=n[0])===null||e===void 0?void 0:e.end)!==null&&i!==void 0?i:o;(o==l?this.view.posAtCoords(this.lastMove)!=o:!dl(this.view,o,l,t.clientX,t.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(t){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:e}=this;if(e.length&&!this.locked.has(e)){let{tooltip:i}=this;i&&i.dom.contains(t.relatedTarget)?this.watchTooltipLeave(i.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(t){let e=i=>{t.removeEventListener("mouseleave",e);let{active:n}=this;n.length&&!this.locked.has(n)&&!this.view.dom.contains(i.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};t.addEventListener("mouseleave",e)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}},Ae=4;function fl(s,t){let{left:e,right:i,top:n,bottom:r}=s.getBoundingClientRect(),o;if(o=s.querySelector(".cm-tooltip-arrow")){let l=o.getBoundingClientRect();n=Math.min(l.top,n),r=Math.max(l.bottom,r)}return t.clientX>=e-Ae&&t.clientX<=i+Ae&&t.clientY>=n-Ae&&t.clientY<=r+Ae}function dl(s,t,e,i,n,r){let o=s.scrollDOM.getBoundingClientRect(),l=s.documentTop+s.documentPadding.top+s.contentHeight;if(o.left>i||o.rightn||Math.min(o.bottom,l)=t&&a<=e}function Xl(s,t={}){let e=G.define(),i=new WeakMap,n=de.define({create(){return[]},update(o,l){let a=i.get(o);if(o.length&&(t.hideOnChange&&(l.docChanged||l.selection)?o=[]:a&&a(l)?o=[]:t.hideOn&&(o=o.filter(h=>!t.hideOn(l,h)))),l.docChanged&&o.length){let h=[];for(let c of o){let f=l.changes.mapPos(c.pos,-1,yt.TrackDel);if(f!=null){let d=Object.assign(Object.create(null),c);d.pos=f,d.end!=null&&(d.end=l.changes.mapPos(d.end)),h.push(d)}}o=h}for(let h of l.effects)h.is(e)&&(o=h.value,a=void 0),(h.is(ys)&&!h.value||h.value==n)&&(o=[]);return o.length&&a&&i.set(o,a),o},provide:o=>le.from(o)}),r=W.define(o=>new ns(o,s,n,i,e,t.hoverTime||300));return{active:n,extension:[n,r,ur.of(r),cl]}}function $l(s,t,e,i={}){var n;let r=s.state.facet(ur).map(o=>s.plugin(o)).filter(o=>!!o);if(i.tooltip&&i.tooltip.active){let o=r.find(l=>l.field==i.tooltip.active);o&&(r=[o])}for(let o of r)o.activateHover(s,t,e,(n=i.until)!==null&&n!==void 0?n:()=>!1)}function Gl(s,t){let e=s.plugin(ei);if(!e)return null;let i=e.manager.tooltips.indexOf(t);return i<0?null:e.manager.tooltipViews[i]}function Ul(s){return s.facet(le).some(t=>t)}var ys=G.define(),Ql=ys.of(null);function Jl(s){return ys.of(s.active)}function Zl(s){let t=s.plugin(ei);t&&t.maybeMeasure()}var rs=C.define({combine(s){let t,e;for(let i of s)t=t||i.topContainer,e=e||i.bottomContainer;return{topContainer:t,bottomContainer:e}}});function ta(s){return s?[rs.of(s)]:[]}function ul(s,t){let e=s.plugin(pr),i=e?e.specs.indexOf(t):-1;return i>-1?e.panels[i]:null}var pr=W.fromClass(class{constructor(s){this.input=s.state.facet(os),this.specs=this.input.filter(e=>e),this.panels=this.specs.map(e=>e(s));let t=s.state.facet(rs);this.top=new Et(s,!0,t.topContainer),this.bottom=new Et(s,!1,t.bottomContainer),this.top.sync(this.panels.filter(e=>e.top)),this.bottom.sync(this.panels.filter(e=>!e.top));for(let e of this.panels)e.dom.classList.add("cm-panel"),e.mount&&e.mount()}update(s){let t=s.state.facet(rs);this.top.container!=t.topContainer&&(this.top.sync([]),this.top=new Et(s.view,!0,t.topContainer)),this.bottom.container!=t.bottomContainer&&(this.bottom.sync([]),this.bottom=new Et(s.view,!1,t.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let e=s.state.facet(os);if(e!=this.input){let i=e.filter(a=>a),n=[],r=[],o=[],l=[];for(let a of i){let h=this.specs.indexOf(a),c;h<0?(c=a(s.view),l.push(c)):(c=this.panels[h],c.update&&c.update(s)),n.push(c),(c.top?r:o).push(c)}this.specs=i,this.panels=n,this.top.sync(r),this.bottom.sync(o);for(let a of l)a.dom.classList.add("cm-panel"),a.mount&&a.mount()}else for(let i of this.panels)i.update&&i.update(s)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:s=>M.scrollMargins.of(t=>{let e=t.plugin(s);return e&&{top:e.top.scrollMargin(),bottom:e.bottom.scrollMargin()}})}),Et=class{constructor(t,e,i){this.view=t,this.top=e,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(t){for(let e of this.panels)e.destroy&&t.indexOf(e)<0&&e.destroy();this.panels=t,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom";let e=this.container||this.view.dom;e.insertBefore(this.dom,this.top?e.firstChild:null)}let t=this.dom.firstChild;for(let e of this.panels)if(e.dom.parentNode==this.dom){for(;t!=e.dom;)t=fn(t);t=t.nextSibling}else this.dom.insertBefore(e.dom,t);for(;t;)t=fn(t)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let t of this.classes.split(" "))t&&this.container.classList.remove(t);for(let t of(this.classes=this.view.themeClasses).split(" "))t&&this.container.classList.add(t)}}};function fn(s){let t=s.nextSibling;return s.remove(),t}var os=C.define({enables:pr});function ea(s,t){let e,i=new Promise(o=>e=o),n=o=>pl(o,t,e);s.state.field(Re,!1)?s.dispatch({effects:gr.of(n)}):s.dispatch({effects:G.appendConfig.of(Re.init(()=>[n]))});let r=mr.of(n);return{close:r,result:i.then(o=>((s.win.queueMicrotask||(a=>s.win.setTimeout(a,10)))(()=>{s.state.field(Re).indexOf(n)>-1&&s.dispatch({effects:r})}),o))}}function ia(s,t){let e=s.state.field(Re,!1)||[];for(let i of e){let n=ul(s,i);if(n&&n.dom.classList.contains(t))return n}return null}var Re=de.define({create(){return[]},update(s,t){for(let e of t.effects)e.is(gr)?s=[e.value].concat(s):e.is(mr)&&(s=s.filter(i=>i!=e.value));return s},provide:s=>os.computeN([s],t=>t.field(s))}),gr=G.define(),mr=G.define();function pl(s,t,e){let i=t.content?t.content(s,()=>o(null)):null;if(!i){if(i=ft("form"),t.input){let l=ft("input",t.input);/^(text|password|number|email|tel|url)$/.test(l.type)&&l.classList.add("cm-textfield"),l.name||(l.name="input"),i.appendChild(ft("label",(t.label||"")+": ",l))}else i.appendChild(document.createTextNode(t.label||""));i.appendChild(document.createTextNode(" ")),i.appendChild(ft("button",{class:"cm-button",type:"submit"},t.submitLabel||"OK"))}let n=i.nodeName=="FORM"?[i]:i.querySelectorAll("form");for(let l=0;l{h.keyCode==27?(h.preventDefault(),o(null)):h.keyCode==13&&(h.preventDefault(),o(a))}),a.addEventListener("submit",h=>{h.preventDefault(),o(a)})}let r=ft("div",i,ft("button",{onclick:()=>o(null),"aria-label":s.state.phrase("close"),class:"cm-dialog-close",type:"button"},["\xD7"]));t.class&&(r.className=t.class),r.classList.add("cm-dialog");function o(l){r.contains(r.ownerDocument.activeElement)&&s.focus(),e(l)}return{dom:r,top:t.top,mount:()=>{if(t.focus){let l;typeof t.focus=="string"?l=i.querySelector(t.focus):l=i.querySelector("input")||i.querySelector("button"),l&&"select"in l?l.select():l&&"focus"in l&&l.focus()}}}}var Z=class extends ge{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Z.prototype.elementClass="";Z.prototype.toDOM=void 0;Z.prototype.mapMode=yt.TrackBefore;Z.prototype.startSide=Z.prototype.endSide=-1;Z.prototype.point=!0;var Be=C.define(),gl=C.define(),ml={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>E.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},Zt=C.define();function sa(s){return[br(),Zt.of({...ml,...s})]}var ls=C.define({combine:s=>s.some(t=>t)});function br(s){let t=[bl];return s&&s.fixed===!1&&t.push(ls.of(!0)),t}var bl=W.fromClass(class{constructor(s){this.view=s,this.domAfter=null,this.prevViewport=s.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=s.state.facet(Zt).map(t=>new Ge(s,t)),this.fixed=!s.state.facet(ls);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),s.scrollDOM.insertBefore(this.dom,s.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(s){if(this.updateGutters(s)){let t=this.prevViewport,e=s.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(s.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(ls)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=s.view.viewport}syncGutters(s){let t=this.dom.nextSibling;s&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=E.iter(this.view.state.facet(Be),this.view.viewport.from),i=[],n=this.gutters.map(r=>new hs(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==N.Text&&o){as(e,i,l.from);for(let a of n)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of n)a.widget(this.view,l)}else if(r.type==N.Text){as(e,i,r.from);for(let o of n)o.line(this.view,r,i)}else if(r.widget)for(let o of n)o.widget(this.view,r);for(let r of n)r.finish();s&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(s){let t=s.startState.facet(Zt),e=s.state.facet(Zt),i=s.docChanged||s.heightChanged||s.viewportChanged||!E.eq(s.startState.facet(Be),s.state.facet(Be),s.view.viewport.from,s.view.viewport.to);if(t==e)for(let n of this.gutters)n.update(s)&&(i=!0);else{i=!0;let n=[];for(let r of e){let o=t.indexOf(r);o<0?n.push(new Ge(this.view,r)):(this.gutters[o].update(s),n.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),n.indexOf(r)<0&&r.destroy();for(let r of n)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=n}return i}destroy(){for(let s of this.gutters)s.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:s=>M.scrollMargins.of(t=>{let e=t.plugin(s);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,n=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==B.LTR?{left:i,right:n}:{right:i,left:n}})});function dn(s){return Array.isArray(s)?s:[s]}function as(s,t,e){for(;s.value&&s.from<=e;)s.from==e&&t.push(s.value),s.next()}var hs=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=E.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:n}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==n.elements.length){let l=new Ue(t,o,r,i);n.elements.push(l),n.dom.appendChild(l.dom)}else n.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let n=[];as(this.cursor,n,e.from),i.length&&(n=n.concat(i));let r=this.gutter.config.lineMarker(t,e,n);r&&n.unshift(r);let o=this.gutter;n.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,n)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),n=i?[i]:null;for(let r of t.state.facet(gl)){let o=r(t,e.widget,e);o&&(n||(n=[])).push(o)}n&&this.addElement(t,e,n)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},Ge=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,n=>{let r=n.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=n.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,n)&&n.preventDefault()});this.markers=dn(e.markers(t)),e.initialSpacer&&(this.spacer=new Ue(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=dn(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let n=this.config.updateSpacer(this.spacer.markers[0],t);n!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[n])}let i=t.view.viewport;return!E.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},Ue=class{constructor(t,e,i,n){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,n)}update(t,e,i,n){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),yl(this.markers,n)||this.setMarkers(t,n)}setMarkers(t,e){let i="cm-gutterElement",n=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),te=class extends Z{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ui(s,t){return s.state.facet(Ht).formatNumber(t,s.state)}var vl=Zt.compute([Ht],s=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(wl)},lineMarker(t,e,i){return i.some(n=>n.toDOM)?null:new te(ui(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let n of t.state.facet(xl)){let r=n(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(Ht)!=t.state.facet(Ht),initialSpacer(t){return new te(ui(t,un(t.state.doc.lines)))},updateSpacer(t,e){let i=ui(e.view,un(e.view.state.doc.lines));return i==t.number?t:new te(i)},domEventHandlers:s.facet(Ht).domEventHandlers,side:"before"}));function na(s={}){return[Ht.of(s),br(),vl]}function un(s){let t=9;for(;t{let t=[],e=-1;for(let i of s.selection.ranges){let n=s.doc.lineAt(i.head).from;n>e&&(e=n,t.push(Sl.range(n)))}return E.of(t)});function ra(){return Cl}function yr(s){return W.define(t=>({decorations:s.createDeco(t),update(e){this.decorations=s.updateDeco(e,this.decorations)}}),{decorations:t=>t.decorations})}var kl=T.mark({class:"cm-highlightTab"}),Ml=T.mark({class:"cm-highlightSpace"}),Al=yr(new oe({regexp:/\t| /g,decoration:s=>s[0]=="	"?kl:Ml,boundary:/\S/}));function oa(){return Al}var Tl=yr(new oe({regexp:/\s+$/g,decoration:T.mark({class:"cm-trailingSpace"})}));function la(){return Tl}var aa={HeightMap:z,HeightOracle:ze,MeasuredHeights:Ke,QueryType:O,ChangedRange:Y,computeOrder:Mn,moveVisually:Dn,clearHeightChangeFlag:Ii,getHeightChangeFlag:()=>Mt};export{it as a,ot as b,N as c,T as d,He as e,B as f,j as g,J as h,W as i,Ne as j,X as k,M as l,Wo as m,Nl as n,vt as o,hr as p,Wl as q,Vl as r,Fl as s,oe as t,Il as u,zl as v,Kl as w,ql as x,_l as y,jl as z,Yl as A,dr as B,Xl as C,$l as D,Gl as E,Ul as F,Ql as G,Jl as H,Zl as I,ta as J,ul as K,os as L,ea as M,ia as N,Z as O,Be as P,gl as Q,sa as R,br as S,wl as T,xl as U,na as V,ra as W,oa as X,la as Y,aa as Z};
diff --git a/static/dist/chunks/chunk-OZL5SFA7.js b/static/dist/chunks/chunk-OZL5SFA7.js
new file mode 100644
index 0000000..ac6cb3d
--- /dev/null
+++ b/static/dist/chunks/chunk-OZL5SFA7.js
@@ -0,0 +1 @@
+import{S as t}from"./chunk-CSOMSVJQ.js";import{k as o}from"./chunk-CGTIGMIP.js";import{l as r}from"./chunk-IVRVZEPW.js";var c=t.define([{tag:o.keyword,color:"var(--syn-keyword)"},{tag:o.controlKeyword,color:"var(--syn-keyword)"},{tag:o.moduleKeyword,color:"var(--syn-keyword)"},{tag:[o.typeName,o.className,o.namespace],color:"var(--syn-type)"},{tag:[o.string,o.special(o.string),o.regexp],color:"var(--syn-string)"},{tag:[o.number,o.bool,o.atom,o.literal],color:"var(--syn-number)"},{tag:[o.function(o.definition(o.variableName)),o.definition(o.variableName),o.definition(o.propertyName)],color:"var(--syn-definition)"},{tag:[o.macroName,o.meta,o.annotation],color:"var(--syn-macro)"},{tag:[o.comment,o.lineComment,o.blockComment,o.docComment],color:"var(--syn-comment)",fontStyle:"italic"},{tag:[o.operator,o.punctuation,o.separator,o.bracket],color:"var(--syn-punctuation)"},{tag:o.invalid,color:"var(--syn-invalid)"}]),l=r.theme({"&":{color:"var(--syn-fg)",backgroundColor:"var(--syn-bg)"},".cm-content":{caretColor:"var(--syn-cursor)"},".cm-cursor, .cm-dropCursor":{borderLeftColor:"var(--syn-cursor)"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:"var(--syn-selection-bg)"},".cm-activeLine":{backgroundColor:"var(--syn-active-line)"},".cm-gutters":{backgroundColor:"var(--syn-gutter-bg)",color:"var(--syn-gutter-fg)",border:"none"},".cm-activeLineGutter":{backgroundColor:"var(--syn-active-line)"},".cm-tooltip":{backgroundColor:"var(--syn-bg)",color:"var(--syn-fg)",border:"1px solid var(--syn-selection-bg)",borderRadius:"4px",boxShadow:"0 4px 12px rgba(0,0,0,0.25)"},".cm-tooltip.cm-tooltip-autocomplete > ul":{fontFamily:"inherit",maxHeight:"14rem"},".cm-tooltip.cm-tooltip-autocomplete > ul > li":{color:"var(--syn-fg)",padding:"2px 6px"},".cm-tooltip-autocomplete ul li[aria-selected]":{backgroundColor:"var(--syn-selection-bg)",color:"var(--syn-fg)"},".cm-completionLabel":{color:"var(--syn-fg)"},".cm-completionDetail":{color:"var(--syn-gutter-fg)",fontStyle:"italic"},".cm-completionIcon":{color:"var(--syn-keyword)",opacity:.85}});export{c as a,l as b};
diff --git a/static/dist/chunks/chunk-RY7TOCYY.js b/static/dist/chunks/chunk-RY7TOCYY.js
new file mode 100644
index 0000000..b63ec0f
--- /dev/null
+++ b/static/dist/chunks/chunk-RY7TOCYY.js
@@ -0,0 +1 @@
+import{Y as L,f as G,q as ke,r as P,s as I,t as ee,v as te}from"./chunk-CSOMSVJQ.js";import{a as F}from"./chunk-CGTIGMIP.js";import{f as ye,l as D}from"./chunk-IVRVZEPW.js";import{B as V,a as Y,c as E,h as he,i as de,k as h,l as Z,m as me,p as j,s as pe,t as N,u as x,w as ge}from"./chunk-6OYJTXGR.js";var nt=e=>{let{state:t}=e,r=t.doc.lineAt(t.selection.main.from),n=ce(e.state,r.from);return n.line?rt(e):n.block?lt(e):!1};function b(e,t){return({state:r,dispatch:n})=>{if(r.readOnly)return!1;let l=e(t,r);return l?(n(r.update(l)),!0):!1}}var rt=b(ie,0),dn=b(ie,1),mn=b(ie,2),ot=b(z,0),pn=b(z,1),gn=b(z,2),lt=b((e,t)=>z(e,t,ct(t)),0);function ce(e,t){let r=e.languageDataAt("commentTokens",t);return r.length?r[0]:{}}var R=50;function st(e,{open:t,close:r},n,l){let o=e.sliceDoc(n-R,n),s=e.sliceDoc(l,l+R),c=/\s*$/.exec(o)[0].length,i=/^\s*/.exec(s)[0].length,f=o.length-c;if(o.slice(f-t.length,f)==t&&s.slice(i,i+r.length)==r)return{open:{pos:n-c,margin:c&&1},close:{pos:l+i,margin:i&&1}};let u,a;l-n<=2*R?u=a=e.sliceDoc(n,l):(u=e.sliceDoc(n,n+R),a=e.sliceDoc(l-R,l));let d=/^\s*/.exec(u)[0].length,S=/\s*$/.exec(a)[0].length,p=a.length-S-r.length;return u.slice(d,d+t.length)==t&&a.slice(p,p+r.length)==r?{open:{pos:n+d+t.length,margin:/\s/.test(u.charAt(d+t.length))?1:0},close:{pos:l-S-r.length,margin:/\s/.test(a.charAt(p-1))?1:0}}:null}function ct(e){let t=[];for(let r of e.selection.ranges){let n=e.doc.lineAt(r.from),l=r.to<=n.to?n:e.doc.lineAt(r.to),o=t.length-1;o>=0&&t[o].to>n.from?t[o].to=l.to:t.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:l.to})}return t}function z(e,t,r=t.selection.ranges){let n=r.map(o=>ce(t,o.from).block);if(!n.every(o=>o))return null;let l=r.map((o,s)=>st(t,n[s],o.from,o.to));if(e!=2&&!l.every(o=>o))return{changes:t.changes(r.map((o,s)=>l[s]?[]:[{from:o.from,insert:n[s].open+" "},{from:o.to,insert:" "+n[s].close}]))};if(e!=1&&l.some(o=>o)){let o=[];for(let s=0,c;sl&&(o==s||s>a.from)){l=a.from;let d=/^\s*/.exec(a.text)[0].length,S=d==a.length,p=a.text.slice(d,d+f.length)==f?d:-1;do.comment<0&&(!o.empty||o.single))){let o=[];for(let{line:c,token:i,indent:f,empty:u,single:a}of n)(a||!u)&&o.push({from:c.from+f,insert:i+" "});let s=t.changes(o);return{changes:s,selection:t.selection.map(s,1)}}else if(e!=1&&n.some(o=>o.comment>=0)){let o=[];for(let{line:s,comment:c,token:i}of n)if(c>=0){let f=s.from+c,u=f+i.length;s.text[u-s.from]==" "&&u++,o.push({from:f,to:u})}return{changes:o}}return null}var re=j.define(),it=j.define(),ut=Z.define(),be=Z.define({combine(e){return ge(e,{minDepth:100,newGroupDelay:500,joinToEvent:(t,r)=>r},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,r)=>(n,l)=>t(n,l)||r(n,l)})}}),H=me.define({create(){return M.empty},update(e,t){let r=t.state.facet(be),n=t.annotation(re);if(n){let i=A.fromTransaction(t,n.selection),f=n.side,u=f==0?e.undone:e.done;return i?u=w(u,u.length,r.minDepth,i):u=Ie(u,t.startState.selection),new M(f==0?n.rest:u,f==0?u:n.rest)}let l=t.annotation(it);if((l=="full"||l=="before")&&(e=e.isolate()),t.annotation(N.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let o=A.fromTransaction(t),s=t.annotation(N.time),c=t.annotation(N.userEvent);return o?e=e.addChanges(o,s,c,r,t):t.selection&&(e=e.addSelection(t.startState.selection,s,c,r.newGroupDelay)),(l=="full"||l=="after")&&(e=e.isolate()),e},toJSON(e){return{done:e.done.map(t=>t.toJSON()),undone:e.undone.map(t=>t.toJSON())}},fromJSON(e){return new M(e.done.map(A.fromJSON),e.undone.map(A.fromJSON))}});function yn(e={}){return[H,be.of(e),D.domEventHandlers({beforeinput(t,r){let n=t.inputType=="historyUndo"?Ee:t.inputType=="historyRedo"?oe:null;return n?(t.preventDefault(),n(r)):!1}})]}var kn=H;function W(e,t){return function({state:r,dispatch:n}){if(!t&&r.readOnly)return!1;let l=r.field(H,!1);if(!l)return!1;let o=l.pop(e,r,t);return o?(n(o),!0):!1}}var Ee=W(0,!1),oe=W(1,!1),ft=W(0,!0),at=W(1,!0);function Te(e){return function(t){let r=t.field(H,!1);if(!r)return 0;let n=e==0?r.done:r.undone;return n.length-(n.length&&!n[0].changes?1:0)}}var Sn=Te(0),An=Te(1),A=class e{constructor(t,r,n,l,o){this.changes=t,this.effects=r,this.mapped=n,this.startSelection=l,this.selectionsAfter=o}setSelAfter(t){return new e(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,r,n;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(r=this.mapped)===null||r===void 0?void 0:r.toJSON(),startSelection:(n=this.startSelection)===null||n===void 0?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map(l=>l.toJSON())}}static fromJSON(t){return new e(t.changes&&de.fromJSON(t.changes),[],t.mapped&&he.fromJSON(t.mapped),t.startSelection&&h.fromJSON(t.startSelection),t.selectionsAfter.map(h.fromJSON))}static fromTransaction(t,r){let n=y;for(let l of t.startState.facet(ut)){let o=l(t);o.length&&(n=n.concat(o))}return!n.length&&t.changes.empty?null:new e(t.changes.invert(t.startState.doc),n,void 0,r||t.startState.selection,y)}static selection(t){return new e(void 0,y,void 0,void 0,t)}};function w(e,t,r,n){let l=t+1>r+20?t-r-1:0,o=e.slice(l,t);return o.push(n),o}function ht(e,t){let r=[],n=!1;return e.iterChangedRanges((l,o)=>r.push(l,o)),t.iterChangedRanges((l,o,s,c)=>{for(let i=0;i=f&&s<=u&&(n=!0)}}),n}function dt(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((r,n)=>r.empty!=t.ranges[n].empty).length===0}function Oe(e,t){return e.length?t.length?e.concat(t):e:t}var y=[],mt=200;function Ie(e,t){if(e.length){let r=e[e.length-1],n=r.selectionsAfter.slice(Math.max(0,r.selectionsAfter.length-mt));return n.length&&n[n.length-1].eq(t)?e:(n.push(t),w(e,e.length-1,1e9,r.setSelAfter(n)))}else return[A.selection([t])]}function pt(e){let t=e[e.length-1],r=e.slice();return r[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),r}function ne(e,t){if(!e.length)return e;let r=e.length,n=y;for(;r;){let l=gt(e[r-1],t,n);if(l.changes&&!l.changes.empty||l.effects.length){let o=e.slice(0,r);return o[r-1]=l,o}else t=l.mapped,r--,n=l.selectionsAfter}return n.length?[A.selection(n)]:y}function gt(e,t,r){let n=Oe(e.selectionsAfter.length?e.selectionsAfter.map(c=>c.map(t)):y,r);if(!e.changes)return A.selection(n);let l=e.changes.map(t),o=t.mapDesc(e.changes,!0),s=e.mapped?e.mapped.composeDesc(o):o;return new A(l,pe.mapEffects(e.effects,t),s,e.startSelection.map(o),n)}var yt=/^(input\.type|delete)($|\.)/,M=class e{constructor(t,r,n=0,l=void 0){this.done=t,this.undone=r,this.prevTime=n,this.prevUserEvent=l}isolate(){return this.prevTime?new e(this.done,this.undone):this}addChanges(t,r,n,l,o){let s=this.done,c=s[s.length-1];return c&&c.changes&&!c.changes.empty&&t.changes&&(!n||yt.test(n))&&(!c.selectionsAfter.length&&r-this.prevTime0&&r-this.prevTimer.empty?e.moveByChar(r,t):v(r,t))}function m(e){return e.textDirectionAt(e.state.selection.main.head)==ye.LTR}var Re=e=>q(e,!m(e)),ve=e=>q(e,m(e)),Cn=e=>q(e,!0),xn=e=>q(e,!1);function K(e,t){return k(e,r=>r.empty?e.moveByGroup(r,t):v(r,t))}var kt=e=>K(e,!m(e)),St=e=>K(e,m(e)),Dn=e=>K(e,!0),Ln=e=>K(e,!1),Se=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Ue(e,t,r){let n=e.state.charCategorizer(t.from),l=x.Space,o=t.from,s=0,c=!1,i=!1,f=!1,u=d=>{if(c)return!1;o+=r?d.length:-d.length;let S=n(d),p;if(S==x.Word&&d.charCodeAt(0)<128&&/[\W_]/.test(d)&&(S=-1),l==x.Space&&(l=S),l!=S)return!1;if(l==x.Word)if(d.toLowerCase()==d){if(!r&&i)return!1;f=!0}else if(f){if(r)return!1;c=!0}else{if(i&&r&&n(p=e.state.sliceDoc(o,o+1))==x.Word&&p.toLowerCase()==p)return!1;i=!0}return s++,!0},a=e.moveByChar(t,r,d=>(u(d),u));if(Se&&l==x.Word&&a.from==t.from+s*(r?1:-1)){let d=Math.min(t.head,a.head),S=Math.max(t.head,a.head),p=e.state.sliceDoc(d,S);if(p.length>1&&/[\u4E00-\uffff]/.test(p)){let U=Array.from(Se.segment(p));if(U.length>1)return r?h.cursor(t.head+U[1].index,-1):h.cursor(a.head+U[U.length-1].index,1)}}return a}function Ne(e,t){return k(e,r=>r.empty?Ue(e,r,t):v(r,t))}var Mn=e=>Ne(e,!0),bn=e=>Ne(e,!1);function At(e,t,r){if(t.type.prop(r))return!0;let n=t.to-t.from;return n&&(n>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function $(e,t,r){let n=G(e).resolveInner(t.head),l=r?F.closedBy:F.openedBy;for(let i=t.head;;){let f=r?n.childAfter(i):n.childBefore(i);if(!f)break;At(e,f,l)?n=f:i=r?f.to:f.from}let o=n.type.prop(l),s,c;return o&&(s=r?L(e,n.from,1):L(e,n.to,-1))&&s.matched?c=r?s.end.to:s.end.from:c=r?n.to:n.from,h.cursor(c,r?-1:1)}var Bt=e=>k(e,t=>$(e.state,t,!m(e))),Ct=e=>k(e,t=>$(e.state,t,m(e)));function Ve(e,t){return k(e,r=>{if(!r.empty)return v(r,t);let n=e.moveVertically(r,t);return n.head!=r.head?n:e.moveToLineBoundary(r,t)})}var Fe=e=>Ve(e,!1),Ge=e=>Ve(e,!0);function Pe(e){let t=e.scrollDOM.clientHeights.empty?e.moveVertically(s,t,r.height):v(s,t));if(l.eq(n.selection))return!1;let o;if(r.selfScroll){let s=e.coordsAtPos(n.selection.main.head),c=e.scrollDOM.getBoundingClientRect(),i=c.top+r.marginTop,f=c.bottom-r.marginBottom;s&&s.top>i&&s.bottomJe(e,!1),le=e=>Je(e,!0);function C(e,t,r){let n=e.lineBlockAt(t.head),l=e.moveToLineBoundary(t,r);if(l.head==t.head&&l.head!=(r?n.to:n.from)&&(l=e.moveToLineBoundary(t,r,!1)),!r&&l.head==n.from&&n.length){let o=/^\s*/.exec(e.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;o&&t.head!=n.from+o&&(l=h.cursor(n.from+o))}return l}var xt=e=>k(e,t=>C(e,t,!0)),Dt=e=>k(e,t=>C(e,t,!1)),Lt=e=>k(e,t=>C(e,t,!m(e))),Mt=e=>k(e,t=>C(e,t,m(e))),bt=e=>k(e,t=>h.cursor(e.lineBlockAt(t.head).from,1)),Et=e=>k(e,t=>h.cursor(e.lineBlockAt(t.head).to,-1));function we(e,t,r){let n=!1,l=T(e.selection,o=>{let s=L(e,o.head,-1)||L(e,o.head,1)||o.head>0&&L(e,o.head-1,1)||o.headwe(e,t,!1),En=({state:e,dispatch:t})=>we(e,t,!0);function g(e,t){let r=T(e.state.selection,n=>{let l=t(n);return h.range(n.anchor,l.head,l.goalColumn,l.bidiLevel||void 0)});return r.eq(e.state.selection)?!1:(e.dispatch(B(e.state,r)),!0)}function _(e,t){return g(e,r=>e.moveByChar(r,t))}var ze=e=>_(e,!m(e)),He=e=>_(e,m(e)),Tn=e=>_(e,!0),On=e=>_(e,!1);function Q(e,t){return g(e,r=>e.moveByGroup(r,t))}var Ot=e=>Q(e,!m(e)),It=e=>Q(e,m(e)),In=e=>Q(e,!0),Rn=e=>Q(e,!1);function We(e,t){return g(e,r=>Ue(e,r,t))}var vn=e=>We(e,!0),Un=e=>We(e,!1),Rt=e=>g(e,t=>$(e.state,t,!m(e))),vt=e=>g(e,t=>$(e.state,t,m(e)));function qe(e,t){return g(e,r=>e.moveVertically(r,t))}var Ke=e=>qe(e,!1),$e=e=>qe(e,!0);function _e(e,t){return g(e,r=>e.moveVertically(r,t,Pe(e).height))}var Be=e=>_e(e,!1),Ce=e=>_e(e,!0),Ut=e=>g(e,t=>C(e,t,!0)),Nt=e=>g(e,t=>C(e,t,!1)),Vt=e=>g(e,t=>C(e,t,!m(e))),Ft=e=>g(e,t=>C(e,t,m(e))),Gt=e=>g(e,t=>h.cursor(e.lineBlockAt(t.head).from)),Pt=e=>g(e,t=>h.cursor(e.lineBlockAt(t.head).to)),xe=({state:e,dispatch:t})=>(t(B(e,{anchor:0})),!0),De=({state:e,dispatch:t})=>(t(B(e,{anchor:e.doc.length})),!0),Le=({state:e,dispatch:t})=>(t(B(e,{anchor:e.selection.main.anchor,head:0})),!0),Me=({state:e,dispatch:t})=>(t(B(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),Jt=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:"select"})),!0),wt=({state:e,dispatch:t})=>{let r=X(e).map(({from:n,to:l})=>h.range(n,Math.min(l+1,e.doc.length)));return t(e.update({selection:h.create(r),userEvent:"select"})),!0},zt=({state:e,dispatch:t})=>{let r=T(e.selection,n=>{var l;let o=G(e).resolveStack(n.from,1);for(let s=o;s;s=s.next){let{node:c}=s;if((c.from=n.to||c.to>n.to&&c.from<=n.from)&&(!((l=c.parent)===null||l===void 0)&&l.parent))return h.range(c.to,c.from)}return n});return t(B(e,r)),!0},Ht=({state:e,dispatch:t})=>{let r=e.selection,n=null;return r.ranges.length>1?n=h.create([r.main]):r.main.empty||(n=h.create([h.cursor(r.main.head)])),n?(t(B(e,n)),!0):!1};function O(e,t){if(e.state.readOnly)return!1;let r="delete.selection",{state:n}=e,l=n.changeByRange(o=>{let{from:s,to:c}=o;if(s==c){let i=t(o);is&&(r="delete.forward",i=J(e,i,!0)),s=Math.min(s,i),c=Math.max(c,i)}else s=J(e,s,!1),c=J(e,c,!0);return s==c?{range:o}:{changes:{from:s,to:c},range:h.cursor(s,sl(e)))n.between(t,t,(l,o)=>{lt&&(t=r?o:l)});return t}var ue=(e,t,r)=>O(e,n=>{let l=n.from,{state:o}=e,s=o.doc.lineAt(l),c,i;if(r&&!t&&l>s.from&&lue(e,!1,!0),Nn=e=>ue(e,!1,!1),Qe=e=>ue(e,!0,!1),Xe=(e,t)=>O(e,r=>{let n=r.head,{state:l}=e,o=l.doc.lineAt(n),s=l.charCategorizer(n);for(let c=null;;){if(n==(t?o.to:o.from)){n==r.head&&o.number!=(t?l.doc.lines:1)&&(n+=t?1:-1);break}let i=E(o.text,n-o.from,t)+o.from,f=o.text.slice(Math.min(n,i)-o.from,Math.max(n,i)-o.from),u=s(f);if(c!=null&&u!=c)break;(f!=" "||n!=r.head)&&(c=u),n=i}return n}),Ye=e=>Xe(e,!1),Wt=e=>Xe(e,!0),qt=e=>O(e,t=>{let r=e.lineBlockAt(t.head).to;return t.headO(e,t=>{let r=e.lineBlockAt(t.head).from;return t.head>r?r:Math.max(0,t.head-1)}),Kt=e=>O(e,t=>{let r=e.moveToLineBoundary(t,!1).head;return t.head>r?r:Math.max(0,t.head-1)}),$t=e=>O(e,t=>{let r=e.moveToLineBoundary(t,!0).head;return t.head{if(e.readOnly)return!1;let r=[];for(let n=0,l="",o=e.doc.iter();;){if(o.next(),o.lineBreak||o.done){let s=l.search(/\s+$/);if(s>-1&&r.push({from:n-(l.length-s),to:n}),o.done)break;l=""}else l=o.value;n+=o.value.length}return r.length?(t(e.update({changes:r,userEvent:"delete"})),!0):!1},_t=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:Y.of(["",""])},range:h.cursor(n.from)}));return t(e.update(r,{scrollIntoView:!0,userEvent:"input"})),!0},Qt=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(n=>{if(!n.empty||n.from==0||n.from==e.doc.length)return{range:n};let l=n.from,o=e.doc.lineAt(l),s=l==o.from?l-1:E(o.text,l-o.from,!1)+o.from,c=l==o.to?l+1:E(o.text,l-o.from,!0)+o.from;return{changes:{from:s,to:c,insert:e.doc.slice(l,c).append(e.doc.slice(s,l))},range:h.cursor(c)}});return r.changes.empty?!1:(t(e.update(r,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function X(e){let t=[],r=-1;for(let n of e.selection.ranges){let l=e.doc.lineAt(n.from),o=e.doc.lineAt(n.to);if(!n.empty&&n.to==o.from&&(o=e.doc.lineAt(n.to-1)),r>=l.number){let s=t[t.length-1];s.to=o.to,s.ranges.push(n)}else t.push({from:l.from,to:o.to,ranges:[n]});r=o.number+1}return t}function Ze(e,t,r){if(e.readOnly)return!1;let n=[],l=[];for(let o of X(e)){if(r?o.to==e.doc.length:o.from==0)continue;let s=e.doc.lineAt(r?o.to+1:o.from-1),c=s.length+1;if(r){n.push({from:o.to,to:s.to},{from:o.from,insert:s.text+e.lineBreak});for(let i of o.ranges)l.push(h.range(Math.min(e.doc.length,i.anchor+c),Math.min(e.doc.length,i.head+c)))}else{n.push({from:s.from,to:o.from},{from:o.to,insert:e.lineBreak+s.text});for(let i of o.ranges)l.push(h.range(i.anchor-c,i.head-c))}}return n.length?(t(e.update({changes:n,scrollIntoView:!0,selection:h.create(l,e.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Xt=({state:e,dispatch:t})=>Ze(e,t,!1),Yt=({state:e,dispatch:t})=>Ze(e,t,!0);function je(e,t,r){if(e.readOnly)return!1;let n=[];for(let l of X(e))r?n.push({from:l.from,insert:e.doc.slice(l.from,l.to)+e.lineBreak}):n.push({from:l.to,insert:e.lineBreak+e.doc.slice(l.from,l.to)});return t(e.update({changes:n,scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Zt=({state:e,dispatch:t})=>je(e,t,!1),jt=({state:e,dispatch:t})=>je(e,t,!0),en=e=>{if(e.state.readOnly)return!1;let{state:t}=e,r=t.changes(X(t).map(({from:l,to:o})=>(l>0?l--:o{let o;if(e.lineWrapping){let s=e.lineBlockAt(l.head),c=e.coordsAtPos(l.head,l.assoc||1);c&&(o=s.bottom+e.documentTop-c.bottom+e.defaultLineHeight/2)}return e.moveVertically(l,!0,o)}).map(r);return e.dispatch({changes:r,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0},Gn=({state:e,dispatch:t})=>(t(e.update(e.replaceSelection(e.lineBreak),{scrollIntoView:!0,userEvent:"input"})),!0),Pn=({state:e,dispatch:t})=>(t(e.update(e.changeByRange(r=>{let n=/^\s*/.exec(e.doc.lineAt(r.from).text)[0];return{changes:{from:r.from,to:r.to,insert:e.lineBreak+n},range:h.cursor(r.from+n.length+1)}}),{scrollIntoView:!0,userEvent:"input"})),!0);function tn(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let r=G(e).resolveInner(t),n=r.childBefore(t),l=r.childAfter(t),o;return n&&l&&n.to<=t&&l.from>=t&&(o=n.type.prop(F.closedBy))&&o.indexOf(l.name)>-1&&e.doc.lineAt(n.to).from==e.doc.lineAt(l.from).from&&!/\S/.test(e.sliceDoc(n.to,l.from))?{from:n.to,to:l.from}:null}var nn=et(!1),rn=et(!0);function et(e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let n=t.changeByRange(l=>{let{from:o,to:s}=l,c=t.doc.lineAt(o),i=!e&&o==s&&tn(t,o);e&&(o=s=(s<=c.to?c:t.doc.lineAt(s)).to);let f=new te(t,{simulateBreak:o,simulateDoubleBreak:!!i}),u=ee(f,o);for(u==null&&(u=V(/^\s*/.exec(t.doc.lineAt(o).text)[0],t.tabSize));sc.from&&o{let l=[];for(let s=n.from;s<=n.to;){let c=e.doc.lineAt(s);c.number>r&&(n.empty||n.to>c.from)&&(t(c,l,n),r=c.number),s=c.to+1}let o=e.changes(l);return{changes:l,range:h.range(o.mapPos(n.anchor,1),o.mapPos(n.head,1))}})}var on=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=Object.create(null),n=new te(e,{overrideIndentation:o=>{let s=r[o];return s??-1}}),l=fe(e,(o,s,c)=>{let i=ee(n,o.from);if(i==null)return;/\S/.test(o.text)||(i=0);let f=/^\s*/.exec(o.text)[0],u=I(e,i);(f!=u||c.frome.readOnly?!1:(t(e.update(fe(e,(r,n)=>{n.push({from:r.from,insert:e.facet(ke)})}),{userEvent:"input.indent"})),!0),tt=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(fe(e,(r,n)=>{let l=/^\s*/.exec(r.text)[0];if(!l)return;let o=V(l,e.tabSize),s=0,c=I(e,Math.max(0,o-P(e)));for(;s(e.setTabFocusMode(),!0),Jn=e=>(e.setTabFocusMode(2e3),!0),wn=({state:e,dispatch:t})=>e.selection.ranges.some(r=>!r.empty)?ae({state:e,dispatch:t}):(t(e.update(e.replaceSelection("	"),{scrollIntoView:!0,userEvent:"input"})),!0),sn=[{key:"Ctrl-b",run:Re,shift:ze,preventDefault:!0},{key:"Ctrl-f",run:ve,shift:He},{key:"Ctrl-p",run:Fe,shift:Ke},{key:"Ctrl-n",run:Ge,shift:$e},{key:"Ctrl-a",run:bt,shift:Gt},{key:"Ctrl-e",run:Et,shift:Pt},{key:"Ctrl-d",run:Qe},{key:"Ctrl-h",run:se},{key:"Ctrl-k",run:qt},{key:"Ctrl-Alt-h",run:Ye},{key:"Ctrl-o",run:_t},{key:"Ctrl-t",run:Qt},{key:"Ctrl-v",run:le}],cn=[{key:"ArrowLeft",run:Re,shift:ze,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:kt,shift:Ot,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Lt,shift:Vt,preventDefault:!0},{key:"ArrowRight",run:ve,shift:He,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:St,shift:It,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Mt,shift:Ft,preventDefault:!0},{key:"ArrowUp",run:Fe,shift:Ke,preventDefault:!0},{mac:"Cmd-ArrowUp",run:xe,shift:Le},{mac:"Ctrl-ArrowUp",run:Ae,shift:Be},{key:"ArrowDown",run:Ge,shift:$e,preventDefault:!0},{mac:"Cmd-ArrowDown",run:De,shift:Me},{mac:"Ctrl-ArrowDown",run:le,shift:Ce},{key:"PageUp",run:Ae,shift:Be},{key:"PageDown",run:le,shift:Ce},{key:"Home",run:Dt,shift:Nt,preventDefault:!0},{key:"Mod-Home",run:xe,shift:Le},{key:"End",run:xt,shift:Ut,preventDefault:!0},{key:"Mod-End",run:De,shift:Me},{key:"Enter",run:nn},{key:"Mod-a",run:Jt},{key:"Backspace",run:se,shift:se},{key:"Delete",run:Qe},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Ye},{key:"Mod-Delete",mac:"Alt-Delete",run:Wt},{mac:"Mod-Backspace",run:Kt},{mac:"Mod-Delete",run:$t}].concat(sn.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),zn=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Bt,shift:Rt},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Ct,shift:vt},{key:"Alt-ArrowUp",run:Xt},{key:"Shift-Alt-ArrowUp",run:Zt},{key:"Alt-ArrowDown",run:Yt},{key:"Shift-Alt-ArrowDown",run:jt},{key:"Escape",run:Ht},{key:"Mod-Enter",run:rn},{key:"Alt-l",mac:"Ctrl-l",run:wt},{key:"Mod-i",run:zt,preventDefault:!0},{key:"Mod-[",run:tt},{key:"Mod-]",run:ae},{key:"Mod-Alt-\\",run:on},{key:"Shift-Mod-k",run:en},{key:"Shift-Mod-\\",run:Tt},{key:"Mod-/",run:nt},{key:"Alt-A",run:ot},{key:"Ctrl-m",mac:"Shift-Alt-m",run:ln}].concat(cn),Hn={key:"Tab",run:ae,shift:tt};export{nt as a,rt as b,dn as c,mn as d,ot as e,pn as f,gn as g,lt as h,it as i,ut as j,yn as k,kn as l,Ee as m,oe as n,ft as o,at as p,Sn as q,An as r,Bn as s,Re as t,ve as u,Cn as v,xn as w,kt as x,St as y,Dn as z,Ln as A,Mn as B,bn as C,Bt as D,Ct as E,Fe as F,Ge as G,Ae as H,le as I,xt as J,Dt as K,Lt as L,Mt as M,bt as N,Et as O,Tt as P,En as Q,ze as R,He as S,Tn as T,On as U,Ot as V,It as W,In as X,Rn as Y,vn as Z,Un as _,Rt as $,vt as aa,Ke as ba,$e as ca,Be as da,Ce as ea,Ut as fa,Nt as ga,Vt as ha,Ft as ia,Gt as ja,Pt as ka,xe as la,De as ma,Le as na,Me as oa,Jt as pa,wt as qa,zt as ra,Ht as sa,se as ta,Nn as ua,Qe as va,Ye as wa,Wt as xa,qt as ya,Vn as za,Kt as Aa,$t as Ba,Fn as Ca,_t as Da,Qt as Ea,Xt as Fa,Yt as Ga,Zt as Ha,jt as Ia,en as Ja,Gn as Ka,Pn as La,nn as Ma,rn as Na,on as Oa,ae as Pa,tt as Qa,ln as Ra,Jn as Sa,wn as Ta,sn as Ua,cn as Va,zn as Wa,Hn as Xa};
diff --git a/static/dist/chunks/dist-4DZMONIQ.js b/static/dist/chunks/dist-4DZMONIQ.js
new file mode 100644
index 0000000..d55d510
--- /dev/null
+++ b/static/dist/chunks/dist-4DZMONIQ.js
@@ -0,0 +1 @@
+import{$,A,Aa,B,Ba,C,Ca,D,Da,E,Ea,F,Fa,G,Ga,H,Ha,I,Ia,J,Ja,K,Ka,L,La,M,Ma,N,Na,O,Oa,P,Pa,Q,Qa,R,Ra,S,Sa,T,Ta,U,Ua,V,Va,W,Wa,X,Xa,Y,Z,_,a,aa,b,ba,c,ca,d,da,e,ea,f,fa,g,ga,h,ha,i,ia,j,ja,k,ka,l,la,m,ma,n,na,o,oa,p,pa,q,qa,r,ra,s,sa,t,ta,u,ua,v,va,w,wa,x,xa,y,ya,z,za}from"./chunk-RY7TOCYY.js";import"./chunk-CSOMSVJQ.js";import"./chunk-CGTIGMIP.js";import"./chunk-IVRVZEPW.js";import"./chunk-6OYJTXGR.js";export{f as blockComment,g as blockUncomment,Ia as copyLineDown,Ha as copyLineUp,w as cursorCharBackward,v as cursorCharForward,t as cursorCharLeft,u as cursorCharRight,ma as cursorDocEnd,la as cursorDocStart,A as cursorGroupBackward,z as cursorGroupForward,x as cursorGroupLeft,y as cursorGroupRight,K as cursorLineBoundaryBackward,J as cursorLineBoundaryForward,L as cursorLineBoundaryLeft,M as cursorLineBoundaryRight,G as cursorLineDown,O as cursorLineEnd,N as cursorLineStart,F as cursorLineUp,P as cursorMatchingBracket,I as cursorPageDown,H as cursorPageUp,C as cursorSubwordBackward,B as cursorSubwordForward,D as cursorSyntaxLeft,E as cursorSyntaxRight,Wa as defaultKeymap,ta as deleteCharBackward,ua as deleteCharBackwardStrict,va as deleteCharForward,wa as deleteGroupBackward,xa as deleteGroupForward,Ja as deleteLine,Aa as deleteLineBoundaryBackward,Ba as deleteLineBoundaryForward,ya as deleteToLineEnd,za as deleteToLineStart,Ca as deleteTrailingWhitespace,Ua as emacsStyleKeymap,k as history,l as historyField,s as historyKeymap,Qa as indentLess,Pa as indentMore,Oa as indentSelection,Xa as indentWithTab,Na as insertBlankLine,Ka as insertNewline,Ma as insertNewlineAndIndent,La as insertNewlineKeepIndent,Ta as insertTab,j as invertedEffects,i as isolateHistory,c as lineComment,d as lineUncomment,Ga as moveLineDown,Fa as moveLineUp,n as redo,r as redoDepth,p as redoSelection,pa as selectAll,U as selectCharBackward,T as selectCharForward,R as selectCharLeft,S as selectCharRight,oa as selectDocEnd,na as selectDocStart,Y as selectGroupBackward,X as selectGroupForward,V as selectGroupLeft,W as selectGroupRight,qa as selectLine,ga as selectLineBoundaryBackward,fa as selectLineBoundaryForward,ha as selectLineBoundaryLeft,ia as selectLineBoundaryRight,ca as selectLineDown,ka as selectLineEnd,ja as selectLineStart,ba as selectLineUp,Q as selectMatchingBracket,ea as selectPageDown,da as selectPageUp,ra as selectParentSyntax,_ as selectSubwordBackward,Z as selectSubwordForward,$ as selectSyntaxLeft,aa as selectSyntaxRight,sa as simplifySelection,Da as splitLine,Va as standardKeymap,Sa as temporarilySetTabFocusMode,e as toggleBlockComment,h as toggleBlockCommentByLine,a as toggleComment,b as toggleLineComment,Ra as toggleTabFocusMode,Ea as transposeChars,m as undo,q as undoDepth,o as undoSelection};
diff --git a/static/dist/chunks/dist-6O6UQM2R.js b/static/dist/chunks/dist-6O6UQM2R.js
new file mode 100644
index 0000000..927d32b
--- /dev/null
+++ b/static/dist/chunks/dist-6O6UQM2R.js
@@ -0,0 +1 @@
+import{A as z,B as A,C as B,D as C,E as D,F as E,G as F,H as G,I as H,J as I,K as J,L as K,M as L,N as M,O as N,P as O,Q as P,R as Q,S as R,T as S,U as T,V as U,W as V,X as W,Y as X,Z as Y,b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u,w as v,x as w,y as x,z as y}from"./chunk-IVRVZEPW.js";import"./chunk-6OYJTXGR.js";export{f as BidiSpan,j as BlockInfo,b as BlockType,d as BlockWrapper,c as Decoration,e as Direction,k as EditorView,N as GutterMarker,s as MatchDecorator,n as RectangleMarker,h as ViewPlugin,i as ViewUpdate,a as WidgetType,Y as __test,C as activateHover,G as closeHoverTooltip,F as closeHoverTooltips,y as crosshairCursor,p as drawSelection,r as dropCursor,M as getDialog,q as getDrawSelectionConfig,J as getPanel,D as getTooltip,Q as gutter,O as gutterLineClass,P as gutterWidgetClass,R as gutters,E as hasHoverTooltips,v as highlightActiveLine,V as highlightActiveLineGutter,t as highlightSpecialChars,X as highlightTrailingWhitespace,W as highlightWhitespace,B as hoverTooltip,l as keymap,o as layer,S as lineNumberMarkers,T as lineNumberWidgetMarker,U as lineNumbers,g as logException,I as panels,w as placeholder,x as rectangularSelection,H as repositionTooltips,m as runScopeHandlers,u as scrollPastEnd,L as showDialog,K as showPanel,A as showTooltip,z as tooltips};
diff --git a/static/dist/chunks/dist-FYDL7QK6.js b/static/dist/chunks/dist-FYDL7QK6.js
new file mode 100644
index 0000000..8d3d612
--- /dev/null
+++ b/static/dist/chunks/dist-FYDL7QK6.js
@@ -0,0 +1,34 @@
+import{J as Dr,K as Kr,Ma as Fr,Oa as _r,Pa as Hr,Qa as Wr,m as Ir,n as Br,t as Nr,w as Pr}from"./chunk-RY7TOCYY.js";import{K as Or,Y as Rt,Z as Rr,g as Et,q as Ot}from"./chunk-CSOMSVJQ.js";import"./chunk-CGTIGMIP.js";import{L as Tt,d as Ye,f as Ar,i as Tr,l as ze,r as Er}from"./chunk-IVRVZEPW.js";import{A as At,c as St,d as Sr,e as Mr,f as br,g as Mt,k as ae,m as bt,n as Lt,s as Ze,u as Me,v as Lr}from"./chunk-6OYJTXGR.js";var Vr=typeof String.prototype.normalize=="function"?c=>c.normalize("NFKD"):c=>c,et=class{constructor(i,l,u=0,d=i.length,g,x){this.test=x,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=i.iterRange(u,d),this.bufferStart=u,this.normalize=g?M=>g(Vr(M)):Vr,this.query=this.normalize(l)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Sr(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let i=this.peek();if(i<0)return this.done=!0,this;let l=Mr(i),u=this.bufferStart+this.bufferPos;this.bufferPos+=br(i);let d=this.normalize(l);for(let g=0,x=u;;g++){let M=d.charCodeAt(g),L=this.match(M,x,this.bufferPos+this.bufferStart);if(g==d.length-1){if(L)return this.value=L,this;break}x==u&&gthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let i=this.matchPos-this.curLineStart;;){this.re.lastIndex=i;let l=this.matchPos<=this.to&&this.re.exec(this.curLine);if(l){let u=this.curLineStart+l.index,d=u+l[0].length;if(this.matchPos=nt(this.text,d+(u==d?1:0)),u==this.curLineStart+this.curLine.length&&this.nextLine(),(uthis.value.to)&&(!this.test||this.test(u,d,l)))return this.value={from:u,to:d,match:l},this;i=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=u||d.to<=l){let M=new c(l,i.sliceString(l,u));return It.set(i,M),M}if(d.from==l&&d.to==u)return d;let{text:g,from:x}=d;return x>l&&(g=i.sliceString(l,x)+g,x=l),d.to=this.to?this.to:this.text.lineAt(i).to}next(){for(;;){let i=this.re.lastIndex=this.matchPos-this.flat.from,l=this.re.exec(this.flat.text);if(l&&!l[0]&&l.index==i&&(this.re.lastIndex=i+1,l=this.re.exec(this.flat.text)),l){let u=this.flat.from+l.index,d=u+l[0].length;if((this.flat.to>=this.to||l.index+l[0].length<=this.flat.text.length-10)&&(!this.test||this.test(u,d,l)))return this.value={from:u,to:d,match:l},this.matchPos=nt(this.text,d+(u==d?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=tt.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}};typeof Symbol<"u"&&(He.prototype[Symbol.iterator]=rt.prototype[Symbol.iterator]=function(){return this});function Zn(c){try{return new RegExp(c,Pt),!0}catch{return!1}}function nt(c,i){if(i>=c.length)return i;let l=c.lineAt(i),u;for(;i=56320&&u<57344;)i++;return i}var it=class{constructor(i){this.search=i.search,this.caseSensitive=!!i.caseSensitive,this.literal=!!i.literal,this.regexp=!!i.regexp,this.replace=i.replace||"",this.valid=!!this.search&&(!this.regexp||Zn(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!i.wholeWord}unquote(i){return this.literal?i:i.replace(/\\([nrt\\])/g,(l,u)=>u=="n"?`
+`:u=="r"?"\r":u=="t"?"	":"\\")}eq(i){return this.search==i.search&&this.replace==i.replace&&this.caseSensitive==i.caseSensitive&&this.regexp==i.regexp&&this.wholeWord==i.wholeWord}create(){return this.regexp?new Nt(this):new Bt(this)}getCursor(i,l=0,u){let d=i.doc?i:Lr.create({doc:i});return u==null&&(u=d.doc.length),this.regexp?_e(this,d,l,u):Fe(this,d,l,u)}},at=class{constructor(i){this.spec=i}};function Fe(c,i,l,u){return new et(i.doc,c.unquoted,l,u,c.caseSensitive?void 0:d=>d.toLowerCase(),c.wholeWord?Yn(i.doc,i.charCategorizer(i.selection.main.head)):void 0)}function Yn(c,i){return(l,u,d,g)=>((g>l||g+d.length=l)return null;d.push(u.value)}return d}highlight(i,l,u,d){let g=Fe(this.spec,i,Math.max(0,l-this.spec.unquoted.length),Math.min(u+this.spec.unquoted.length,i.doc.length));for(;!g.next().done;)d(g.value.from,g.value.to)}};function _e(c,i,l,u){return new He(i.doc,c.search,{ignoreCase:!c.caseSensitive,test:c.wholeWord?ei(i.charCategorizer(i.selection.main.head)):void 0},l,u)}function ot(c,i){return c.slice(St(c,i,!1),i)}function st(c,i){return c.slice(i,St(c,i))}function ei(c){return(i,l,u)=>!u[0].length||(c(ot(u.input,u.index))!=Me.Word||c(st(u.input,u.index))!=Me.Word)&&(c(st(u.input,u.index+u[0].length))!=Me.Word||c(ot(u.input,u.index+u[0].length))!=Me.Word)}var Nt=class extends at{nextMatch(i,l,u){let d=_e(this.spec,i,u,i.doc.length).next();return d.done&&(d=_e(this.spec,i,0,l).next()),d.done?null:d.value}prevMatchInRange(i,l,u){for(let d=1;;d++){let g=Math.max(l,u-d*1e4),x=_e(this.spec,i,g,u),M=null;for(;!x.next().done;)M=x.value;if(M&&(g==l||M.from>g+10))return M;if(g==l)return null}}prevMatch(i,l,u){return this.prevMatchInRange(i,0,l)||this.prevMatchInRange(i,u,i.doc.length)}getReplacement(i){return this.spec.unquote(this.spec.replace).replace(/\$([$&\d+])/g,(l,u)=>u=="$"?"$":u=="&"?i.match[0]:u!="0"&&+u=l)return null;d.push(u.value)}return d}highlight(i,l,u,d){let g=_e(this.spec,i,Math.max(0,l-250),Math.min(u+250,i.doc.length));for(;!g.next().done;)d(g.value.from,g.value.to)}},lt=Ze.define();function ti(c){var i=c.Pos;function l(e,t,r){if(t.line===r.line&&t.ch>=r.ch-1){var n=e.getLine(t.line),a=n.charCodeAt(t.ch);55296<=a&&a<=55551&&(r.ch+=1)}return{start:t,end:r}}var u=[{keys:"",type:"keyToKey",toKeys:"h"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"g",type:"keyToKey",toKeys:"gk"},{keys:"g",type:"keyToKey",toKeys:"gj"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"h"},{keys:"",type:"keyToKey",toKeys:"x"},{keys:"",type:"keyToKey",toKeys:"W"},{keys:"",type:"keyToKey",toKeys:"B"},{keys:"",type:"keyToKey",toKeys:"w"},{keys:"",type:"keyToKey",toKeys:"b"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"",type:"keyToKey",toKeys:"0"},{keys:"",type:"keyToKey",toKeys:"$"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"",type:"keyToKey",toKeys:"i",context:"normal"},{keys:"",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"(",type:"motion",motion:"moveBySentence",motionArgs:{forward:!1}},{keys:")",type:"motion",motion:"moveBySentence",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"g$",type:"motion",motion:"moveToEndOfDisplayLine"},{keys:"g^",type:"motion",motion:"moveToStartOfDisplayLine"},{keys:"g0",type:"motion",motion:"moveToStartOfDisplayLine"},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:"=",type:"operator",operator:"indentAuto"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"gn",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!0}},{keys:"gN",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!1}},{keys:"gq",type:"operator",operator:"hardWrap"},{keys:"gw",type:"operator",operator:"hardWrap",operatorArgs:{keepCursor:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveToStartOfLine",context:"insert"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"",type:"idle",context:"normal"},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"gi",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"lastEdit"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"gI",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"bol"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"gJ",type:"action",action:"joinLines",actionArgs:{keepSpaces:!0},isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r",type:"action",action:"replace",isEdit:!0},{keys:"@",type:"action",action:"replayMacro"},{keys:"q",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0},context:"normal"},{keys:"R",type:"operator",operator:"change",operatorArgs:{linewise:!0,fullLine:!0},context:"visual",exitVisualBlock:!0},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"",type:"action",action:"redo"},{keys:"m",type:"action",action:"setMark"},{keys:'"',type:"action",action:"setRegister"},{keys:"",type:"action",action:"insertRegister",context:"insert",isEdit:!0},{keys:"",type:"action",action:"oneNormalCommand",context:"insert"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a",type:"motion",motion:"textObjectManipulation"},{keys:"i",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],d=u.length,g=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"omap",shortName:"om"},{name:"noremap",shortName:"no"},{name:"nnoremap",shortName:"nn"},{name:"vnoremap",shortName:"vn"},{name:"inoremap",shortName:"ino"},{name:"onoremap",shortName:"ono"},{name:"unmap"},{name:"mapclear",shortName:"mapc"},{name:"nmapclear",shortName:"nmapc"},{name:"vmapclear",shortName:"vmapc"},{name:"imapclear",shortName:"imapc"},{name:"omapclear",shortName:"omapc"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"startinsert",shortName:"start"},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"vglobal",shortName:"v"},{name:"delete",shortName:"d"},{name:"join",shortName:"j"},{name:"normal",shortName:"norm"},{name:"global",shortName:"g"}],x=jt("");function M(e){e.setOption("disableInput",!0),e.setOption("showCursorWhenSelecting",!1),c.signal(e,"vim-mode-change",{mode:"normal"}),e.on("cursorActivity",mr),Be(e),c.on(e.getInputField(),"paste",D(e))}function L(e){e.setOption("disableInput",!1),e.off("cursorActivity",mr),c.off(e.getInputField(),"paste",D(e)),e.state.vim=null,Qe&&clearTimeout(Qe)}function D(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(Q(e.getCursor(),0,1)),De.enterInsertMode(e,{},t))}),t.onPasteFn}var _=/[\d]/,I=[c.isWordChar,function(e){return e&&!c.isWordChar(e)&&!/\s/.test(e)}],O=[function(e){return/\S/.test(e)}],W=["<",">"],P=["-",'"',".",":","_","/","+"],U=/^\w$/,V;try{V=new RegExp("^[\\p{Lu}]$","u")}catch{V=/^[A-Z]$/}function se(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function ne(e){return/^[a-z]$/.test(e)}function Re(e){return"()[]{}".indexOf(e)!=-1}function ke(e){return _.test(e)}function le(e){return V.test(e)}function $(e){return/^\s*$/.test(e)}function ve(e){return".?!".indexOf(e)!=-1}function ut(e,t){for(var r=0;r1&&t.setOption("textwidth",n)}});var tn=function(){var e=100,t=-1,r=0,n=0,a=new Array(e);function o(h,p,v){var C=t%e,k=a[C];function y(w){var S=++t%e,T=a[S];T&&T.clear(),a[S]=h.setBookmark(w)}if(k){var m=k.find();m&&!ce(m,p)&&y(p)}else y(p);y(v),r=t,n=t-e+1,n<0&&(n=0)}function s(h,p){t+=p,t>r?t=r:t0?1:-1,k,y=h.getCursor();do if(t+=C,v=a[(e+t)%e],v&&(k=v.find())&&!ce(y,k))break;while(tn)}return v}function f(h,p){var v=t,C=s(h,p);return t=v,C&&C.find()}return{cachedCursor:void 0,add:o,find:f,move:s}},Wt=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};class rn{constructor(){this.latestRegister=void 0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void 0,this.lastInsertModeChanges=Wt()}exitMacroRecordMode(){var t=b.macroModeState;t.onRecordingDone&&t.onRecordingDone(),t.onRecordingDone=void 0,t.isRecording=!1}enterMacroRecordMode(t,r){var n=b.registerController.getRegister(r);if(n){if(n.clear(),this.latestRegister=r,t.openDialog){var a=Ae("span",{class:"cm-vim-message"},"recording @"+r);this.onRecordingDone=t.openDialog(a,null,{bottom:!0})}this.isRecording=!0}}}function Be(e){return e.state.vim||(e.state.vim={inputState:new Ut,lastEditInputState:void 0,lastEditActionCommand:void 0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},insertMode:!1,insertModeReturn:!1,insertModeRepeat:void 0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{},expectLiteralNext:!1}),e.state.vim}var b;function Vt(){b={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void 0,jumpList:tn(),macroModeState:new rn,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new ln({}),searchHistoryController:new qt,exCommandHistoryController:new qt};for(var e in we){var t=we[e];t.value=t.defaultValue}}var We,ue={enterVimMode:M,leaveVimMode:L,buildKeyMap:function(){},getRegisterController:function(){return b.registerController},resetVimGlobalState_:Vt,getVimGlobalState_:function(){return b},maybeInitVimState_:Be,suppressErrorLogging:!1,InsertModeKey:Ct,map:function(e,t,r){pe.map(e,t,r)},unmap:function(e,t){return pe.unmap(e,t)},noremap:function(e,t,r){pe.map(e,t,r,!0)},mapclear:function(e){var t=u.length,r=d,n=u.slice(0,t-r);if(u=u.slice(t-r),e)for(var a=n.length-1;a>=0;a--){var o=n[a];if(e!==o.context)if(o.context)this._mapCommand(o);else{var s=["normal","insert","visual"];for(var f in s)if(s[f]!==e){var h=Object.assign({},o);h.context=s[f],this._mapCommand(h)}}}},langmap:$t,vimKeyFromEvent:je,setOption:ct,getOption:be,defineOption:Ie,defineEx:function(e,t,r){if(!t)t=e;else if(e.indexOf(t)!==0)throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered');pr[e]=r,pe.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,r){var n=this.findKey(e,t,r);if(typeof n=="function")return n()},multiSelectHandleKey:Gn,findKey:function(e,t,r){var n=Be(e),a=e;function o(){var v=b.macroModeState;if(v.isRecording){if(t=="q")return v.exitMacroRecordMode(),G(a),!0;r!="mapping"&&Qn(v,t)}}function s(){if(t==""){if(n.visualMode)me(a);else if(n.insertMode)Te(a);else return;return G(a),!0}}function f(){if(s())return!0;n.inputState.keyBuffer.push(t);var v=n.inputState.keyBuffer.join(""),C=t.length==1,k=Ee.matchCommand(v,u,n.inputState,"insert"),y=n.inputState.changeQueue;if(k.type=="none")return G(a),!1;if(k.type=="partial"){if(k.expectLiteralNext&&(n.expectLiteralNext=!0),We&&window.clearTimeout(We),We=C&&window.setTimeout(function(){n.insertMode&&n.inputState.keyBuffer.length&&G(a)},be("insertModeEscKeysTimeout")),C){var m=a.listSelections();(!y||y.removed.length!=m.length)&&(y=n.inputState.changeQueue=new on),y.inserted+=t;for(var w=0;w|./gi,s;s=o.exec(t);){var f=s[0],h=a.insertMode;if(q){nn(f);continue}var p=ue.handleKey(e,f,"mapping");if(!p&&h&&a.insertMode){if(f[0]=="<"){var v=f.toLowerCase().slice(1,-1),C=v.split("-");if(v=C.pop()||"",v=="lt")f="<";else if(v=="space")f=" ";else if(v=="cr")f=`
+`;else if(Pe.hasOwnProperty(v)){f=Pe[v],wr(e,f);continue}else f=f[0],o.lastIndex=s.index+1}e.replaceSelection(f)}}}finally{if(Ne.pop(),Ve=Ne.length?n:!1,!Ne.length&&q){var k=q;q=null,Ue(e,k)}}}var ft={Return:"CR",Backspace:"BS",Delete:"Del",Escape:"Esc",Insert:"Ins",ArrowLeft:"Left",ArrowRight:"Right",ArrowUp:"Up",ArrowDown:"Down",Enter:"CR"," ":"Space"},an={Shift:1,Alt:1,Command:1,Control:1,CapsLock:1,AltGraph:1,Dead:1,Unidentified:1},Pe={};"Left|Right|Up|Down|End|Home".split("|").concat(Object.keys(ft)).forEach(function(e){Pe[(ft[e]||"").toLowerCase()]=Pe[e.toLowerCase()]=e});function je(e,t){var r=e.key;if(!an[r]){r.length>1&&r[0]=="n"&&(r=r.replace("Numpad","")),r=ft[r]||r;var n="";if(e.ctrlKey&&(n+="C-"),e.altKey&&(n+="A-"),e.metaKey&&(n+="M-"),c.isMac&&e.altKey&&!e.metaKey&&!e.ctrlKey&&(n=n.slice(2)),(n||r.length>1)&&e.shiftKey&&(n+="S-"),t&&!t.expectLiteralNext&&r.length==1){if(x.keymap&&r in x.keymap)(x.remapCtrl!=!1||!n)&&(r=x.keymap[r]);else if(r.charCodeAt(0)>255){var a=e.code?.slice(-1)||"";e.shiftKey||(a=a.toLowerCase()),a&&(r=a)}}return n+=r,n.length>1&&(n="<"+n+">"),n}}function $t(e,t){x.string!==e&&(x=jt(e)),x.remapCtrl=t}function jt(e){let t={};if(!e)return{keymap:t,string:""};function r(n){return n.split(/\\?(.)/).filter(Boolean)}return e.split(/((?:[^\\,]|\\.)+),/).map(n=>{if(!n)return;let a=n.split(/((?:[^\\;]|\\.)+);/);if(a.length==3){let o=r(a[1]),s=r(a[2]);if(o.length!==s.length)return;for(let f=0;f0||this.motionRepeat.length>0)&&(t=1,this.prefixRepeat.length>0&&(t*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(t*=parseInt(this.motionRepeat.join(""),10))),t}}function G(e,t){e.state.vim.inputState=new Ut,e.state.vim.expectLiteralNext=!1,c.signal(e,"vim-command-done",t)}function on(){this.removed=[],this.inserted=""}class ge{constructor(t,r,n){this.clear(),this.keyBuffer=[t||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!r,this.blockwise=!!n}setText(t,r,n){this.keyBuffer=[t||""],this.linewise=!!r,this.blockwise=!!n}pushText(t,r){r&&(this.linewise||this.keyBuffer.push(`
+`),this.linewise=!0),this.keyBuffer.push(t)}pushInsertModeChanges(t){this.insertModeChanges.push(Wt(t))}pushSearchQuery(t){this.searchQueries.push(t)}clear(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1}toString(){return this.keyBuffer.join("")}}function sn(e,t){var r=b.registerController.registers;if(!e||e.length!=1)throw Error("Register name must be 1 character");if(r[e])throw Error("Register already defined "+e);r[e]=t,P.push(e)}class ln{constructor(t){this.registers=t,this.unnamedRegister=t['"']=new ge,t["."]=new ge,t[":"]=new ge,t["/"]=new ge,t["+"]=new ge}pushText(t,r,n,a,o){if(t!=="_"){a&&n.charAt(n.length-1)!==`
+`&&(n+=`
+`);var s=this.isValidRegister(t)?this.getRegister(t):null;if(!s){switch(r){case"yank":this.registers[0]=new ge(n,a,o);break;case"delete":case"change":n.indexOf(`
+`)==-1?this.registers["-"]=new ge(n,a):(this.shiftNumericRegisters_(),this.registers[1]=new ge(n,a));break}this.unnamedRegister.setText(n,a,o);return}var f=le(t);f?s.pushText(n,a):s.setText(n,a,o),t==="+"&&navigator.clipboard.writeText(n),this.unnamedRegister.setText(s.toString(),a)}}getRegister(t){return this.isValidRegister(t)?(t=t.toLowerCase(),this.registers[t]||(this.registers[t]=new ge),this.registers[t]):this.unnamedRegister}isValidRegister(t){return t&&(ut(t,P)||U.test(t))}shiftNumericRegisters_(){for(var t=9;t>=2;t--)this.registers[t]=this.getRegister(""+(t-1))}}class qt{constructor(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}nextMatch(t,r){var n=this.historyBuffer,a=r?-1:1;this.initialPrefix===null&&(this.initialPrefix=t);for(var o=this.iterator+a;r?o>=0:o=n.length)return this.iterator=n.length,this.initialPrefix;if(o<0)return t}pushInput(t){var r=this.historyBuffer.indexOf(t);r>-1&&this.historyBuffer.splice(r,1),t.length&&this.historyBuffer.push(t)}reset(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}}var Ee={matchCommand:function(e,t,r,n){var a=hn(e,t,n,r);if(!a.full&&!a.partial)return{type:"none"};if(!a.full&&a.partial)return{type:"partial",expectLiteralNext:a.partial.length==1&&a.partial[0].keys.slice(-11)==""};for(var o,s=0;s"||o.keys.slice(-10)==""){var h=pn(e);if(!h||h.length>1)return{type:"clear"};r.selectedCharacter=h}return{type:"full",command:o}},processCommand:function(e,t,r){switch(t.inputState.repeatOverride=r.repeatOverride,r.type){case"motion":this.processMotion(e,t,r);break;case"operator":this.processOperator(e,t,r);break;case"operatorMotion":this.processOperatorMotion(e,t,r);break;case"action":this.processAction(e,t,r);break;case"search":this.processSearch(e,t,r);break;case"ex":case"keyToEx":this.processEx(e,t,r);break}},processMotion:function(e,t,r){t.inputState.motion=r.motion,t.inputState.motionArgs=Ge(r.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,r){var n=t.inputState;if(n.operator)if(n.operator==r.operator){n.motion="expandToLine",n.motionArgs={linewise:!0,repeat:1},this.evalInput(e,t);return}else G(e);n.operator=r.operator,n.operatorArgs=Ge(r.operatorArgs),r.keys.length>1&&(n.operatorShortcut=r.keys),r.exitVisualBlock&&(t.visualBlock=!1,Ke(e)),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,r){var n=t.visualMode,a=Ge(r.operatorMotionArgs);a&&n&&a.visualLine&&(t.visualLine=!0),this.processOperator(e,t,r),n||this.processMotion(e,t,r)},processAction:function(e,t,r){var n=t.inputState,a=n.getRepeat(),o=!!a,s=Ge(r.actionArgs)||{repeat:1};n.selectedCharacter&&(s.selectedCharacter=n.selectedCharacter),r.operator&&this.processOperator(e,t,r),r.motion&&this.processMotion(e,t,r),(r.motion||r.operator)&&this.evalInput(e,t),s.repeat=a||1,s.repeatIsExplicit=o,s.registerName=n.registerName,G(e),t.lastMotion=null,r.isEdit&&this.recordLastEdit(t,n,r),De[r.action](e,s,t)},processSearch:function(e,t,r){if(!e.getSearchCursor)return;var n=r.searchArgs.forward,a=r.searchArgs.wholeWordOnly;de(e).setReversed(!n);var o=n?"/":"?",s=de(e).getQuery(),f=e.getScrollInfo();function h(w,S,T){b.searchHistoryController.pushInput(w),b.searchHistoryController.reset();try{qe(e,w,S,T)}catch{K(e,"Invalid regex: "+w),G(e);return}Ee.processMotion(e,t,{keys:"",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:r.searchArgs.toJumplist}})}function p(w){e.scrollTo(f.left,f.top),h(w,!0,!0);var S=b.macroModeState;S.isRecording&&Jn(S,w)}function v(w,S,T){var A=je(w),E,F;A==""||A==""?(E=A=="",F=w.target?w.target.selectionEnd:0,S=b.searchHistoryController.nextMatch(S,E)||"",T(S),F&&w.target&&(w.target.selectionEnd=w.target.selectionStart=Math.min(F,w.target.value.length))):A&&A!=""&&A!=""&&b.searchHistoryController.reset();var ee;try{ee=qe(e,S,!0,!0)}catch{}ee?e.scrollIntoView(hr(e,!n,ee),30):(mt(e),e.scrollTo(f.left,f.top))}function C(w,S,T){var A=je(w);A==""||A==""||A==""||A==""&&S==""?(b.searchHistoryController.pushInput(S),b.searchHistoryController.reset(),qe(e,s),mt(e),e.scrollTo(f.left,f.top),c.e_stop(w),G(e),T(),e.focus()):A==""||A==""?c.e_stop(w):A==""&&(c.e_stop(w),T(""))}switch(r.searchArgs.querySrc){case"prompt":var k=b.macroModeState;if(k.isPlaying){let S=k.replaySearchQueries.shift();h(S,!0,!1)}else Ue(e,{onClose:p,prefix:o,desc:"(JavaScript regexp)",onKeyUp:v,onKeyDown:C});break;case"wordUnderCursor":var y=vt(e,{noSymbol:!0}),m=!0;if(y||(y=vt(e,{noSymbol:!1}),m=!1),!y){K(e,"No word under cursor"),G(e);return}let w=e.getLine(y.start.line).substring(y.start.ch,y.end.ch);m&&a?w="\\b"+w+"\\b":w=vn(w),b.jumpList.cachedCursor=e.getCursor(),e.setCursor(y.start),h(w,!0,!1);break}},processEx:function(e,t,r){function n(o){b.exCommandHistoryController.pushInput(o),b.exCommandHistoryController.reset(),pe.processCommand(e,o),e.state.vim&&G(e)}function a(o,s,f){var h=je(o),p,v;(h==""||h==""||h==""||h==""&&s=="")&&(b.exCommandHistoryController.pushInput(s),b.exCommandHistoryController.reset(),c.e_stop(o),G(e),f(),e.focus()),h==""||h==""?(c.e_stop(o),p=h=="",v=o.target?o.target.selectionEnd:0,s=b.exCommandHistoryController.nextMatch(s,p)||"",f(s),v&&o.target&&(o.target.selectionEnd=o.target.selectionStart=Math.min(v,o.target.value.length))):h==""?(c.e_stop(o),f("")):h&&h!=""&&h!=""&&b.exCommandHistoryController.reset()}r.type=="keyToEx"?pe.processCommand(e,r.exArgs.input):t.visualMode?Ue(e,{onClose:n,prefix:":",value:"'<,'>",onKeyDown:a,selectValueOnOpen:!1}):Ue(e,{onClose:n,prefix:":",onKeyDown:a})},evalInput:function(e,t){var r=t.inputState,n=r.motion,a=r.motionArgs||{repeat:1},o=r.operator,s=r.operatorArgs||{},f=r.registerName,h=t.sel,p=H(t.visualMode?te(e,h.head):e.getCursor("head")),v=H(t.visualMode?te(e,h.anchor):e.getCursor("anchor")),C=H(p),k=H(v),y,m,w;if(o&&this.recordLastEdit(t,r),r.repeatOverride!==void 0?w=r.repeatOverride:w=r.getRepeat(),w>0&&a.explicitRepeat?a.repeatIsExplicit=!0:(a.noRepeat||!a.explicitRepeat&&w===0)&&(w=1,a.repeatIsExplicit=!1),r.selectedCharacter&&(a.selectedCharacter=s.selectedCharacter=r.selectedCharacter),a.repeat=w,G(e),n){var S=xe[n](e,p,a,t,r);if(t.lastMotion=xe[n],!S)return;if(a.toJumplist){var T=b.jumpList,A=T.cachedCursor;A?(Yt(e,A,S),delete T.cachedCursor):Yt(e,p,S)}S instanceof Array?(m=S[0],y=S[1]):y=S,y||(y=H(p)),t.visualMode?(t.visualBlock&&y.ch===1/0||(y=te(e,y,C)),m&&(m=te(e,m)),m=m||k,h.anchor=m,h.head=y,Ke(e),Se(e,t,"<",j(m,y)?m:y),Se(e,t,">",j(m,y)?y:m)):o||(y=te(e,y,C),e.setCursor(y.line,y.ch))}if(o){if(s.lastSel){m=k;var E=s.lastSel,F=Math.abs(E.head.line-E.anchor.line),ee=Math.abs(E.head.ch-E.anchor.ch);E.visualLine?y=new i(k.line+F,k.ch):E.visualBlock?y=new i(k.line+F,k.ch+ee):E.head.line==E.anchor.line?y=new i(k.line,k.ch+ee):y=new i(k.line+F,k.ch),t.visualMode=!0,t.visualLine=E.visualLine,t.visualBlock=E.visualBlock,h=t.sel={anchor:m,head:y},Ke(e)}else t.visualMode&&(s.lastSel={anchor:H(h.anchor),head:H(h.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var z,Z,B,N,re;if(t.visualMode){z=ie(h.head,h.anchor),Z=Le(h.head,h.anchor),B=t.visualLine||s.linewise,N=t.visualBlock?"block":B?"line":"char";var Y=l(e,z,Z);if(re=pt(e,{anchor:Y.start,head:Y.end},N),B){var J=re.ranges;if(N=="block")for(var Ce=0;Cef:v.linep&&a.line==p?nr(e,t,r,n,!0):(r.toFirstChar&&(o=ye(e.getLine(f)),n.lastHPos=o),n.lastHSPos=e.charCoords(new i(f,o),"div").left,new i(f,o))},moveByDisplayLines:function(e,t,r,n){var a=t;switch(n.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:n.lastHSPos=e.charCoords(a,"div").left}var o=r.repeat,s=e.findPosV(a,r.forward?o:-o,"line",n.lastHSPos);if(s.hitSide)if(r.forward){var f=e.charCoords(s,"div"),h={top:f.top+8,left:n.lastHSPos};s=e.coordsChar(h,"div")}else{var p=e.charCoords(new i(e.firstLine(),0),"div");p.left=n.lastHSPos,s=e.coordsChar(p,"div")}return n.lastHPos=s.ch,s},moveByPage:function(e,t,r){var n=t,a=r.repeat;return e.findPosV(n,r.forward?a:-a,"page")},moveByParagraph:function(e,t,r){var n=r.forward?1:-1;return ir(e,t,r.repeat,n).start},moveBySentence:function(e,t,r){var n=r.forward?1:-1;return En(e,t,r.repeat,n)},moveByScroll:function(e,t,r,n){var a=e.getScrollInfo(),o=null,s=r.repeat;s||(s=a.clientHeight/(2*e.defaultTextHeight()));var f=e.charCoords(t,"local");if(r.repeat=s,o=xe.moveByDisplayLines(e,t,r,n),!o)return null;var h=e.charCoords(o,"local");return e.scrollTo(null,a.top+h.top-f.top),o},moveByWords:function(e,t,r){return Ln(e,t,r.repeat,!!r.forward,!!r.wordEnd,!!r.bigWord)},moveTillCharacter:function(e,t,r){var n=r.repeat,a=gt(e,n,r.forward,r.selectedCharacter,t),o=r.forward?-1:1;return er(o,r),a?(a.ch+=o,a):null},moveToCharacter:function(e,t,r){var n=r.repeat;return er(0,r),gt(e,n,r.forward,r.selectedCharacter,t)||t},moveToSymbol:function(e,t,r){var n=r.repeat;return r.selectedCharacter&&bn(e,n,r.forward,r.selectedCharacter)||t},moveToColumn:function(e,t,r,n){var a=r.repeat;return n.lastHPos=a-1,n.lastHSPos=e.charCoords(t,"div").left,An(e,a)},moveToEol:function(e,t,r,n){return nr(e,t,r,n,!1)},moveToFirstNonWhiteSpaceCharacter:function(e,t){var r=t;return new i(r.line,ye(e.getLine(r.line)))},moveToMatchedSymbol:function(e,t){for(var r=t,n=r.line,a=r.ch,o=e.getLine(n),s;a"?/[(){}[\]<>]/:/[(){}[\]]/,p=e.findMatchingBracket(new i(n,a),{bracketRegex:h});return p.to}else return r},moveToStartOfLine:function(e,t){return new i(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,r){var n=r.forward?e.lastLine():e.firstLine();return r.repeatIsExplicit&&(n=r.repeat-e.getOption("firstLineNumber")),new i(n,ye(e.getLine(n)))},moveToStartOfDisplayLine:function(e){return e.execCommand("goLineLeft"),e.getCursor()},moveToEndOfDisplayLine:function(e){e.execCommand("goLineRight");var t=e.getCursor();return t.sticky=="before"&&t.ch--,t},textObjectManipulation:function(e,t,r,n){var a={"(":")",")":"(","{":"}","}":"{","[":"]","]":"[","<":">",">":"<"},o={"'":!0,'"':!0,"`":!0},s=r.selectedCharacter||"";s=="b"?s="(":s=="B"&&(s="{");var f=!r.textObjectInner,h,p;if(a[s]){if(p=!0,h=or(e,t,s,f),!h){var v=e.getSearchCursor(new RegExp("\\"+s,"g"),t);v.find()&&(h=or(e,v.from(),s,f))}}else if(o[s])p=!0,h=On(e,t,s,f);else if(s==="W"||s==="w")for(var C=r.repeat||1;C-- >0;){var k=vt(e,{inclusive:f,innerWord:!f,bigWord:s==="W",noSymbol:s==="W",multiline:!0},h&&h.end);k&&(h||(h=k),h.end=k.end)}else if(s==="p")if(h=ir(e,t,r.repeat,0,f),r.linewise=!0,n.visualMode)n.visualLine||(n.visualLine=!0);else{var y=n.inputState.operatorArgs;y&&(y.linewise=!0),h.end.line--}else if(s==="t")h=Sn(e,t,f);else if(s==="s"){var m=e.getLine(t.line);t.ch>0&&ve(m[t.ch])&&(t.ch-=1);var w=ar(e,t,r.repeat,1,f),S=ar(e,t,r.repeat,-1,f);$(e.getLine(S.line)[S.ch])&&$(e.getLine(w.line)[w.ch-1])&&(S={line:S.line,ch:S.ch+1}),h={start:S,end:w}}return h?e.state.vim.visualMode?Cn(e,h.start,h.end,p):[h.start,h.end]:null},repeatLastCharacterSearch:function(e,t,r){var n=b.lastCharacterSearch,a=r.repeat,o=r.forward===n.forward,s=(n.increment?1:0)*(o?-1:1);e.moveH(-s,"char"),r.inclusive=!!o;var f=gt(e,a,o,n.selectedCharacter);return f?(f.ch+=s,f):(e.moveH(s,"char"),t)}};function un(e,t){xe[e]=t}function Qt(e,t){for(var r=[],n=0;ns.line&&(f=new i(f.line-1,Number.MAX_VALUE))),e.replaceRange("",s,f),n=s}b.registerController.pushText(t.registerName,"change",a,t.linewise,r.length>1),De.enterInsertMode(e,{head:n},e.state.vim)},delete:function(e,t,r){var n,a,o=e.state.vim;if(o.visualBlock){a=e.getSelection();var h=Qt("",r.length);e.replaceSelections(h),n=ie(r[0].head,r[0].anchor)}else{var s=r[0].anchor,f=r[0].head;t.linewise&&f.line!=e.firstLine()&&s.line==e.lastLine()&&s.line==f.line-1&&(s.line==e.firstLine()?s.ch=0:s=new i(s.line-1,X(e,s.line-1))),a=e.getRange(s,f),e.replaceRange("",s,f),n=s,t.linewise&&(n=xe.moveToFirstNonWhiteSpaceCharacter(e,s))}return b.registerController.pushText(t.registerName,"delete",a,t.linewise,o.visualBlock),te(e,n)},indent:function(e,t,r){var n=e.state.vim,a=n.visualMode?t.repeat||0:1;if(e.indentMore)for(var o=0;oa&&t.linewise&&s--,t.keepCursor?n:new i(s,0)}},changeCase:function(e,t,r,n,a){for(var o=e.getSelections(),s=[],f=t.toLower,h=0;hp.top?(h.line+=(f-p.top)/a,h.line=Math.ceil(h.line),e.setCursor(h),p=e.charCoords(h,"local"),e.scrollTo(null,p.top)):e.scrollTo(null,f);else{var v=f+e.getScrollInfo().clientHeight;v=a.anchor.line?o=Q(a.head,0,1):o=new i(a.anchor.line,0)}else if(n=="inplace"){if(r.visualMode)return}else n=="lastEdit"&&(o=dr(e)||o);e.setOption("disableInput",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),c.signal(e,"vim-mode-change",{mode:"replace"})):(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),c.signal(e,"vim-mode-change",{mode:"insert"})),b.macroModeState.isPlaying||(e.on("change",gr),r.insertEnd&&r.insertEnd.clear(),r.insertEnd=e.setBookmark(o,{insertLeft:!0}),c.on(e.getInputField(),"keydown",Cr)),r.visualMode&&me(e),Xt(e,o,s)}},toggleVisualMode:function(e,t,r){var n=t.repeat,a=e.getCursor(),o;if(r.visualMode)r.visualLine!=!!t.linewise||r.visualBlock!=!!t.blockwise?(r.visualLine=!!t.linewise,r.visualBlock=!!t.blockwise,c.signal(e,"vim-mode-change",{mode:"visual",subMode:r.visualLine?"linewise":r.visualBlock?"blockwise":""}),Ke(e)):me(e);else{r.visualMode=!0,r.visualLine=!!t.linewise,r.visualBlock=!!t.blockwise,o=te(e,new i(a.line,a.ch+n-1));var s=l(e,a,o);r.sel={anchor:s.start,head:s.end},c.signal(e,"vim-mode-change",{mode:"visual",subMode:r.visualLine?"linewise":r.visualBlock?"blockwise":""}),Ke(e),Se(e,r,"<",ie(a,o)),Se(e,r,">",Le(a,o))}},reselectLastSelection:function(e,t,r){var n=r.lastSelection;if(r.visualMode&&Zt(e,r),n){var a=n.anchorMark.find(),o=n.headMark.find();if(!a||!o)return;r.sel={anchor:a,head:o},r.visualMode=!0,r.visualLine=n.visualLine,r.visualBlock=n.visualBlock,Ke(e),Se(e,r,"<",ie(a,o)),Se(e,r,">",Le(a,o)),c.signal(e,"vim-mode-change",{mode:"visual",subMode:r.visualLine?"linewise":r.visualBlock?"blockwise":""})}},joinLines:function(e,t,r){var n,a;if(r.visualMode){if(n=e.getCursor("anchor"),a=e.getCursor("head"),j(a,n)){var o=a;a=n,n=o}a.ch=X(e,a.line)-1}else{var s=Math.max(t.repeat,2);n=e.getCursor(),a=te(e,new i(n.line+s-1,1/0))}for(var f=0,h=n.line;h{this.continuePaste(e,t,r,o,n)});else{var a=n.toString();this.continuePaste(e,t,r,a,n)}},continuePaste:function(e,t,r,n,a){var o=H(e.getCursor());if(n){if(t.matchIndent){var s=e.getOption("tabSize"),f=function(Y){var J=Y.split("	").length-1,Ce=Y.split(" ").length-1;return J*s+Ce*1},h=e.getLine(e.getCursor().line),p=f(h.match(/^\s*/)[0]),v=n.replace(/\n$/,""),C=n!==v,k=f(n.match(/^\s*/)[0]),n=v.replace(/^\s*/gm,function(Y){var J=p+(f(Y)-k);if(J<0)return"";if(e.getOption("indentWithTabs")){var Ce=Math.floor(J/s);return Array(Ce+1).join("	")}else return Array(J+1).join(" ")});n+=C?`
+`:""}if(t.repeat>1)var n=Array(t.repeat+1).join(n);var y=a.linewise,m=a.blockwise;if(m){n=n.split(`
+`),y&&n.pop();for(var w=0;we.lastLine()&&e.replaceRange(`
+`,new i(B,0));var N=X(e,B);Nh.length&&(o=h.length),s=new i(a.line,o)}var p=l(e,a,s);if(a=p.start,s=p.end,n==`
+`)r.visualMode||e.replaceRange("",a,s),(c.commands.newlineAndIndentContinueComment||c.commands.newlineAndIndent)(e);else{var v=e.getRange(a,s);if(v=v.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,n),v=v.replace(/[^\n]/g,n),r.visualBlock){var C=new Array(e.getOption("tabSize")+1).join(" ");v=e.getSelection(),v=v.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,n);var k=v.replace(/\t/g,C).replace(/[^\n]/g,n).split(`
+`);e.replaceSelections(k)}else e.replaceRange(v,a,s);r.visualMode?(a=j(f[0].anchor,f[0].head)?f[0].anchor:f[0].head,e.setCursor(a),me(e,!1)):e.setCursor(Q(s,0,-1))}},incrementNumberToken:function(e,t){for(var r=e.getCursor(),n=e.getLine(r.line),a=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi,o,s,f,h;(o=a.exec(n))!==null&&(s=o.index,f=s+o[0].length,!(r.chh&&(v=-1),h+=v,h>f&&(h-=2)}return new i(o,h)}function Ge(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function Q(e,t,r){return typeof t=="object"&&(r=t.ch,t=t.line),new i(e.line+t,e.ch+r)}function hn(e,t,r,n){n.operator&&(r="operatorPending");for(var a,o=[],s=[],f=Ve?t.length-d:0,h=f;h",n=t.slice(-10)=="";if(r||n){var a=t.length-(r?11:10),o=e.slice(0,a),s=t.slice(0,a);return o==s&&e.length>a?"full":s.indexOf(o)==0?"partial":!1}else return e==t?"full":t.indexOf(e)==0?"partial":!1}function pn(e){var t=/^.*(<[^>]+>)$/.exec(e),r=t?t[1]:e.slice(-1);if(r.length>1)switch(r){case"":case"":r=`
+`;break;case"":case"":r=" ";break;default:r="";break}return r}function zt(e,t,r){return function(){for(var n=0;n2&&(t=ie.apply(void 0,Array.prototype.slice.call(arguments,1))),j(e,t)?e:t}function Le(e,t){return arguments.length>2&&(t=Le.apply(void 0,Array.prototype.slice.call(arguments,1))),j(e,t)?t:e}function Jt(e,t,r){var n=j(e,t),a=j(t,r);return n&&a}function X(e,t){return e.getLine(t).length}function dt(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function vn(e){return e.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function gn(e,t,r){var n=X(e,t),a=new Array(r-n+1).join(" ");e.setCursor(new i(t,n)),e.replaceRange(a,e.getCursor())}function Gt(e,t){var r=[],n=e.listSelections(),a=H(e.clipPos(t)),o=!ce(t,a),s=e.getCursor("head"),f=mn(n,s),h=ce(n[f].head,n[f].anchor),p=n.length-1,v=p-f>f?p:0,C=n[v].anchor,k=Math.min(C.line,a.line),y=Math.max(C.line,a.line),m=C.ch,w=a.ch,S=n[v].head.ch-m,T=w-m;S>0&&T<=0?(m++,o||w--):S<0&&T>=0?(m--,h||w++):S<0&&T==-1&&(m--,w++);for(var A=k;A<=y;A++){var E={anchor:new i(A,m),head:new i(A,w)};r.push(E)}return e.setSelections(r),t.ch=w,C.ch=m,C}function Xt(e,t,r){for(var n=[],a=0;ah&&(a.line=h),a.ch=X(e,a.line)}return{ranges:[{anchor:o,head:a}],primary:0}}else if(r=="block"){var p=Math.min(o.line,a.line),v=o.ch,C=Math.max(o.line,a.line),k=a.ch;v0&&o&&$(o);o=a.pop())r.line--,r.ch=0;o?(r.line--,r.ch=X(e,r.line)):r.ch=0}}function xn(e,t,r){t.ch=0,r.ch=0,r.line++}function ye(e){if(!e)return 0;var t=e.search(/\S/);return t==-1?e.length:t}function vt(e,{inclusive:t,innerWord:r,bigWord:n,noSymbol:a,multiline:o},s){var f=s||kn(e),h=e.getLine(f.line),p=h,v=f.line,C=v,k=f.ch,y,m=a?I[0]:O[0];if(r&&/\s/.test(h.charAt(k)))m=function(F){return/\s/.test(F)};else{for(;!m(h.charAt(k));)if(k++,k>=h.length){if(!o)return null;k--,y=rr(e,f,!0,n,!0);break}n?m=O[0]:(m=I[0],m(h.charAt(k))||(m=I[1]))}for(var w=k,S=k;m(h.charAt(S))&&S>=0;)S--;if(S++,y)w=y.to,C=y.line,p=e.getLine(C),!p&&w==0&&w++;else for(;m(h.charAt(w))&&w0;)S--;!S&&!A&&(S=E)}}return{start:new i(v,S),end:new i(C,w)}}function Sn(e,t,r){var n=t;if(!c.findMatchingTag||!c.findEnclosingTag)return{start:n,end:n};var a=c.findMatchingTag(e,t)||c.findEnclosingTag(e,t);return!a||!a.open||!a.close?{start:n,end:n}:r?{start:a.open.from,end:a.close.to}:{start:a.open.to,end:a.close.from}}function Yt(e,t,r){ce(t,r)||b.jumpList.add(e,t,r)}function er(e,t){b.lastCharacterSearch.increment=e,b.lastCharacterSearch.forward=t.forward,b.lastCharacterSearch.selectedCharacter=t.selectedCharacter}var Mn={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},tr={bracket:{isComplete:function(e){if(e.nextCh===e.symb){if(e.depth++,e.depth>=1)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return e.index===0&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t=e.lastCh==="*"&&e.nextCh==="/";return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb=e.symb==="m"?"{":"}",e.reverseSymb=e.symb==="{"?"}":"{"},isComplete:function(e){return e.nextCh===e.symb}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if(e.nextCh==="#"){var t=e.lineText.match(/^#(\w+)/)[1];if(t==="endif"){if(e.forward&&e.depth===0)return!0;e.depth++}else if(t==="if"){if(!e.forward&&e.depth===0)return!0;e.depth--}if(t==="else"&&e.depth===0)return!0}return!1}}};function bn(e,t,r,n){var a=H(e.getCursor()),o=r?1:-1,s=r?e.lineCount():-1,f=a.ch,h=a.line,p=e.getLine(h),v={lineText:p,nextCh:p.charAt(f),lastCh:null,index:f,symb:n,reverseSymb:(r?{")":"(","}":"{"}:{"(":")","{":"}"})[n],forward:r,depth:0,curMoveThrough:!1},C=Mn[n];if(!C)return a;var k=tr[C].init,y=tr[C].isComplete;for(k&&k(v);h!==s&&t;){if(v.index+=o,v.nextCh=v.lineText.charAt(v.index),!v.nextCh){if(h+=o,v.lineText=e.getLine(h)||"",o>0)v.index=0;else{var m=v.lineText.length;v.index=m>0?m-1:0}v.nextCh=v.lineText.charAt(v.index)}y(v)&&(a.line=h,a.ch=v.index,t--)}return v.nextCh||v.curMoveThrough?new i(h,v.index):a}function rr(e,t,r,n,a){var o=t.line,s=t.ch,f=e.getLine(o),h=r?1:-1,p=n?O:I;if(a&&f==""){if(o+=h,f=e.getLine(o),!se(e,o))return null;s=r?0:f.length}for(;;){if(a&&f=="")return{from:0,to:0,line:o};for(var v=h>0?f.length:-1,C=v,k=v;s!=v;){for(var y=!1,m=0;m0?0:f.length}}function Ln(e,t,r,n,a,o){var s=H(t),f=[];(n&&!a||!n&&a)&&r++;for(var h=!(n&&a),p=0;p0;)k(v,n)&&r--,v+=n;return{start:new i(v,0),end:t}}var y=e.state.vim;if(y.visualLine&&k(o,1,!0)){var m=y.sel.anchor;k(m.line,-1,!0)&&(!a||m.line!=o)&&(o+=1)}var w=C(o);for(v=o;v<=f&&r;v++)k(v,1,!0)&&(!a||C(v)!=w)&&r--;for(p=new i(v,0),v>f&&!w?w=!0:a=!1,v=o;v>s&&!((!a||C(v)==w||v==o)&&k(v,-1,!0));v--);return h=new i(v,0),{start:h,end:p}}function ar(e,t,r,n,a){function o(p){p.pos+p.dir<0||p.pos+p.dir>=p.line.length?p.line=null:p.pos+=p.dir}function s(p,v,C,k){var y=p.getLine(v),m={line:y,ln:v,pos:C,dir:k};if(m.line==="")return{ln:m.ln,pos:m.pos};var w=m.pos;for(o(m);m.line!==null;){if(w=m.pos,ve(m.line[m.pos]))if(a){for(o(m);m.line!==null&&$(m.line[m.pos]);)w=m.pos,o(m);return{ln:m.ln,pos:w+1}}else return{ln:m.ln,pos:m.pos+1};o(m)}return{ln:m.ln,pos:w+1}}function f(p,v,C,k){var y=p.getLine(v),m={line:y,ln:v,pos:C,dir:k};if(m.line==="")return{ln:m.ln,pos:m.pos};var w=m.pos;for(o(m);m.line!==null;){if(!$(m.line[m.pos])&&!ve(m.line[m.pos]))w=m.pos;else if(ve(m.line[m.pos]))return a?$(m.line[m.pos+1])?{ln:m.ln,pos:m.pos+1}:{ln:m.ln,pos:w}:{ln:m.ln,pos:w};o(m)}return m.line=y,a&&$(m.line[m.pos])?{ln:m.ln,pos:m.pos}:{ln:m.ln,pos:w}}for(var h={ln:t.line,pos:t.ch};r>0;)n<0?h=f(e,h.ln,h.pos,n):h=s(e,h.ln,h.pos,n),r--;return new i(h.ln,h.pos)}function En(e,t,r,n){function a(h,p){if(p.pos+p.dir<0||p.pos+p.dir>=p.line.length){if(p.ln+=p.dir,!se(h,p.ln)){p.line=null,p.ln=null,p.pos=null;return}p.line=h.getLine(p.ln),p.pos=p.dir>0?0:p.line.length-1}else p.pos+=p.dir}function o(h,p,v,C){var S=h.getLine(p),k=S==="",y={line:S,ln:p,pos:v,dir:C},m={ln:y.ln,pos:y.pos},w=y.line==="";for(a(h,y);y.line!==null;){if(m.ln=y.ln,m.pos=y.pos,y.line===""&&!w)return{ln:y.ln,pos:y.pos};if(k&&y.line!==""&&!$(y.line[y.pos]))return{ln:y.ln,pos:y.pos};ve(y.line[y.pos])&&!k&&(y.pos===y.line.length-1||$(y.line[y.pos+1]))&&(k=!0),a(h,y)}var S=h.getLine(m.ln);m.pos=0;for(var T=S.length-1;T>=0;--T)if(!$(S[T])){m.pos=T;break}return m}function s(h,p,v,C){var w=h.getLine(p),k={line:w,ln:p,pos:v,dir:C},y={ln:k.ln,pos:null},m=k.line==="";for(a(h,k);k.line!==null;){if(k.line===""&&!m)return y.pos!==null?y:{ln:k.ln,pos:k.pos};if(ve(k.line[k.pos])&&y.pos!==null&&!(k.ln===y.ln&&k.pos+1===y.pos))return y;k.line!==""&&!$(k.line[k.pos])&&(m=!1,y={ln:k.ln,pos:k.pos}),a(h,k)}var w=h.getLine(y.ln);y.pos=0;for(var S=0;S0;)n<0?f=s(e,f.ln,f.pos,n):f=o(e,f.ln,f.pos,n),r--;return new i(f.ln,f.pos)}function or(e,t,r,n){var a=t,o={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/,"<":/[<>]/,">":/[<>]/}[r],s={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{","<":"<",">":"<"}[r],f=e.getLine(a.line).charAt(a.ch),h=f===s?1:0,p=e.scanForBracket(new i(a.line,a.ch+h),-1,void 0,{bracketRegex:o}),v=e.scanForBracket(new i(a.line,a.ch+h),1,void 0,{bracketRegex:o});if(!p||!v)return null;var C=p.pos,k=v.pos;if(C.line==k.line&&C.ch>k.ch||C.line>k.line){var y=C;C=k,k=y}return n?k.ch+=1:C.ch+=1,{start:C,end:k}}function On(e,t,r,n){var a=H(t),o=e.getLine(a.line),s=o.split(""),f,h,p,v,C=s.indexOf(r);if(a.ch-1&&!f;p--)s[p]==r&&(f=p+1);if(f&&!h)for(p=f,v=s.length;p=t&&e<=r:e==t}function yt(e){var t=e.getScrollInfo(),r=6,n=10,a=e.coordsChar({left:0,top:r+t.top},"local"),o=t.clientHeight-n+t.top,s=e.coordsChar({left:0,top:o},"local");return{top:a.line,bottom:s.line}}function Xe(e,t,r){if(r=="'"||r=="`")return b.jumpList.find(e,-1)||new i(0,0);if(r==".")return dr(e);var n=t.marks[r];return n&&n.find()}function dr(e){if(e.getLastEditEnd)return e.getLastEditEnd();for(var t=e.doc.history.done,r=t.length;r--;)if(t[r].changes)return H(t[r].changes[0].to)}class $n{constructor(){this.commandMap_,this.buildCommandMap_()}processCommand(t,r,n){var a=this;t.operation(function(){t.curOp.isVimOp=!0,a._processCommand(t,r,n)})}_processCommand(t,r,n){var a=t.state.vim,o=b.registerController.getRegister(":"),s=o.toString(),f=new c.StringStream(r);o.setText(r);var h=n||{};h.input=r;try{this.parseInput_(t,f,h)}catch(C){throw K(t,C+""),C}a.visualMode&&me(t);var p,v;if(!h.commandName)h.line!==void 0&&(v="move");else if(p=this.matchCommand_(h.commandName),p){if(v=p.name,p.excludeFromCommandHistory&&o.setText(s),this.parseCommandArgs_(f,h,p),p.type=="exToKey"){$e(t,p.toKeys,p);return}else if(p.type=="exToEx"){this.processCommand(t,p.toInput);return}}if(!v){K(t,'Not an editor command ":'+r+'"');return}try{pr[v](t,h),(!p||!p.possiblyAsync)&&h.callback&&h.callback()}catch(C){throw K(t,C+""),C}}parseInput_(t,r,n){r.eatWhile(":"),r.eat("%")?(n.line=t.firstLine(),n.lineEnd=t.lastLine()):(n.line=this.parseLineSpec_(t,r),n.line!==void 0&&r.eat(",")&&(n.lineEnd=this.parseLineSpec_(t,r))),n.line==null?t.state.vim.visualMode?(n.selectionLine=Xe(t,t.state.vim,"<")?.line,n.selectionLineEnd=Xe(t,t.state.vim,">")?.line):n.selectionLine=t.getCursor().line:(n.selectionLine=n.line,n.selectionLineEnd=n.lineEnd);var a=r.match(/^(\w+|!!|@@|[!#&*<=>@~])/);return a?n.commandName=a[1]:n.commandName=r.match(/.*/)[0],n}parseLineSpec_(t,r){var n=r.match(/^(\d+)/);if(n)return parseInt(n[1],10)-1;switch(r.next()){case".":return this.parseLineSpecOffset_(r,t.getCursor().line);case"$":return this.parseLineSpecOffset_(r,t.lastLine());case"'":var a=r.next(),o=Xe(t,t.state.vim,a);if(!o)throw new Error("Mark not set");return this.parseLineSpecOffset_(r,o.line);case"-":case"+":return r.backUp(1),this.parseLineSpecOffset_(r,t.getCursor().line);default:r.backUp(1);return}}parseLineSpecOffset_(t,r){var n=t.match(/^([+-])?(\d+)/);if(n){var a=parseInt(n[2],10);n[1]=="-"?r-=a:r+=a}return r}parseCommandArgs_(t,r,n){if(!t.eol()){r.argString=t.match(/.*/)[0];var a=n.argDelimiter||/\s+/,o=dt(r.argString).split(a);o.length&&o[0]&&(r.args=o)}}matchCommand_(t){for(var r=t.length;r>0;r--){var n=t.substring(0,r);if(this.commandMap_[n]){var a=this.commandMap_[n];if(a.name.indexOf(t)===0)return a}}return null}buildCommandMap_(){this.commandMap_={};for(var t=0;t0?a.join("="):void 0,f=!1,h=!1;if(o.charAt(o.length-1)=="?"){if(s)throw Error("Trailing characters: "+t.argString);o=o.substring(0,o.length-1),f=!0}else o.charAt(o.length-1)=="!"&&(o=o.substring(0,o.length-1),h=!0);s===void 0&&o.substring(0,2)=="no"&&(o=o.substring(2),s=!1);var p=we[o]&&we[o].type=="boolean";if(p&&(h?s=!be(o,e,n):s==null&&(s=!0)),!p&&s===void 0||f){var v=be(o,e,n);v instanceof Error?K(e,v.message):v===!0||v===!1?K(e," "+(v?"":"no")+o):K(e,"  "+o+"="+v)}else{var C=ct(o,s,e,n);C instanceof Error&&K(e,C.message)}},setlocal:function(e,t){t.setCfg={scope:"local"},this.set(e,t)},setglobal:function(e,t){t.setCfg={scope:"global"},this.set(e,t)},registers:function(e,t){var r=t.args,n=b.registerController.registers,a=`----------Registers----------
+
+`;if(r)for(var f=r.join(""),h=0;h1)return"Invalid arguments";o=re&&"decimal"||Y&&"hex"||J&&"octal"}N[2]&&(s=new RegExp(N[2].substr(1,N[2].length-2),n?"i":""))}}var h=f();if(h){K(e,h+": "+t.argString);return}var p=t.line||e.firstLine(),v=t.lineEnd||t.line||e.lastLine();if(p==v)return;var C=new i(p,0),k=new i(v,X(e,v)),y=e.getRange(C,k).split(`
+`),m=o=="decimal"?/(-?)([\d]+)/:o=="hex"?/(-?)(?:0x)?([0-9a-f]+)/i:o=="octal"?/([0-7]+)/:null,w=o=="decimal"?10:o=="hex"?16:o=="octal"?8:void 0,S=[],T=[];if(o||s)for(var A=0;A=p){K(e,"Invalid argument: "+t.argString.substring(a));return}for(var v=0;v<=p-h;v++){var C=String.fromCharCode(h+v);delete r.marks[C]}}else{K(e,"Invalid argument: "+s+"-");return}}else o&&delete r.marks[o]}}},pe=new $n;function jn(e,t,r,n,a,o,s,f,h){e.state.vim.exMode=!0;var p=!1,v,C,k;function y(){e.operation(function(){for(;!p;)m(),S();T()})}function m(){var E=e.getRange(o.from(),o.to()),F=E.replace(s,f),ee=o.to().line;o.replace(F),C=o.to().line,a+=C-ee,k=C":case"":case"":T(ee);break}return p&&T(ee),!0}if(S(),p){K(e,"No matches for "+s.source);return}if(!t){y(),h&&h();return}Ue(e,{prefix:Ae("span","replace with ",Ae("strong",f)," (y/n/a/q/l)"),onKeyDown:A})}function Te(e,t){var r=e.state.vim,n=b.macroModeState,a=b.registerController.getRegister("."),o=n.isPlaying,s=n.lastInsertModeChanges;o||(e.off("change",gr),r.insertEnd&&r.insertEnd.clear(),r.insertEnd=void 0,c.off(e.getInputField(),"keydown",Cr)),!o&&r.insertModeRepeat>1&&(kr(e,r,r.insertModeRepeat-1,!0),r.lastEditInputState.repeatOverride=r.insertModeRepeat),delete r.insertModeRepeat,r.insertMode=!1,t||e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption("keyMap","vim"),e.setOption("disableInput",!0),e.toggleOverwrite(!1),a.setText(s.changes.join("")),c.signal(e,"vim-mode-change",{mode:"normal"}),n.isRecording&&zn(n)}function vr(e){u.unshift(e)}function Un(e,t,r,n,a){var o={keys:e,type:t};o[t]=r,o[t+"Args"]=n;for(var s in a)o[s]=a[s];vr(o)}Ie("insertModeEscKeysTimeout",200,"number");function qn(e,t,r,n){var a=b.registerController.getRegister(n);if(n==":"){a.keyBuffer[0]&&pe.processCommand(e,a.keyBuffer[0]),r.isPlaying=!1;return}var o=a.keyBuffer,s=0;r.isPlaying=!0,r.replaySearchQueries=a.searchQueries.slice(0);for(var f=0;f|./gi;p=C.exec(h);)if(v=p[0],ue.handleKey(e,v,"macro"),t.insertMode){var k=a.insertModeChanges[s++].changes;b.macroModeState.lastInsertModeChanges.changes=k,xr(e,k,1),Te(e)}r.isPlaying=!1}function Qn(e,t){if(!e.isPlaying){var r=e.latestRegister,n=b.registerController.getRegister(r);n&&n.pushText(t)}}function zn(e){if(!e.isPlaying){var t=e.latestRegister,r=b.registerController.getRegister(t);r&&r.pushInsertModeChanges&&r.pushInsertModeChanges(e.lastInsertModeChanges)}}function Jn(e,t){if(!e.isPlaying){var r=e.latestRegister,n=b.registerController.getRegister(r);n&&n.pushSearchQuery&&n.pushSearchQuery(t)}}function gr(e,t){var r=b.macroModeState,n=r.lastInsertModeChanges;if(!r.isPlaying)for(var a=e.state.vim;t;){if(n.expectCursorActivityForChange=!0,n.ignoreCount>1)n.ignoreCount--;else if(t.origin=="+input"||t.origin=="paste"||t.origin===void 0){var o=e.listSelections().length;o>1&&(n.ignoreCount=o);var s=t.text.join(`
+`);if(n.maybeReset&&(n.changes=[],n.maybeReset=!1),s)if(e.state.overwrite&&!/\n/.test(s))n.changes.push([s]);else{if(s.length>1){var f=a&&a.insertEnd&&a.insertEnd.find(),h=e.getCursor();if(f&&f.line==h.line){var p=f.ch-h.ch;p>0&&p",Le(n,r))}else t.insertMode||(t.lastHPos=e.getCursor().ch)}function Ct(e,t){this.keyName=e,this.key=t.key,this.ctrlKey=t.ctrlKey,this.altKey=t.altKey,this.metaKey=t.metaKey,this.shiftKey=t.shiftKey}function Cr(e){var t=b.macroModeState,r=t.lastInsertModeChanges,n=c.keyName?c.keyName(e):e.key;n&&(n.indexOf("Delete")!=-1||n.indexOf("Backspace")!=-1)&&(r.maybeReset&&(r.changes=[],r.maybeReset=!1),r.changes.push(new Ct(n,e)))}function kr(e,t,r,n){var a=b.macroModeState;a.isPlaying=!0;var o=t.lastEditActionCommand,s=t.inputState;function f(){o?Ee.processAction(e,t,o):Ee.evalInput(e,t)}function h(v){if(a.lastInsertModeChanges.changes.length>0){v=t.lastEditActionCommand?v:1;var C=a.lastInsertModeChanges;xr(e,C.changes,v)}}if(t.inputState=t.lastEditInputState,o&&o.interlaceInsertRepeat)for(var p=0;p"&&!o.insertMode&&!o.visualMode&&f&&o.status=="")G(n);else if(s||!f||n.inVirtualSelectionMode)a=ue.handleKey(n,t,r);else{var h=kt(o),p=o.inputState.changeQueueList||[];n.operation(function(){n.curOp&&(n.curOp.isVimOp=!0);var v=0;n.forEachSelection(function(){n.state.vim.inputState.changeQueue=p[v];var C=n.getCursor("head"),k=n.getCursor("anchor"),y=j(C,k)?0:-1,m=j(C,k)?-1:0;C=Q(C,0,y),k=Q(k,0,m),n.state.vim.sel.head=C,n.state.vim.sel.anchor=k,a=ue.handleKey(n,t,r),n.virtualSelection&&(p[v]=n.state.vim.inputState.changeQueue,n.state.vim=kt(h)),v++}),n.curOp?.cursorActivity&&!a&&(n.curOp.cursorActivity=!1),n.state.vim=o,o.inputState.changeQueueList=p,o.inputState.changeQueue=null},!0)}return a&&!o.visualMode&&!o.insert&&o.visualMode!=n.somethingSelected()&&yr(n,o),a}return Vt(),ue}function oe(c,i){var l=i.ch,u=i.line+1;u<1&&(u=1,l=0),u>c.lines&&(u=c.lines,l=Number.MAX_VALUE);var d=c.line(u);return Math.min(d.from+Math.max(0,l),d.to)}function fe(c,i){let l=c.lineAt(i);return{line:l.number-1,ch:i-l.from}}var he=class{constructor(i,l){this.line=i,this.ch=l}};function Qr(c,i,l){if(c.addEventListener)c.addEventListener(i,l,!1);else{var u=c._handlers||(c._handlers={});u[i]=(u[i]||[]).concat(l)}}function zr(c,i,l){if(c.removeEventListener)c.removeEventListener(i,l,!1);else{var u=c._handlers,d=u&&u[i];if(d){var g=d.indexOf(l);g>-1&&(u[i]=d.slice(0,g).concat(d.slice(g+1)))}}}function Jr(c,i,...l){var u,d=(u=c._handlers)===null||u===void 0?void 0:u[i];if(d)for(var g=0;g({anchor:fe(i,l.anchor),head:fe(i,l.head)}))}setSelections(i,l){var u=this.cm6.state.doc,d=i.map(g=>{var x=oe(u,g.head),M=oe(u,g.anchor);return x==M?ae.cursor(x,1):ae.range(M,x)});this.cm6.dispatch({selection:ae.create(d,l)})}setSelection(i,l,u){this.setSelections([{anchor:i,head:l}],0),u&&u.origin=="*mouse"&&this.onBeforeEndOperation()}getLine(i){var l=this.cm6.state.doc;return i<0||i>=l.lines?"":this.cm6.state.doc.line(i+1).text}getLineHandle(i){return this.$lineHandleChanges||(this.$lineHandleChanges=[]),{row:i,index:this.indexFromPos(new he(i,0))}}getLineNumber(i){var l=this.$lineHandleChanges;if(!l)return null;for(var u=i.index,d=0;d({from:d.from,to:d.to,insert:i[g]||""}));Je(this,{changes:u})}getSelection(){return this.getSelections().join(`
+`)}getSelections(){var i=this.cm6;return i.state.selection.ranges.map(l=>i.state.sliceDoc(l.from,l.to))}somethingSelected(){return this.cm6.state.selection.ranges.some(i=>!i.empty)}getInputField(){return this.cm6.contentDOM}clipPos(i){var l=this.cm6.state.doc,u=i.ch,d=i.line+1;d<1&&(d=1,u=0),d>l.lines&&(d=l.lines,u=Number.MAX_VALUE);var g=l.line(d);return u=Math.min(Math.max(0,u),g.to-g.from),new he(d-1,u)}getValue(){return this.cm6.state.doc.toString()}setValue(i){var l=this.cm6;return l.dispatch({changes:{from:0,to:l.state.doc.length,insert:i},selection:ae.range(0,0)})}focus(){return this.cm6.focus()}blur(){return this.cm6.contentDOM.blur()}defaultTextHeight(){return this.cm6.defaultLineHeight}findMatchingBracket(i,l){var u=this.cm6.state,d=oe(u.doc,i),g=Rt(u,d+1,-1);return g&&g.end?{to:fe(u.doc,g.end.from)}:(g=Rt(u,d,1),g&&g.end?{to:fe(u.doc,g.end.from)}:{to:void 0})}scanForBracket(i,l,u,d){return si(this,i,l,u,d)}indentLine(i,l){l?this.indentMore():this.indentLess()}indentMore(){Hr(this.cm6)}indentLess(){Wr(this.cm6)}execCommand(i){if(i=="indentAuto")c.commands.indentAuto(this);else if(i=="goLineLeft")Kr(this.cm6);else if(i=="goLineRight"){Dr(this.cm6);let l=this.cm6.state,u=l.selection.main.head;uW.length)return null;let P=L(W,O).next();return P.done?null:P.value}var _=1e4;function I(O,W){var P=u.cm6.state.doc;for(let U=1;;U++){let V=Math.max(O,W-U*_),se=L(P,V,W),ne=null;for(;!se.next().done;)ne=se.value;if(ne&&(V==O||ne.from>V+10))return ne;if(V==O)return null}}return{findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(O){var W=u.cm6.state.doc;if(O){let P=d?d.from==d.to?d.to-1:d.from:x;d=I(0,P)}else{let P=d?d.from==d.to?d.to+1:d.to:x;d=D(P)}return g=d&&{from:fe(W,d.from),to:fe(W,d.to),match:d.match},d&&d.match},from:function(){return g?.from},to:function(){return g?.to},replace:function(O){d&&(Je(u,{changes:{from:d.from,to:d.to,insert:O}}),d.to=d.from+O.length,g&&(g.to=fe(u.cm6.state.doc,d.to)))}}}findPosV(i,l,u,d){let{cm6:g}=this,x=g.state.doc,M=u=="page"?g.dom.clientHeight:0,L=oe(x,i),D=ae.cursor(L,1,void 0,d),_=Math.round(Math.abs(l));for(let O=0;O<_;O++)u=="page"?D=g.moveVertically(D,l>0,M):u=="line"&&(D=g.moveVertically(D,l>0));let I=fe(x,D.head);return(l<0&&D.head==0&&d!=0&&i.line==0&&i.ch!=0||l>0&&D.head==x.length&&I.ch!=d&&i.line==I.line)&&(I.hitSide=!0),I}charCoords(i,l){var u=this.cm6.contentDOM.getBoundingClientRect(),d=oe(this.cm6.state.doc,i),g=this.cm6.coordsAtPos(d),x=-u.top;return{left:(g?.left||0)-u.left,top:(g?.top||0)+x,bottom:(g?.bottom||0)+x}}coordsChar(i,l){var u=this.cm6.contentDOM.getBoundingClientRect(),d=this.cm6.posAtCoords({x:i.left+u.left,y:i.top+u.top})||0;return fe(this.cm6.state.doc,d)}getScrollInfo(){var i=this.cm6.scrollDOM;return{left:i.scrollLeft,top:i.scrollTop,height:i.scrollHeight,width:i.scrollWidth,clientHeight:i.clientHeight,clientWidth:i.clientWidth}}scrollTo(i,l){i!=null&&(this.cm6.scrollDOM.scrollLeft=i),l!=null&&(this.cm6.scrollDOM.scrollTop=l)}scrollIntoView(i,l){if(i){var u=this.indexFromPos(i);this.cm6.dispatch({effects:ze.scrollIntoView(u)})}else this.cm6.dispatch({scrollIntoView:!0,userEvent:"scroll"})}getWrapperElement(){return this.cm6.dom}getMode(){return{name:this.getOption("mode")}}setSize(i,l){this.cm6.dom.style.width=i+4+"px",this.cm6.dom.style.height=l+"px",this.refresh()}refresh(){this.cm6.measure()}destroy(){this.removeOverlay()}getLastEditEnd(){return this.posFromIndex(this.$lastChangeEndOffset)}onChange(i){this.$lineHandleChanges&&this.$lineHandleChanges.push(i);for(let u in this.marks)this.marks[u].update(i.changes);this.virtualSelection&&(this.virtualSelection.ranges=this.virtualSelection.ranges.map(u=>u.map(i.changes)));var l=this.curOp=this.curOp||{};i.changes.iterChanges((u,d,g,x,M)=>{(l.$changeStart==null||l.$changeStart>g)&&(l.$changeStart=g),this.$lastChangeEndOffset=x;var L={text:M.toJSON()};l.lastChange?l.lastChange.next=l.lastChange=L:l.lastChange=l.change=L},!0),l.changeHandlers||(l.changeHandlers=this._handlers.change&&this._handlers.change.slice())}onSelectionChange(){var i=this.curOp=this.curOp||{};i.cursorActivityHandlers||(i.cursorActivityHandlers=this._handlers.cursorActivity&&this._handlers.cursorActivity.slice()),this.curOp.cursorActivity=!0}operation(i,l){this.curOp||(this.curOp={$d:0}),this.curOp.$d++;try{var u=i()}finally{this.curOp&&(this.curOp.$d--,this.curOp.$d||this.onBeforeEndOperation())}return u}onBeforeEndOperation(){var i=this.curOp,l=!1;i&&(i.change&&jr(i.changeHandlers,this,i.change),i&&i.cursorActivity&&(jr(i.cursorActivityHandlers,this,null),i.isVimOp&&(l=!0)),this.curOp=null),l&&this.scrollIntoView()}moveH(i,l){if(l=="char"){var u=this.getCursor();this.setCursor(u.line,u.ch+i)}}setOption(i,l){switch(i){case"keyMap":this.state.keyMap=l;break;case"textwidth":this.state.textwidth=l;break}}getOption(i){switch(i){case"firstLineNumber":return 1;case"tabSize":return this.cm6.state.tabSize||4;case"readOnly":return this.cm6.state.readOnly;case"indentWithTabs":return this.cm6.state.facet(Ot)=="	";case"indentUnit":return this.cm6.state.facet(Ot).length||2;case"textwidth":return this.state.textwidth;case"keyMap":return this.state.keyMap||"vim"}}toggleOverwrite(i){this.state.overwrite=i}getTokenTypeAt(i){var l,u=this.indexFromPos(i),d=Et(this.cm6.state,u),g=d?.resolve(u),x=((l=g?.type)===null||l===void 0?void 0:l.name)||"";return/comment/i.test(x)?"comment":/string/i.test(x)?"string":""}overWriteSelection(i){var l=this.cm6.state.doc,u=this.cm6.state.selection,d=u.ranges.map(g=>{if(g.empty){var x=g.to1}virtualSelectionMode(){return!!this.virtualSelection}forEachSelection(i){var l=this.cm6.state.selection;this.virtualSelection=ae.create(l.ranges,l.mainIndex);for(var u=0;uJe(c,i)})},indentAuto:function(c){_r(c.cm6)},newlineAndIndentContinueComment:void 0,save:void 0};R.isWordChar=function(c){return Dt.test(c)};R.keys=ri;R.addClass=function(c,i){};R.rmClass=function(c,i){};R.e_preventDefault=function(c){c.preventDefault()};R.e_stop=function(c){var i,l;(i=c?.stopPropagation)===null||i===void 0||i.call(c),(l=c?.preventDefault)===null||l===void 0||l.call(c)};R.lookupKey=function(i,l,u){var d=R.keys[i];d&&u(d)};R.on=Qr;R.off=zr;R.signal=Jr;R.findMatchingTag=li;R.findEnclosingTag=ui;R.keyName=void 0;function Gr(c,i,l){var u=document.createElement("div");return u.appendChild(i),u}function Xr(c,i){c.state.currentNotificationClose&&c.state.currentNotificationClose(),c.state.currentNotificationClose=i}function ni(c,i,l){Xr(c,M);var u=Gr(c,i,l&&l.bottom),d=!1,g,x=l&&typeof l.duration<"u"?l.duration:5e3;function M(){d||(d=!0,clearTimeout(g),u.remove(),Yr(c,u))}return u.onclick=function(L){L.preventDefault(),M()},Zr(c,u),x&&(g=setTimeout(M,x)),M}function Zr(c,i){var l=c.state.dialog;c.state.dialog=i,i&&l!==i&&(l&&l.contains(document.activeElement)&&c.focus(),l&&l.parentElement?l.parentElement.replaceChild(i,l):l&&l.remove(),R.signal(c,"dialog"))}function Yr(c,i){c.state.dialog==i&&(c.state.dialog=null,R.signal(c,"dialog"))}function ii(c,i,l,u){u||(u={}),Xr(c,void 0);var d=Gr(c,i,u.bottom),g=!1;Zr(c,d);function x(L){if(typeof L=="string")M.value=L;else{if(g)return;g=!0,Yr(c,d),c.state.dialog||c.focus(),u.onClose&&u.onClose(d)}}var M=d.getElementsByTagName("input")[0];return M&&(u.value&&(M.value=u.value,u.selectValueOnOpen!==!1&&M.select()),u.onInput&&R.on(M,"input",function(L){u.onInput(L,M.value,x)}),u.onKeyUp&&R.on(M,"keyup",function(L){u.onKeyUp(L,M.value,x)}),R.on(M,"keydown",function(L){u&&u.onKeyDown&&u.onKeyDown(L,M.value,x)||(L.keyCode==13&&l(M.value),(L.keyCode==27||u.closeOnEnter!==!1&&L.keyCode==13)&&(M.blur(),R.e_stop(L),x()))}),u.closeOnBlur!==!1&&R.on(M,"blur",function(){setTimeout(function(){document.activeElement!==M&&x()})}),M.focus()),x}var ai={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function oi(c){return c&&c.bracketRegex||/[(){}[\]]/}function si(c,i,l,u,d){for(var g=d&&d.maxScanLineLength||1e4,x=d&&d.maxScanLines||1e3,M=[],L=oi(d),D=l>0?Math.min(i.line+x,c.lastLine()+1):Math.max(c.firstLine()-1,i.line-x),_=i.line;_!=D;_+=l){var I=c.getLine(_);if(I){var O=l>0?0:I.length-1,W=l>0?I.length:-1;if(!(I.length>g))for(_==i.line&&(O=i.ch-(l<0?1:0));O!=W;O+=l){var P=I.charAt(O);if(L.test(P)){var U=ai[P];if(U&&U.charAt(1)==">"==l>0)M.push(P);else if(M.length)M.pop();else return{pos:new he(_,O),ch:P}}}}}return _-l==(l>0?c.lastLine():c.firstLine())?!1:null}function li(c,i){}function ui(c,i){var l,u,d=c.cm6.state,g=c.indexFromPos(i);if(gu){var L=P(M,u,5);if(L){var D=(l=/^\s*/.exec(M))===null||l===void 0?void 0:l[0];c.replaceRange(`
+`+D,new he(g,L.start),new he(g,L.end))}x++}else if(d&&/\S/.test(M)&&g!=x){var _=c.getLine(g+1);if(_&&/\S/.test(_)){var I=M.replace(/\s+$/,""),O=_.replace(/^\s+/,""),W=I+" "+O,L=P(W,u,5);L&&L.start>I.length||W.lengthse)return{start:le.index,end:le.index+le[2].length};if(ke&&ke[2])return $=V+ke[2].length,{start:$,end:$+ke[3].length}}}}var Ft=Er||function(){let c={cursorBlinkRate:1200};return function(){return c}}(),_t=class{constructor(i,l,u,d,g,x,M,L,D,_){this.left=i,this.top=l,this.height=u,this.fontFamily=d,this.fontSize=g,this.fontWeight=x,this.color=M,this.className=L,this.letter=D,this.partial=_}draw(){let i=document.createElement("div");return i.className=this.className,this.adjust(i),i}adjust(i){i.style.left=this.left+"px",i.style.top=this.top+"px",i.style.height=this.height+"px",i.style.lineHeight=this.height+"px",i.style.fontFamily=this.fontFamily,i.style.fontSize=this.fontSize,i.style.fontWeight=this.fontWeight,i.style.color=this.partial?"transparent":this.color,i.className=this.className,i.textContent=this.letter}eq(i){return this.left==i.left&&this.top==i.top&&this.height==i.height&&this.fontFamily==i.fontFamily&&this.fontSize==i.fontSize&&this.fontWeight==i.fontWeight&&this.color==i.color&&this.className==i.className&&this.letter==i.letter}},Ht=class{constructor(i,l){this.view=i,this.rangePieces=[],this.cursors=[],this.cm=l,this.measureReq={read:this.readPos.bind(this),write:this.drawSel.bind(this)},this.cursorLayer=i.scrollDOM.appendChild(document.createElement("div")),this.cursorLayer.className="cm-cursorLayer cm-vimCursorLayer",this.cursorLayer.setAttribute("aria-hidden","true"),i.requestMeasure(this.measureReq),this.setBlinkRate()}setBlinkRate(){let l=Ft(this.cm.cm6.state).cursorBlinkRate;this.cursorLayer.style.animationDuration=l+"ms"}update(i){(i.selectionSet||i.geometryChanged||i.viewportChanged)&&(this.view.requestMeasure(this.measureReq),this.cursorLayer.style.animationName=this.cursorLayer.style.animationName=="cm-blink"?"cm-blink2":"cm-blink"),fi(i)&&this.setBlinkRate()}scheduleRedraw(){this.view.requestMeasure(this.measureReq)}readPos(){let{state:i}=this.view,l=[];for(let u of i.selection.ranges){let d=u==i.selection.main,g=vi(this.cm,this.view,u,d);g&&l.push(g)}return{cursors:l}}drawSel({cursors:i}){if(i.length!=this.cursors.length||i.some((l,u)=>!l.eq(this.cursors[u]))){let l=this.cursorLayer.children;if(l.length!==i.length){this.cursorLayer.textContent="";for(let u of i)this.cursorLayer.appendChild(u.draw())}else i.forEach((u,d)=>u.adjust(l[d]));this.cursors=i}}destroy(){this.cursorLayer.remove()}};function fi(c){return Ft(c.startState)!=Ft(c.state)}var hi={".cm-vimMode .cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-fat-cursor":{position:"absolute",background:"#ff9696",border:"none",whiteSpace:"pre"},"&:not(.cm-focused) .cm-fat-cursor":{background:"none",outline:"solid 1px #ff9696",color:"transparent !important"}},di=Lt.highest(ze.theme(hi));function pi(c){let i=c.scrollDOM.getBoundingClientRect();return{left:(c.textDirection==Ar.LTR?i.left:i.right-c.scrollDOM.clientWidth)-c.scrollDOM.scrollLeft,top:i.top-c.scrollDOM.scrollTop}}function vi(c,i,l,u){var d,g;let x=l.head,M=!1,L=1,D=c.state.vim;if(D&&(!D.insertMode||c.state.overwrite)){if(M=!0,D.visualBlock&&!u)return null;l.anchor1&&(x--,I=i.state.sliceDoc(x,x+1));let O=i.coordsAtPos(x,1);if(!O)return null;let W=pi(i),P=i.domAtPos(x),U=P?P.node:i.contentDOM;for(;P&&P.node instanceof HTMLElement;)U=P.node,P={node:P.node.childNodes[P.offset],offset:0};if(!(U instanceof HTMLElement)){if(!U.parentNode)return null;U=U.parentNode}let V=getComputedStyle(U),se=O.left,ne=(g=(d=i).coordsForChar)===null||g===void 0?void 0:g.call(d,x);if(ne&&(se=ne.left),!I||I==`
+`||I=="\r")I="\xA0";else if(I=="	"){I="\xA0";var _=i.coordsAtPos(x+1,-1);_&&(se=_.left-(_.left-O.left)/parseInt(V.tabSize))}else/[\uD800-\uDBFF]/.test(I)&&x{i.state.vim&&(i.state.vim.status=""),this.blockCursor.scheduleRedraw(),this.updateStatus()}),this.cm.on("vim-mode-change",l=>{i.state.vim&&(i.state.vim.mode=l.mode,l.subMode&&(i.state.vim.mode+=" block"),i.state.vim.status="",this.blockCursor.scheduleRedraw(),this.updateClass(),this.updateStatus())}),this.cm.on("dialog",()=>{this.cm.state.statusbar?this.updateStatus():c.dispatch({effects:en.of(!!this.cm.state.dialog)})}),this.dom=document.createElement("span"),this.dom.style.cssText="position: absolute; right: 10px; top: 1px",this.statusButton=document.createElement("span"),this.statusButton.onclick=l=>{Oe.handleKey(this.cm,"","user"),this.cm.focus()},this.statusButton.style.cssText="cursor: pointer"}update(c){var i;if((c.viewportChanged||c.docChanged)&&this.query&&this.highlight(this.query),c.docChanged&&this.cm.onChange(c),c.selectionSet&&this.cm.onSelectionChange(),c.viewportChanged,this.cm.curOp&&!this.cm.curOp.isVimOp&&this.cm.onBeforeEndOperation(),c.transactions){for(let l of c.transactions)for(let u of l.effects)if(u.is(lt))if(!((i=u.value)===null||i===void 0?void 0:i.forVim))this.highlight(null);else{let g=u.value.create();this.highlight(g)}}this.blockCursor.update(c)}updateClass(){let c=this.cm.state;!c.vim||c.vim.insertMode&&!c.overwrite?this.view.scrollDOM.classList.remove("cm-vimMode"):this.view.scrollDOM.classList.add("cm-vimMode")}updateStatus(){let c=this.cm.state.statusbar,i=this.cm.state.vim;if(!c||!i)return;let l=this.cm.state.dialog;if(l)l.parentElement!=c&&(c.textContent="",c.appendChild(l));else{c.textContent="";var u=(i.mode||"normal").toUpperCase();i.insertModeReturn&&(u+="(C-O)"),this.statusButton.textContent=`--${u}--`,c.appendChild(this.statusButton)}this.dom.textContent=i.status,c.appendChild(this.dom)}destroy(){Oe.leaveVimMode(this.cm),this.updateClass(),this.blockCursor.destroy(),delete this.view.cm}highlight(c){if(this.query=c,!c)return this.decorations=Ye.none;let{view:i}=this,l=new At;for(let u=0,d=i.visibleRanges,g=d.length;ud[u+1].from-2*mi;)M=d[++u].to;c.highlight(i.state,x,M,(L,D)=>{l.add(L,D,wi)})}return this.decorations=l.finish()}handleKey(c,i){let l=this.cm,u=l.state.vim;if(!u)return;let d=Oe.vimKeyFromEvent(c,u);if(R.signal(this.cm,"inputEvent",{type:"handleKey",key:d}),!d)return;if(d==""&&!u.insertMode&&!u.visualMode&&this.query){let M=u.searchState_;M&&(l.removeOverlay(M.getOverlay()),M.setOverlay(null))}if(d===""&&!R.isMac&&l.somethingSelected())return this.waitForCopy=!0,!0;u.status=(u.status||"")+d;let x=Oe.multiSelectHandleKey(l,d,"user");return u=Oe.maybeInitVimState_(l),!x&&u.insertMode&&l.state.overwrite&&(c.key&&c.key.length==1&&!/\n/.test(c.key)?(x=!0,l.overWriteSelection(c.key)):c.key=="Backspace"&&(x=!0,R.commands.cursorCharLeft(l))),x&&(R.signal(this.cm,"vim-keypress",d),c.preventDefault(),c.stopPropagation(),this.blockCursor.scheduleRedraw()),this.updateStatus(),!!x}},{eventHandlers:{copy:function(c,i){this.waitForCopy&&(this.waitForCopy=!1,Promise.resolve().then(()=>{var l=this.cm,u=l.state.vim;u&&(u.insertMode?l.setSelection(l.getCursor(),l.getCursor()):l.operation(()=>{l.curOp&&(l.curOp.isVimOp=!0),Oe.handleKey(l,"","user")}))}))},compositionstart:function(c,i){this.useNextTextInput=!0,R.signal(this.cm,"inputEvent",c)},compositionupdate:function(c,i){R.signal(this.cm,"inputEvent",c)},compositionend:function(c,i){R.signal(this.cm,"inputEvent",c)},keypress:function(c,i){R.signal(this.cm,"inputEvent",c),this.lastKeydown=="Dead"&&this.handleKey(c,i)},keydown:function(c,i){R.signal(this.cm,"inputEvent",c),this.lastKeydown=c.key,this.lastKeydown=="Unidentified"||this.lastKeydown=="Process"||this.lastKeydown=="Dead"?this.useNextTextInput=!0:(this.useNextTextInput=!1,this.handleKey(c,i))}},provide:()=>[ze.inputHandler.of((c,i,l,u)=>{var d,g,x=bi(c);if(!x)return!1;var M=(d=x.state)===null||d===void 0?void 0:d.vim,L=x.state.vimPlugin;if(M&&!M.insertMode&&!(!((g=x.curOp)===null||g===void 0)&&g.isVimOp)){if(u==="\0\0")return!0;if(R.signal(x,"inputEvent",{type:"text",text:u,from:i,to:l}),u.length==1&&L.useNextTextInput){if(M.expectLiteralNext&&c.composing)return L.compositionText=u,!1;if(L.compositionText){var D=L.compositionText;L.compositionText="";var _=c.state.selection.main.head,I=c.state.sliceDoc(_-D.length,_);if(D===I){var O=x.getCursor();x.replaceRange("",x.posFromIndex(_-D.length),O)}}return L.handleKey({key:u,preventDefault:()=>{},stopPropagation:()=>{}}),ki(c),!0}}return!1})],decorations:c=>c.decorations});function ki(c){var i=c.scrollDOM.parentElement;if(i){if(gi){c.contentDOM.textContent="\0\0",c.contentDOM.dispatchEvent(new CustomEvent("compositionend"));return}var l=c.scrollDOM.nextSibling,u=window.getSelection(),d=u&&{anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset};c.scrollDOM.remove(),i.insertBefore(c.scrollDOM,l);try{d&&u&&(u.setPosition(d.anchorNode,d.anchorOffset),d.focusNode&&u.extend(d.focusNode,d.focusOffset))}catch(g){console.error(g)}c.focus(),c.contentDOM.dispatchEvent(new CustomEvent("compositionend"))}}var wi=Ye.mark({class:"cm-searchMatch"}),en=Ze.define(),xi=bt.define({create:()=>!1,update(c,i){for(let l of i.effects)l.is(en)&&(c=l.value);return c},provide:c=>Tt.from(c,i=>i?Si:null)});function Si(c){let i=document.createElement("div");i.className="cm-vim-panel";let l=c.cm;return l.state.dialog&&i.appendChild(l.state.dialog),{top:!1,dom:i}}function Mi(c){let i=document.createElement("div");i.className="cm-vim-panel";let l=c.cm;return l.state.statusbar=i,l.state.vimPlugin.updateStatus(),{dom:i}}function _i(c={}){return[yi,Ci,di,c.status?Tt.of(Mi):xi]}function bi(c){return c.cm||null}export{R as CodeMirror,Oe as Vim,bi as getCM,_i as vim};
diff --git a/static/dist/chunks/dist-JLZXU7OA.js b/static/dist/chunks/dist-JLZXU7OA.js
new file mode 100644
index 0000000..cb28d80
--- /dev/null
+++ b/static/dist/chunks/dist-JLZXU7OA.js
@@ -0,0 +1 @@
+import{$,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-CSOMSVJQ.js";import"./chunk-CGTIGMIP.js";import"./chunk-IVRVZEPW.js";import"./chunk-6OYJTXGR.js";export{k as DocInput,S as HighlightStyle,v as IndentContext,e as LRLanguage,d as Language,o as LanguageDescription,n as LanguageSupport,l as ParseContext,_ as StreamLanguage,Z as StringStream,x as TreeIndentContext,$ as bidiIsolates,W as bracketMatching,X as bracketMatchingHandle,Q as codeFolding,A as continuedIndent,V as defaultHighlightStyle,b as defineLanguageFacet,y as delimitedIndent,g as ensureSyntaxTree,z as flatIndent,M as foldAll,K as foldCode,G as foldEffect,R as foldGutter,E as foldInside,P as foldKeymap,D as foldNodeProp,C as foldService,I as foldState,F as foldable,J as foldedRanges,i as forceParsing,r as getIndentUnit,t as getIndentation,U as highlightingFor,w as indentNodeProp,B as indentOnInput,u as indentRange,p as indentService,s as indentString,q as indentUnit,m as language,a as languageDataProp,Y as matchBrackets,c as sublanguageProp,T as syntaxHighlighting,j as syntaxParserRunning,f as syntaxTree,h as syntaxTreeAvailable,O as toggleFold,N as unfoldAll,L as unfoldCode,H as unfoldEffect};
diff --git a/static/dist/chunks/dist-OCZ4RP4V.js b/static/dist/chunks/dist-OCZ4RP4V.js
new file mode 100644
index 0000000..c3e0fce
--- /dev/null
+++ b/static/dist/chunks/dist-OCZ4RP4V.js
@@ -0,0 +1 @@
+import{f as R,q as Ee}from"./chunk-CSOMSVJQ.js";import"./chunk-CGTIGMIP.js";import{B as Ae,E as te,b as Ie,d as M,f as Oe,h as H,i as Te,l as A,m as ee}from"./chunk-IVRVZEPW.js";import{a as ye,d as w,e as Z,f as S,g as W,k as v,l as _,m as N,n as U,p as xe,s as I,t as ve,u as V,w as we,x as Ce,z as Se}from"./chunk-6OYJTXGR.js";var K=class{constructor(e,t,n,o){this.state=e,this.pos=t,this.explicit=n,this.view=o,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=R(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),n=Math.max(t.from,this.pos-250),o=t.text.slice(n-t.from,this.pos-t.from),s=o.search(Ue(e,!1));return s<0?null:{from:n+s,to:this.pos,text:o.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,n){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),n&&n.onDocChange&&(this.abortOnDocChange=!0))}};function De(i){let e=Object.keys(i).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function Je(i){let e=Object.create(null),t=Object.create(null);for(let{label:o}of i){e[o[0]]=!0;for(let s=1;stypeof o=="string"?{label:o}:o),[t,n]=e.every(o=>/^\w+$/.test(o.label))?[/\w*$/,/\w+$/]:Je(e);return o=>{let s=o.matchBefore(n);return s||o.explicit?{from:s?s.from:o.pos,options:e,validFor:t}:null}}function zt(i,e){return t=>{for(let n=R(t.state).resolveInner(t.pos,-1);n;n=n.parent){if(i.indexOf(n.name)>-1)return e(t);if(n.type.isTop)break}return null}}function Qt(i,e){return t=>{for(let n=R(t.state).resolveInner(t.pos,-1);n;n=n.parent){if(i.indexOf(n.name)>-1)return null;if(n.type.isTop)break}return e(t)}}var z=class{constructor(e,t,n,o){this.completion=e,this.source=t,this.match=n,this.score=o}};function T(i){return i.selection.main.from}function Ue(i,e){var t;let{source:n}=i,o=e&&n[0]!="^",s=n[n.length-1]!="$";return!o&&!s?i:new RegExp(`${o?"^":""}(?:${n})${s?"$":""}`,(t=i.flags)!==null&&t!==void 0?t:i.ignoreCase?"i":"")}var pe=xe.define();function _e(i,e,t,n){let{main:o}=i.selection,s=t-o.from,l=n-o.from;return Object.assign(Object.assign({},i.changeByRange(r=>r!=o&&t!=n&&i.sliceDoc(r.from+s,r.from+l)!=i.sliceDoc(t,n)?{range:r}:{changes:{from:r.from+s,to:n==o.from?r.to:r.from+l,insert:e},range:v.cursor(r.from+s+e.length)})),{scrollIntoView:!0,userEvent:"input.complete"})}var Pe=new WeakMap;function et(i){if(!Array.isArray(i))return i;let e=Pe.get(i);return e||Pe.set(i,e=Ze(i)),e}var Q=I.define(),B=I.define(),oe=class{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let t=0;t=48&&y<=57||y>=97&&y<=122?2:y>=65&&y<=90?1:0:(F=Z(y))!=F.toLowerCase()?1:F!=F.toUpperCase()?2:0;(!d||J==1&&G||C==0&&J!=0)&&(t[h]==y||n[h]==y&&(u=!0)?l[h++]=d:l.length&&(k=!1)),C=J,d+=S(y)}return h==a&&l[0]==0&&k?this.result(-100+(u?-200:0),l,e):p==a&&g==0?this.ret(-200-e.length+(x==e.length?0:-100),[0,x]):r>-1?this.ret(-700-e.length,[r,r+this.pattern.length]):p==a?this.ret(-900-e.length,[g,x]):h==a?this.result(-100+(u?-200:0)+-700+(k?0:-1100),l,e):t.length==2?null:this.result((o[0]?-700:0)+-200+-1100,o,e)}result(e,t,n){let o=[],s=0;for(let l of t){let r=l+(this.astral?S(w(n,l)):1);s&&o[s-1]==l?o[s-1]=r:(o[s++]=l,o[s++]=r)}return this.ret(e-n.length,o)}},se=class{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:tt,filterStrict:!1,compareCompletions:(e,t)=>e.label.localeCompare(t.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,t)=>e&&t,closeOnBlur:(e,t)=>e&&t,icons:(e,t)=>e&&t,tooltipClass:(e,t)=>n=>Re(e(n),t(n)),optionClass:(e,t)=>n=>Re(e(n),t(n)),addToOptions:(e,t)=>e.concat(t),filterStrict:(e,t)=>e||t})}});function Re(i,e){return i?e?i+" "+e:i:e}function tt(i,e,t,n,o,s){let l=i.textDirection==Oe.RTL,r=l,a=!1,c="top",f,h,u=e.left-o.left,p=o.right-e.right,g=n.right-n.left,x=n.bottom-n.top;if(r&&u=x||d>e.top?f=t.bottom-e.top:(c="bottom",f=e.bottom-t.top)}let G=(e.bottom-e.top)/s.offsetHeight,k=(e.right-e.left)/s.offsetWidth;return{style:`${c}: ${f/G}px; max-width: ${h/k}px`,class:"cm-completionInfo-"+(a?l?"left-narrow":"right-narrow":r?"left":"right")}}function it(i){let e=i.addToOptions.slice();return i.icons&&e.push({render(t){let n=document.createElement("div");return n.classList.add("cm-completionIcon"),t.type&&n.classList.add(...t.type.split(/\s+/g).map(o=>"cm-completionIcon-"+o)),n.setAttribute("aria-hidden","true"),n},position:20}),e.push({render(t,n,o,s){let l=document.createElement("span");l.className="cm-completionLabel";let r=t.displayLabel||t.label,a=0;for(let c=0;ca&&l.appendChild(document.createTextNode(r.slice(a,f)));let u=l.appendChild(document.createElement("span"));u.appendChild(document.createTextNode(r.slice(f,h))),u.className="cm-completionMatchedText",a=h}return at.position-n.position).map(t=>t.render)}function ie(i,e,t){if(i<=t)return{from:0,to:i};if(e<0&&(e=0),e<=i>>1){let o=Math.floor(e/t);return{from:o*t,to:(o+1)*t}}let n=Math.floor((i-e)/t);return{from:i-(n+1)*t,to:i-n*t}}var le=class{constructor(e,t,n){this.view=e,this.stateField=t,this.applyCompletion=n,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:a=>this.placeInfo(a),key:this},this.space=null,this.currentClass="";let o=e.state.field(t),{options:s,selected:l}=o.open,r=e.state.facet(b);this.optionContent=it(r),this.optionClass=r.optionClass,this.tooltipClass=r.tooltipClass,this.range=ie(s.length,l,r.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",a=>{let{options:c}=e.state.field(t).open;for(let f=a.target,h;f&&f!=this.dom;f=f.parentNode)if(f.nodeName=="LI"&&(h=/-(\d+)$/.exec(f.id))&&+h[1]{let c=e.state.field(this.stateField,!1);c&&c.tooltip&&e.state.facet(b).closeOnBlur&&a.relatedTarget!=e.contentDOM&&e.dispatch({effects:B.of(null)})}),this.showOptions(s,o.id)}mount(){this.updateSel()}showOptions(e,t){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,t,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var t;let n=e.state.field(this.stateField),o=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),n!=o){let{options:s,selected:l,disabled:r}=n.open;(!o.open||o.open.options!=s)&&(this.range=ie(s.length,l,e.state.facet(b).maxRenderedOptions),this.showOptions(s,n.id)),this.updateSel(),r!=((t=o.open)===null||t===void 0?void 0:t.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!r)}}updateTooltipClass(e){let t=this.tooltipClass(e);if(t!=this.currentClass){for(let n of this.currentClass.split(" "))n&&this.dom.classList.remove(n);for(let n of t.split(" "))n&&this.dom.classList.add(n);this.currentClass=t}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),t=e.open;if((t.selected>-1&&t.selected=this.range.to)&&(this.range=ie(t.options.length,t.selected,this.view.state.facet(b).maxRenderedOptions),this.showOptions(t.options,e.id)),this.updateSelectedOption(t.selected)){this.destroyInfo();let{completion:n}=t.options[t.selected],{info:o}=n;if(!o)return;let s=typeof o=="string"?document.createTextNode(o):o(n);if(!s)return;"then"in s?s.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,n)}).catch(l=>H(this.view.state,l,"completion info")):this.addInfoPane(s,n)}}addInfoPane(e,t){this.destroyInfo();let n=this.info=document.createElement("div");if(n.className="cm-tooltip cm-completionInfo",e.nodeType!=null)n.appendChild(e),this.infoDestroy=null;else{let{dom:o,destroy:s}=e;n.appendChild(o),this.infoDestroy=s||null}this.dom.appendChild(n),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let t=null;for(let n=this.list.firstChild,o=this.range.from;n;n=n.nextSibling,o++)n.nodeName!="LI"||!n.id?o--:o==e?n.hasAttribute("aria-selected")||(n.setAttribute("aria-selected","true"),t=n):n.hasAttribute("aria-selected")&&n.removeAttribute("aria-selected");return t&&ot(this.list,t),t}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let t=this.dom.getBoundingClientRect(),n=this.info.getBoundingClientRect(),o=e.getBoundingClientRect(),s=this.space;if(!s){let l=this.dom.ownerDocument.defaultView||window;s={left:0,top:0,right:l.innerWidth,bottom:l.innerHeight}}return o.top>Math.min(s.bottom,t.bottom)-10||o.bottomn.from||n.from==0))if(s=u,typeof c!="string"&&c.header)o.appendChild(c.header(c));else{let p=o.appendChild(document.createElement("completion-section"));p.textContent=u}}let f=o.appendChild(document.createElement("li"));f.id=t+"-"+l,f.setAttribute("role","option");let h=this.optionClass(r);h&&(f.className=h);for(let u of this.optionContent){let p=u(r,this.view.state,this.view,a);p&&f.appendChild(p)}}return n.from&&o.classList.add("cm-completionListIncompleteTop"),n.tonew le(t,i,e)}function ot(i,e){let t=i.getBoundingClientRect(),n=e.getBoundingClientRect(),o=t.height/i.offsetHeight;n.topt.bottom&&(i.scrollTop+=(n.bottom-t.bottom)/o)}function Le(i){return(i.boost||0)*100+(i.apply?10:0)+(i.info?5:0)+(i.type?1:0)}function st(i,e){let t=[],n=null,o=c=>{t.push(c);let{section:f}=c.completion;if(f){n||(n=[]);let h=typeof f=="string"?f:f.name;n.some(u=>u.name==h)||n.push(typeof f=="string"?{name:h}:f)}},s=e.facet(b);for(let c of i)if(c.hasResult()){let f=c.result.getMatch;if(c.result.filter===!1)for(let h of c.result.options)o(new z(h,c.source,f?f(h):[],1e9-t.length));else{let h=e.sliceDoc(c.from,c.to),u,p=s.filterStrict?new se(h):new oe(h);for(let g of c.result.options)if(u=p.match(g.label)){let x=g.displayLabel?f?f(g,u.matched):[]:u.matched;o(new z(g,c.source,x,u.score+(g.boost||0)))}}}if(n){let c=Object.create(null),f=0,h=(u,p)=>{var g,x;return((g=u.rank)!==null&&g!==void 0?g:1e9)-((x=p.rank)!==null&&x!==void 0?x:1e9)||(u.nameh.score-f.score||a(f.completion,h.completion))){let f=c.completion;!r||r.label!=f.label||r.detail!=f.detail||r.type!=null&&f.type!=null&&r.type!=f.type||r.apply!=f.apply||r.boost!=f.boost?l.push(c):Le(c.completion)>Le(r)&&(l[l.length-1]=c),r=c.completion}return l}var re=class i{constructor(e,t,n,o,s,l){this.options=e,this.attrs=t,this.tooltip=n,this.timestamp=o,this.selected=s,this.disabled=l}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new i(this.options,ke(t,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,t,n,o,s){let l=st(e,t);if(!l.length)return o&&e.some(a=>a.state==1)?new i(o.options,o.attrs,o.tooltip,o.timestamp,o.selected,!0):null;let r=t.facet(b).selectOnOpen?0:-1;if(o&&o.selected!=r&&o.selected!=-1){let a=o.options[o.selected].completion;for(let c=0;cc.hasResult()?Math.min(a,c.from):a,1e8),create:ht,above:s.aboveCursor},o?o.timestamp:Date.now(),r,!1)}map(e){return new i(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected,this.disabled)}},ae=class i{constructor(e,t,n){this.active=e,this.id=t,this.open=n}static start(){return new i(ct,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:t}=e,n=t.facet(b),s=(n.override||t.languageDataAt("autocomplete",T(t)).map(et)).map(r=>(this.active.find(c=>c.source==r)||new O(r,this.active.some(c=>c.state!=0)?1:0)).update(e,n));s.length==this.active.length&&s.every((r,a)=>r==this.active[a])&&(s=this.active);let l=this.open;l&&e.docChanged&&(l=l.map(e.changes)),e.selection||s.some(r=>r.hasResult()&&e.changes.touchesRange(r.from,r.to))||!lt(s,this.active)?l=re.build(s,t,this.id,l,n):l&&l.disabled&&!s.some(r=>r.state==1)&&(l=null),!l&&s.every(r=>r.state!=1)&&s.some(r=>r.hasResult())&&(s=s.map(r=>r.hasResult()?new O(r.source,0):r));for(let r of e.effects)r.is(de)&&(l=l&&l.setSelected(r.value,this.id));return s==this.active&&l==this.open?this:new i(s,this.id,l)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?rt:at}};function lt(i,e){if(i==e)return!0;for(let t=0,n=0;;){for(;t-1&&(t["aria-activedescendant"]=i+"-"+e),t}var ct=[];function Ve(i,e){if(i.isUserEvent("input.complete")){let n=i.annotation(pe);if(n&&e.activateOnCompletion(n))return 12}let t=i.isUserEvent("input.type");return t&&e.activateOnTyping?5:t?1:i.isUserEvent("delete.backward")?2:i.selection?8:i.docChanged?16:0}var O=class i{constructor(e,t,n=-1){this.source=e,this.state=t,this.explicitPos=n}hasResult(){return!1}update(e,t){let n=Ve(e,t),o=this;(n&8||n&16&&this.touches(e))&&(o=new i(o.source,0)),n&4&&o.state==0&&(o=new i(this.source,1)),o=o.updateFor(e,n);for(let s of e.effects)if(s.is(Q))o=new i(o.source,1,s.value?T(e.state):-1);else if(s.is(B))o=new i(o.source,0);else if(s.is(He))for(let l of s.value)l.source==o.source&&(o=l);return o}updateFor(e,t){return this.map(e.changes)}map(e){return e.empty||this.explicitPos<0?this:new i(this.source,this.state,e.mapPos(this.explicitPos))}touches(e){return e.changes.touchesRange(T(e.state))}},X=class i extends O{constructor(e,t,n,o,s){super(e,2,t),this.result=n,this.from=o,this.to=s}hasResult(){return!0}updateFor(e,t){var n;if(!(t&3))return this.map(e.changes);let o=this.result;o.map&&!e.changes.empty&&(o=o.map(o,e.changes));let s=e.changes.mapPos(this.from),l=e.changes.mapPos(this.to,1),r=T(e.state);if((this.explicitPos<0?r<=s:rl||!o||t&2&&T(e.startState)==this.from)return new O(this.source,t&4?1:0);let a=this.explicitPos<0?-1:e.changes.mapPos(this.explicitPos);return ft(o.validFor,e.state,s,l)?new i(this.source,a,o,s,l):o.update&&(o=o.update(o,s,l,new K(e.state,r,a>=0)))?new i(this.source,a,o,o.from,(n=o.to)!==null&&n!==void 0?n:T(e.state)):new O(this.source,1,a)}map(e){return e.empty?this:(this.result.map?this.result.map(this.result,e):this.result)?new i(this.source,this.explicitPos<0?-1:e.mapPos(this.explicitPos),this.result,e.mapPos(this.from),e.mapPos(this.to,1)):new O(this.source,0)}touches(e){return e.changes.touchesRange(this.from,this.to)}};function ft(i,e,t,n){if(!i)return!1;let o=e.sliceDoc(t,n);return typeof i=="function"?i(o,t,n,e):Ue(i,!0).test(o)}var He=I.define({map(i,e){return i.map(t=>t.map(e))}}),de=I.define(),m=N.define({create(){return ae.start()},update(i,e){return i.update(e)},provide:i=>[Ae.from(i,e=>e.tooltip),A.contentAttributes.from(i,e=>e.attrs)]});function me(i,e){let t=e.completion.apply||e.completion.label,n=i.state.field(m).active.find(o=>o.source==e.source);return n instanceof X?(typeof t=="string"?i.dispatch(Object.assign(Object.assign({},_e(i.state,t,n.from,n.to)),{annotations:pe.of(e.completion)})):t(i,e.completion,n.from,n.to),!0):!1}var ht=nt(m,me);function q(i,e="option"){return t=>{let n=t.state.field(m,!1);if(!n||!n.open||n.open.disabled||Date.now()-n.open.timestamp-1?n.open.selected+o*(i?1:-1):i?0:l-1;return r<0?r=e=="page"?0:l-1:r>=l&&(r=e=="page"?l-1:0),t.dispatch({effects:de.of(r)}),!0}}var ut=i=>{let e=i.state.field(m,!1);return i.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampi.state.field(m,!1)?(i.dispatch({effects:Q.of(!0)}),!0):!1,dt=i=>{let e=i.state.field(m,!1);return!e||!e.active.some(t=>t.state!=0)?!1:(i.dispatch({effects:B.of(null)}),!0)},ce=class{constructor(e,t){this.active=e,this.context=t,this.time=Date.now(),this.updates=[],this.done=void 0}},mt=50,gt=1e3,bt=Te.fromClass(class{constructor(i){this.view=i,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of i.state.field(m).active)e.state==1&&this.startQuery(e)}update(i){let e=i.state.field(m),t=i.state.facet(b);if(!i.selectionSet&&!i.docChanged&&i.startState.field(m)==e)return;let n=i.transactions.some(s=>{let l=Ve(s,t);return l&8||(s.selection||s.docChanged)&&!(l&3)});for(let s=0;smt&&Date.now()-l.time>gt){for(let r of l.context.abortListeners)try{r()}catch(a){H(this.view.state,a)}l.context.abortListeners=null,this.running.splice(s--,1)}else l.updates.push(...i.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),i.transactions.some(s=>s.effects.some(l=>l.is(Q)))&&(this.pendingStart=!0);let o=this.pendingStart?50:t.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(s=>s.state==1&&!this.running.some(l=>l.active.source==s.source))?setTimeout(()=>this.startUpdate(),o):-1,this.composing!=0)for(let s of i.transactions)s.isUserEvent("input.type")?this.composing=2:this.composing==2&&s.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:i}=this.view,e=i.field(m);for(let t of e.active)t.state==1&&!this.running.some(n=>n.active.source==t.source)&&this.startQuery(t)}startQuery(i){let{state:e}=this.view,t=T(e),n=new K(e,t,i.explicitPos==t,this.view),o=new ce(i,n);this.running.push(o),Promise.resolve(i.source(n)).then(s=>{o.context.aborted||(o.done=s||null,this.scheduleAccept())},s=>{this.view.dispatch({effects:B.of(null)}),H(this.view.state,s)})}scheduleAccept(){this.running.every(i=>i.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(b).updateSyncTime))}accept(){var i;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],t=this.view.state.facet(b);for(let n=0;nl.source==o.active.source);if(s&&s.state==1)if(o.done==null){let l=new O(o.active.source,0);for(let r of o.updates)l=l.update(r,t);l.state!=1&&e.push(l)}else this.startQuery(s)}e.length&&this.view.dispatch({effects:He.of(e)})}},{eventHandlers:{blur(i){let e=this.view.state.field(m,!1);if(e&&e.tooltip&&this.view.state.facet(b).closeOnBlur){let t=e.open&&te(this.view,e.open.tooltip);(!t||!t.dom.contains(i.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:B.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:Q.of(!1)}),20),this.composing=0}}}),yt=typeof navigator=="object"&&/Win/.test(navigator.platform),xt=U.highest(A.domEventHandlers({keydown(i,e){let t=e.state.field(m,!1);if(!t||!t.open||t.open.disabled||t.open.selected<0||i.key.length>1||i.ctrlKey&&!(yt&&i.altKey)||i.metaKey)return!1;let n=t.open.options[t.open.selected],o=t.active.find(l=>l.source==n.source),s=n.completion.commitCharacters||o.result.commitCharacters;return s&&s.indexOf(i.key)>-1&&me(e,n),!1}})),qe=A.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}}),fe=class{constructor(e,t,n,o){this.field=e,this.line=t,this.from=n,this.to=o}},he=class i{constructor(e,t,n){this.field=e,this.from=t,this.to=n}map(e){let t=e.mapPos(this.from,-1,W.TrackDel),n=e.mapPos(this.to,1,W.TrackDel);return t==null||n==null?null:new i(this.field,t,n)}},ue=class i{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let n=[],o=[t],s=e.doc.lineAt(t),l=/^\s*/.exec(s.text)[0];for(let a of this.lines){if(n.length){let c=l,f=/^\t*/.exec(a)[0].length;for(let h=0;hnew he(a.field,o[a.line]+a.from,o[a.line]+a.to));return{text:n,ranges:r}}static parse(e){let t=[],n=[],o=[],s;for(let l of e.split(/\r\n?|\n/)){for(;s=/[#$]\{(?:(\d+)(?::([^}]*))?|((?:\\[{}]|[^}])*))\}/.exec(l);){let r=s[1]?+s[1]:null,a=s[2]||s[3]||"",c=-1,f=a.replace(/\\[{}]/g,h=>h[1]);for(let h=0;h=c&&u.field++}o.push(new fe(c,n.length,s.index,s.index+f.length)),l=l.slice(0,s.index)+a+l.slice(s.index+s[0].length)}l=l.replace(/\\([{}])/g,(r,a,c)=>{for(let f of o)f.line==n.length&&f.from>c&&(f.from--,f.to--);return a}),n.push(l)}return new i(n,o)}},vt=M.widget({widget:new class extends Ie{toDOM(){let i=document.createElement("span");return i.className="cm-snippetFieldPosition",i}ignoreEvent(){return!1}}}),wt=M.mark({class:"cm-snippetField"}),L=class i{constructor(e,t){this.ranges=e,this.active=t,this.deco=M.set(e.map(n=>(n.from==n.to?vt:wt).range(n.from,n.to)))}map(e){let t=[];for(let n of this.ranges){let o=n.map(e);if(!o)return null;t.push(o)}return new i(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(n=>n.field==this.active&&n.from<=t.from&&n.to>=t.to))}},$=I.define({map(i,e){return i&&i.map(e)}}),Ct=I.define(),D=N.define({create(){return null},update(i,e){for(let t of e.effects){if(t.is($))return t.value;if(t.is(Ct)&&i)return new L(i.ranges,t.value)}return i&&e.docChanged&&(i=i.map(e.changes)),i&&e.selection&&!i.selectionInsideField(e.selection)&&(i=null),i},provide:i=>A.decorations.from(i,e=>e?e.deco:M.none)});function ge(i,e){return v.create(i.filter(t=>t.field==e).map(t=>v.range(t.from,t.to)))}function St(i){let e=ue.parse(i);return(t,n,o,s)=>{let{text:l,ranges:r}=e.instantiate(t.state,o),a={changes:{from:o,to:s,insert:ye.of(l)},scrollIntoView:!0,annotations:n?[pe.of(n),ve.userEvent.of("input.complete")]:void 0};if(r.length&&(a.selection=ge(r,0)),r.some(c=>c.field>0)){let c=new L(r,0),f=a.effects=[$.of(c)];t.state.field(D,!1)===void 0&&f.push(I.appendConfig.of([D,Et,Dt,qe]))}t.dispatch(t.state.update(a))}}function Ke(i){return({state:e,dispatch:t})=>{let n=e.field(D,!1);if(!n||i<0&&n.active==0)return!1;let o=n.active+i,s=i>0&&!n.ranges.some(l=>l.field==o+i);return t(e.update({selection:ge(n.ranges,o),effects:$.of(s?null:new L(n.ranges,o)),scrollIntoView:!0})),!0}}var It=({state:i,dispatch:e})=>i.field(D,!1)?(e(i.update({effects:$.of(null)})),!0):!1,Ot=Ke(1),Tt=Ke(-1);function Xt(i){let e=i.field(D,!1);return!!(e&&e.ranges.some(t=>t.field==e.active+1))}function Yt(i){let e=i.field(D,!1);return!!(e&&e.active>0)}var At=[{key:"Tab",run:Ot,shift:Tt},{key:"Escape",run:It}],Me=_.define({combine(i){return i.length?i[0]:At}}),Et=U.highest(ee.compute([Me],i=>i.facet(Me)));function Gt(i,e){return Object.assign(Object.assign({},e),{apply:St(i)})}var Dt=A.domEventHandlers({mousedown(i,e){let t=e.state.field(D,!1),n;if(!t||(n=e.posAtCoords({x:i.clientX,y:i.clientY}))==null)return!1;let o=t.ranges.find(s=>s.from<=n&&s.to>=n);return!o||o.field==t.active?!1:(e.dispatch({selection:ge(t.ranges,o.field),effects:$.of(t.ranges.some(s=>s.field>o.field)?new L(t.ranges,o.field):null),scrollIntoView:!0}),!0)}});function Pt(i){let e=i.replace(/[\]\-\\]/g,"\\$&");try{return new RegExp(`[\\p{Alphabetic}\\p{Number}_${e}]+`,"ug")}catch{return new RegExp(`[w${e}]`,"g")}}function Be(i,e){return new RegExp(e(i.source),i.unicode?"u":"")}var je=Object.create(null);function Rt(i){return je[i]||(je[i]=new WeakMap)}function $e(i,e,t,n,o){for(let s=i.iterLines(),l=0;!s.next().done;){let{value:r}=s,a;for(e.lastIndex=0;a=e.exec(r);)if(!n[a[0]]&&l+a.index!=o&&(t.push({type:"text",label:a[0]}),n[a[0]]=!0,t.length>=2e3))return;l+=r.length+1}}function ze(i,e,t,n,o){let s=i.length>=1e3,l=s&&e.get(i);if(l)return l;let r=[],a=Object.create(null);if(i.children){let c=0;for(let f of i.children){if(f.length>=1e3)for(let h of ze(f,e,t,n-c,o-c))a[h.label]||(a[h.label]=!0,r.push(h));else $e(f,t,r,a,o-c);c+=f.length+1}}else $e(i,t,r,a,o);return s&&r.length<2e3&&e.set(i,r),r}var Jt=i=>{let e=i.state.languageDataAt("wordChars",i.pos).join(""),t=Pt(e),n=i.matchBefore(Be(t,l=>l+"$"));if(!n&&!i.explicit)return null;let o=n?n.from:i.pos,s=ze(i.state.doc,Rt(e),t,5e4,o);return{from:o,options:s,validFor:Be(t,l=>"^"+l)}},j={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},E=I.define({map(i,e){let t=e.mapPos(i,-1,W.TrackAfter);return t??void 0}}),be=new class extends Ce{};be.startSide=1;be.endSide=-1;var Qe=N.define({create(){return Se.empty},update(i,e){if(i=i.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);i=i.update({filter:n=>n>=t.from&&n<=t.to})}for(let t of e.effects)t.is(E)&&(i=i.update({add:[be.range(t.value,t.value+1)]}));return i}});function Zt(){return[kt,Qe]}var ne="()[]{}<>";function Xe(i){for(let e=0;e{if((Lt?i.composing:i.compositionStarted)||i.state.readOnly)return!1;let o=i.state.selection.main;if(n.length>2||n.length==2&&S(w(n,0))==1||e!=o.from||t!=o.to)return!1;let s=Bt(i.state,n);return s?(i.dispatch(s),!0):!1}),Mt=({state:i,dispatch:e})=>{if(i.readOnly)return!1;let n=Ye(i,i.selection.main.head).brackets||j.brackets,o=null,s=i.changeByRange(l=>{if(l.empty){let r=jt(i.doc,l.head);for(let a of n)if(a==r&&Y(i.doc,l.head)==Xe(w(a,0)))return{changes:{from:l.head-a.length,to:l.head+a.length},range:v.cursor(l.head-a.length)}}return{range:o=l}});return o||e(i.update(s,{scrollIntoView:!0,userEvent:"delete.backward"})),!o},_t=[{key:"Backspace",run:Mt}];function Bt(i,e){let t=Ye(i,i.selection.main.head),n=t.brackets||j.brackets;for(let o of n){let s=Xe(w(o,0));if(e==o)return s==o?Wt(i,o,n.indexOf(o+o+o)>-1,t):$t(i,o,s,t.before||j.before);if(e==s&&Ge(i,i.selection.main.from))return Ft(i,o,s)}return null}function Ge(i,e){let t=!1;return i.field(Qe).between(0,i.doc.length,n=>{n==e&&(t=!0)}),t}function Y(i,e){let t=i.sliceString(e,e+2);return t.slice(0,S(w(t,0)))}function jt(i,e){let t=i.sliceString(e-2,e);return S(w(t,0))==t.length?t:t.slice(1)}function $t(i,e,t,n){let o=null,s=i.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:t,from:l.to}],effects:E.of(l.to+e.length),range:v.range(l.anchor+e.length,l.head+e.length)};let r=Y(i.doc,l.head);return!r||/\s/.test(r)||n.indexOf(r)>-1?{changes:{insert:e+t,from:l.head},effects:E.of(l.head+e.length),range:v.cursor(l.head+e.length)}:{range:o=l}});return o?null:i.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function Ft(i,e,t){let n=null,o=i.changeByRange(s=>s.empty&&Y(i.doc,s.head)==t?{changes:{from:s.head,to:s.head+t.length,insert:t},range:v.cursor(s.head+t.length)}:n={range:s});return n?null:i.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function Wt(i,e,t,n){let o=n.stringPrefixes||j.stringPrefixes,s=null,l=i.changeByRange(r=>{if(!r.empty)return{changes:[{insert:e,from:r.from},{insert:e,from:r.to}],effects:E.of(r.to+e.length),range:v.range(r.anchor+e.length,r.head+e.length)};let a=r.head,c=Y(i.doc,a),f;if(c==e){if(Fe(i,a))return{changes:{insert:e+e,from:a},effects:E.of(a+e.length),range:v.cursor(a+e.length)};if(Ge(i,a)){let u=t&&i.sliceDoc(a,a+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:a,to:a+u.length,insert:u},range:v.cursor(a+u.length)}}}else{if(t&&i.sliceDoc(a-2*e.length,a)==e+e&&(f=We(i,a-2*e.length,o))>-1&&Fe(i,f))return{changes:{insert:e+e+e+e,from:a},effects:E.of(a+e.length),range:v.cursor(a+e.length)};if(i.charCategorizer(a)(c)!=V.Word&&We(i,a,o)>-1&&!Nt(i,a,e,o))return{changes:{insert:e+e,from:a},effects:E.of(a+e.length),range:v.cursor(a+e.length)}}return{range:s=r}});return s?null:i.update(l,{scrollIntoView:!0,userEvent:"input.type"})}function Fe(i,e){let t=R(i).resolveInner(e+1);return t.parent&&t.from==e}function Nt(i,e,t,n){let o=R(i).resolveInner(e,-1),s=n.reduce((l,r)=>Math.max(l,r.length),0);for(let l=0;l<5;l++){let r=i.sliceDoc(o.from,Math.min(o.to,o.from+t.length+s)),a=r.indexOf(t);if(!a||a>-1&&n.indexOf(r.slice(0,a))>-1){let f=o.firstChild;for(;f&&f.from==o.from&&f.to-f.from>t.length+a;){if(i.sliceDoc(f.to-t.length,f.to)==t)return!1;f=f.firstChild}return!0}let c=o.to==e&&o.parent;if(!c)break;o=c}return!1}function We(i,e,t){let n=i.charCategorizer(e);if(n(i.sliceDoc(e-1,e))!=V.Word)return e;for(let o of t){let s=e-o.length;if(i.sliceDoc(s,e)==o&&n(i.sliceDoc(s-1,s))!=V.Word)return s}return-1}function ei(i={}){return[xt,m,b.of(i),bt,Vt,qe]}var Ut=[{key:"Ctrl-Space",run:pt},{key:"Escape",run:dt},{key:"ArrowDown",run:q(!0)},{key:"ArrowUp",run:q(!1)},{key:"PageDown",run:q(!0,"page")},{key:"PageUp",run:q(!1,"page")},{key:"Enter",run:ut}],Vt=U.highest(ee.computeN([b],i=>i.facet(b).defaultKeymap?[Ut]:[]));function ti(i){let e=i.field(m,!1);return e&&e.active.some(t=>t.state==1)?"pending":e&&e.active.some(t=>t.state!=0)?"active":null}var Ne=new WeakMap;function ii(i){var e;let t=(e=i.field(m,!1))===null||e===void 0?void 0:e.open;if(!t||t.disabled)return[];let n=Ne.get(t.options);return n||Ne.set(t.options,n=t.options.map(o=>o.completion)),n}function ni(i){var e;let t=(e=i.field(m,!1))===null||e===void 0?void 0:e.open;return t&&!t.disabled&&t.selected>=0?t.options[t.selected].completion:null}function oi(i){var e;let t=(e=i.field(m,!1))===null||e===void 0?void 0:e.open;return t&&!t.disabled&&t.selected>=0?t.selected:null}function si(i){return de.of(i)}export{K as CompletionContext,ut as acceptCompletion,ei as autocompletion,It as clearSnippet,Zt as closeBrackets,_t as closeBracketsKeymap,dt as closeCompletion,Jt as completeAnyWord,Ze as completeFromList,Ut as completionKeymap,ti as completionStatus,ii as currentCompletions,Mt as deleteBracketPair,Xt as hasNextSnippetField,Yt as hasPrevSnippetField,zt as ifIn,Qt as ifNotIn,Bt as insertBracket,_e as insertCompletionText,q as moveCompletionSelection,Ot as nextSnippetField,pe as pickedCompletion,Tt as prevSnippetField,ni as selectedCompletion,oi as selectedCompletionIndex,si as setSelectedCompletion,St as snippet,Gt as snippetCompletion,Me as snippetKeymap,pt as startCompletion};
diff --git a/static/dist/chunks/dist-VHHLD37S.js b/static/dist/chunks/dist-VHHLD37S.js
new file mode 100644
index 0000000..f4aa4d8
--- /dev/null
+++ b/static/dist/chunks/dist-VHHLD37S.js
@@ -0,0 +1 @@
+import{a,b}from"./chunk-26SC7TXE.js";import"./chunk-7WUKGY2L.js";import"./chunk-CSOMSVJQ.js";import"./chunk-CGTIGMIP.js";import"./chunk-IVRVZEPW.js";import"./chunk-6OYJTXGR.js";export{b as rust,a as rustLanguage};
diff --git a/static/dist/chunks/dist-VMU22W2N.js b/static/dist/chunks/dist-VMU22W2N.js
new file mode 100644
index 0000000..e49bdb9
--- /dev/null
+++ b/static/dist/chunks/dist-VMU22W2N.js
@@ -0,0 +1 @@
+import{A,B,C,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-6OYJTXGR.js";export{p as Annotation,q as AnnotationType,h as ChangeDesc,i as ChangeSet,u as CharCategory,o as Compartment,k as EditorSelection,v as EditorState,l as Facet,b as Line,g as MapMode,n as Prec,y as Range,z as RangeSet,A as RangeSetBuilder,x as RangeValue,j as SelectionRange,s as StateEffect,r as StateEffectType,m as StateField,a as Text,t as Transaction,d as codePointAt,f as codePointSize,w as combineConfig,B as countColumn,c as findClusterBreak,C as findColumn,e as fromCodePoint};
diff --git a/static/dist/inline-editor.js b/static/dist/inline-editor.js
new file mode 100644
index 0000000..c0adf56
--- /dev/null
+++ b/static/dist/inline-editor.js
@@ -0,0 +1,6 @@
+import{a as X,b as tt}from"./chunks/chunk-OZL5SFA7.js";import"./chunks/chunk-CSOMSVJQ.js";import"./chunks/chunk-CGTIGMIP.js";import"./chunks/chunk-IVRVZEPW.js";import"./chunks/chunk-6OYJTXGR.js";var bt="corrode:editor:vim",et=new Set;function Jt(){try{return localStorage.getItem(bt)==="1"}catch{return!1}}function se(g){try{localStorage.setItem(bt,g?"1":"0")}catch{}for(let i of et)i.setVim(g)}var Yt=["as","async","await","break","const","continue","crate","dyn","else","enum","extern","false","fn","for","if","impl","in","let","loop","match","mod","move","mut","pub","ref","return","self","Self","static","struct","super","trait","true","type","unsafe","use","where","while","box","try","union","bool","char","str","i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","Some","None","Ok","Err","Option","Result","Vec","String","Box","Rc","Arc","RefCell","Cell","HashMap","HashSet","BTreeMap","BTreeSet","Clone","Copy","Debug","Display","Default","PartialEq","Eq","PartialOrd","Ord","Hash","From","Into","TryFrom","TryInto","AsRef","AsMut","Iterator","IntoIterator","Drop","Send","Sync","Sized","Fn","FnMut","FnOnce","println!","print!","eprintln!","eprint!","format!","write!","writeln!","vec!","panic!","todo!","unimplemented!","unreachable!","assert!","assert_eq!","assert_ne!","debug_assert!","debug_assert_eq!","debug_assert_ne!","matches!","dbg!","include_str!","env!"],gt=/[A-Za-z_][A-Za-z0-9_]*/g,ht=/\bhttps?:\/\/[^\s<>"'`)\]]+/g;function Qt(){return function(i){let l=i.matchBefore(/[A-Za-z_][A-Za-z0-9_]*/);if(!l||l.from===l.to&&!i.explicit)return null;let d=new Set,b=[];for(let e of Yt)e!==l.text&&(d.add(e),b.push({label:e,type:"keyword"}));let R=i.state.doc.toString();gt.lastIndex=0;let a;for(;a=gt.exec(R);){let e=a[0];e.length<3||e!==l.text&&(d.has(e)||(d.add(e),b.push({label:e,type:"variable"})))}return{from:l.from,options:b,validFor:/^[A-Za-z0-9_]*$/}}}function Xt(g){let i={};if(!g)return i;let l=/----\s+(\S+)\s+stdout\s+----\n([\s\S]*?)(?=\n----|\nfailures:|\ntest result:|$)/g,d;for(;(d=l.exec(g))!==null;)i[d[1].trim()]=d[2].trim();return i}function te(g){if(!g)return null;if(/not yet implemented/i.test(g))return"This function still has `todo!()` in it.\nReplace `todo!()` with your implementation, then run again.";let i=g.split(`
+`);for(;i.length&&/^thread .* panicked at/.test(i[0]);)i.shift();return i.slice(0,6).join(`
+`).trim()||null}async function ne(g,i={}){let l=i.features||{},d=t=>g.querySelector(`[data-role="${t}"]`),b=d("editor-fallback"),R=d("editor-mount"),a=d("run-btn"),e=d("run-status"),M=d("run-spinner"),I=d("output-panel"),K=d("test-list"),w=d("output-stderr"),st=d("output-details"),o=d("submit-btn"),h=d("action-status"),V=d("format-btn"),nt=d("reset-btn"),v=d("copy-btn"),z=i.slug||g.dataset.exerciseKey||"playground",N=i.starter!=null?i.starter:b?b.value:"",W=i.submitted!=null?i.submitted:null,T=l.draftKey||null,ot=l.testResults!==!1&&!!K,rt=l.syntaxHighlightOutput===!0,j=l.runWithoutTests===!0,q=t=>{if(T)try{t===N?localStorage.removeItem(T):localStorage.setItem(T,t)}catch{}},O=null;if(T)try{O=localStorage.getItem(T)}catch{}let U=O!=null&&O!==""?O:W!=null&&W!==""?W:N;b&&(b.value=U);let S={getValue:()=>b?b.value:U,setValue:t=>{b&&(b.value=t),q(t)},focus:()=>b&&b.focus(),setVim:t=>{},destroy:()=>{}},C=null,E=null,$=null,it=null,H=null;try{let t=!!l.vim,n=l.urlPlugin!==!1,s=[import("./chunks/dist-VMU22W2N.js"),import("./chunks/dist-6O6UQM2R.js"),import("./chunks/dist-JLZXU7OA.js"),import("./chunks/dist-4DZMONIQ.js"),import("./chunks/dist-VHHLD37S.js"),import("./chunks/dist-OCZ4RP4V.js")];t?s.push(import("./chunks/dist-FYDL7QK6.js")):s.push(Promise.resolve(null));let[r,c,f,u,p,m,_]=await Promise.all(s);$={state:r,view:c,lang:f,commands:u,langRust:p,autocomplete:m,vimMod:_};let{EditorState:A,Compartment:x}=r,{EditorView:B,keymap:Et,highlightActiveLine:Lt,highlightActiveLineGutter:Rt,lineNumbers:It,drawSelection:Pt,Decoration:dt,ViewPlugin:Dt}=c,{syntaxHighlighting:Ft,bracketMatching:Mt,indentOnInput:Vt,indentUnit:Ot}=f,{defaultKeymap:$t,history:Ht,historyKeymap:At,indentWithTab:Bt}=u,{autocompletion:Kt,completionKeymap:zt,closeBrackets:Nt,closeBracketsKeymap:Wt}=m;it=new x,H=new x;let Y=null,ft=null;if(n){let k=dt.mark({class:"cm-url",attributes:{title:"Click to open"}}),mt=y=>{let D=[];for(let{from:Q,to:Gt}of y.visibleRanges){let yt=y.state.doc.sliceString(Q,Gt);ht.lastIndex=0;let L;for(;L=ht.exec(yt);){let F=L.index+L[0].length;for(;F>L.index&&".,;:!?".includes(yt[F-1]);)F-=1;F>L.index&&D.push(k.range(Q+L.index,Q+F))}}return dt.set(D,!0)};Y=Dt.fromClass(class{constructor(y){this.decorations=mt(y)}update(y){(y.docChanged||y.viewportChanged)&&(this.decorations=mt(y.view))}},{decorations:y=>y.decorations,eventHandlers:{mousedown(y){if(y.button!==0&&y.button!==1)return;let D=y.target&&y.target.closest?y.target.closest(".cm-url"):null;D&&(y.preventDefault(),y.stopPropagation(),window.open(D.textContent,"_blank","noopener"))}}}),ft=B.theme({".cm-url":{textDecoration:"underline",textDecorationColor:"rgba(127,127,127,0.6)",textUnderlineOffset:"2px",cursor:"pointer"},".cm-url:hover":{textDecorationColor:"currentColor"}})}let jt=t&&Jt(),qt=t?H.of(jt?_.vim():[]):H.of([]),pt=null,Ut=B.updateListener.of(k=>{k.docChanged&&(_t(),o&&o.style.display!=="none"&&(o.style.display="none",a&&(a.style.display="")),h&&h.classList.contains("is-visible")&&(h.classList.remove("is-visible","is-pass","is-fail","celebrate"),h.textContent=""),T&&(clearTimeout(pt),pt=setTimeout(()=>q(k.state.doc.toString()),300)))}),Zt=[qt,It(),Rt(),Lt(),Ht(),Pt(),Vt(),Ot.of("    "),Mt(),Ft(X,{fallback:!0}),Nt(),Kt({override:[Qt()]}),Et.of([{key:"Mod-Enter",run:()=>(a&&!a.disabled&&a.click(),!0),preventDefault:!0},...Wt,...$t,...At,...zt,Bt]),p.rust(),B.lineWrapping,...Y?[Y,ft]:[],it.of(tt),Ut,typeof l.buildExtraExtensions=="function"?l.buildExtraExtensions($)||[]:[]];C=new B({state:A.create({doc:U,extensions:Zt}),parent:R}),C.dom.style.border="1px solid var(--color-border)",C.dom.style.borderRadius="12px",C.dom.style.overflow="hidden",b&&(b.style.display="none"),R&&(R.style.display="block"),S={getValue:()=>C.state.doc.toString(),setValue:k=>{C.dispatch({changes:{from:0,to:C.state.doc.length,insert:k}}),q(k)},focus:()=>C.focus(),setVim:k=>{t&&C.dispatch({effects:H.reconfigure(k?_.vim():[])})},destroy:()=>{C.destroy(),E&&E.destroy(),et.delete(S)}}}catch(t){console.warn("[corrode] inline editor: CodeMirror failed to load, using textarea fallback",t)}if(et.add(S),nt&&nt.addEventListener("click",()=>{if(confirm("Replace your edits with the original starter code?")){if(S.setValue(N),T)try{localStorage.removeItem(T)}catch{}I&&(I.style.display="none"),e&&(e.textContent=""),P("","neutral"),S.focus()}}),v&&l.copyButton!==!1){let t=()=>v.style.opacity="1",n=()=>v.style.opacity="";v.addEventListener("mouseenter",t),v.addEventListener("mouseleave",n),v.addEventListener("focus",t),v.addEventListener("blur",n),v.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(S.getValue());let s=v.style.color;v.style.color="var(--color-success, #2e7d32)",v.style.opacity="1",setTimeout(()=>{v.style.color=s,v.style.opacity=""},1e3)}catch(s){console.warn("Clipboard write failed",s)}})}else v&&l.copyButton===!1&&(v.style.display="none");let vt=t=>{if(!w)return;if(!$||!rt){w.textContent=t;return}let{state:n,view:s,lang:r,langRust:c}=$,{EditorState:f}=n,{EditorView:u}=s,{syntaxHighlighting:p}=r;E&&(E.destroy(),E=null),w.textContent="",w.style.padding="0",w.style.fontFamily="",w.style.fontSize="";let m=[u.editable.of(!1),f.readOnly.of(!0),u.lineWrapping,c.rust(),p(X,{fallback:!0}),tt,u.theme({"&":{backgroundColor:"transparent",fontSize:"0.8rem"},".cm-content":{fontFamily:'"SF Mono", Monaco, monospace',padding:"0.85rem 1rem"},".cm-scroller":{overflow:"auto"},"&.cm-focused":{outline:"none"}})];E=new u({state:f.create({doc:t,extensions:m}),parent:w})};function P(t,n){if(h){if(h.classList.remove("is-pass","is-fail","celebrate"),!t){h.textContent="",h.classList.remove("is-visible");return}if(n==="pass"||n==="fail"){h.textContent="";let s=document.createElement("span");s.className=n==="pass"?"icon-check":"icon-cross",s.setAttribute("aria-hidden","true"),s.style.marginRight="0.35em",h.appendChild(s),h.appendChild(document.createTextNode(t))}else h.textContent=t;h.classList.add("is-visible"),n==="pass"?(h.classList.add("is-pass"),h.offsetWidth,h.classList.add("celebrate")):n==="fail"&&h.classList.add("is-fail")}}function xt(){P("","neutral")}function St(t){if(!I)return;I.style.display="block";let n=(t.stderr||"")+`
+`+(t.stdout||"");if(ot){K.innerHTML="";let s=Xt(n);for(let f of t.test_results){let u=document.createElement("li");u.style.padding="0.35rem 0.5rem",u.style.fontFamily="'SF Mono', Monaco, monospace",u.style.fontSize="0.85rem",u.style.display="flex",u.style.flexDirection="column",u.style.gap="0.25rem";let p=document.createElement("div");p.style.display="flex",p.style.alignItems="center",p.style.gap="0.5rem";let m=document.createElement("span");f.passed?(m.innerHTML='',m.style.color="var(--color-success, #2e7d32)",m.style.fontWeight="700",m.style.display="inline-flex",m.style.alignItems="center"):(m.innerHTML='',m.style.color="var(--color-error, #c62828)",m.style.fontWeight="700",m.style.display="inline-flex",m.style.alignItems="center");let _=document.createElement("span");if(_.textContent=f.name,p.appendChild(m),p.appendChild(_),u.appendChild(p),!f.passed){let A=te(s[f.name]);if(A){let x=document.createElement("div");x.style.marginLeft="1.4rem",x.style.padding="0.4rem 0.6rem",x.style.background="var(--color-surface)",x.style.border="1px solid var(--color-border)",x.style.borderRadius="6px",x.style.color="var(--color-text)",x.style.whiteSpace="pre-wrap",x.style.fontSize="0.8rem",x.textContent=A,u.appendChild(x)}}K.appendChild(u)}let r=t.test_results.some(f=>!f.passed),c=!t.success&&t.test_results.length===0;st&&(st.open=r||c)}if(w)if(ot||rt){let s=t.stderr||t.stdout||"(no output)";vt(s)}else{let s=t.stdout||"",r=t.stderr||"";w.textContent=s+(s&&r?`
+
+`:"")+r||"(no output)"}I.scrollIntoView({behavior:"smooth",block:"nearest"})}function lt(t){let n=t.test_results.filter(c=>c.passed).length,s=t.test_results.length,r=t.success&&(s===0||n===s);if(e&&(s===0?(j?e.textContent=t.success?"Ran.":"Did not compile.":e.textContent=t.success?"Compiled. No tests ran.":"Did not compile.",e.style.color=t.success?"var(--color-text-muted)":"var(--color-error, #c62828)"):n===s?(e.textContent=`All ${s} tests passed.`,e.style.color="var(--color-success, #2e7d32)"):(e.textContent=`${n} / ${s} tests passed.`,e.style.color="var(--color-error, #c62828)")),s===0)P(t.success?j?"Ran":"Compiled":"Did not compile",t.success?"neutral":"fail");else if(n===s)P(s===1?"1 test passed":`${s} tests passed`,"pass");else{let c=s-n;P(c===1?`1 test failed (${n}/${s})`:`${c} tests failed (${n}/${s})`,"fail")}if(r&&typeof i.onRunSuccess=="function")try{i.onRunSuccess({section:g,data:t})}catch(c){console.error("[corrode] onRunSuccess failed:",c)}}let at=0,Z=!1;async function ct(t){e&&(e.textContent="Running on play.rust-lang.org\u2026",e.style.color="var(--color-text-muted)"),M&&(M.style.display="inline-block"),xt();try{let n={code:t,slug:z};l.analytics&&(n.participant_id=l.analytics.participantId,n.session_id=l.analytics.sessionId),j&&(n.tests=!1);let s=await fetch("/api/run",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!s.ok)return e&&(s.status===429?e.textContent="Playground rate-limited us. Try again in a moment.":s.status===502?e.textContent="Playground unreachable. Check your connection or try again.":e.textContent=`Run failed (HTTP ${s.status}).`,e.style.color="var(--color-error, #c62828)"),null;let r=await s.json();return St(r),r}catch(n){return console.error(n),e&&(e.textContent="Run failed: "+n.message,e.style.color="var(--color-error, #c62828)"),null}finally{M&&(M.style.display="none")}}function G(){!o||!a||(a.style.display="none",o.style.display="",o.focus())}function Ct(){!o||!a||(a.style.display="",o.style.display="none")}let wt=o?o.innerHTML:"";function ut(){o&&(o.innerHTML='Submitted ',o.classList.add("is-submitted"),o.disabled=!0,o.style.display="",a&&(a.style.display="none"))}function _t(){o&&o.classList.contains("is-submitted")&&(o.classList.remove("is-submitted"),o.innerHTML=wt,o.disabled=!1)}let J=null;if(o&&g.dataset.completed==="true"&&ut(),a&&a.addEventListener("click",async()=>{let t=Date.now();if(!(Z||t-at<750)){at=t,Z=!0,a.disabled=!0;try{let n=S.getValue(),s=await ct(n);if(!s)return;lt(s);let r=s.test_results.length,c=s.test_results.filter(u=>u.passed).length,f=r>0&&c===r;o&&l.submit&&(f?typeof J=="function"?await J(n,c,r):(G(),e&&(e.textContent+=". Click Submit to save your progress.")):Ct())}finally{Z=!1,setTimeout(()=>{a.disabled=!1},250)}}}),V){let t=!1;V.addEventListener("click",async()=>{if(!t){t=!0,V.disabled=!0,e&&(e.textContent="Formatting\u2026",e.style.color="var(--color-text-muted)");try{let n=await fetch("/api/format",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:S.getValue(),slug:z})});if(!n.ok){e&&(e.textContent=n.status===429?"Formatter rate-limited; try again in a moment.":n.status===502?"Formatter unreachable.":`Format failed (HTTP ${n.status}).`,e.style.color="var(--color-error, #c62828)");return}let s=await n.json();if(!s.success){e&&(e.textContent="rustfmt couldn't parse the code. Fix the syntax error first.",e.style.color="var(--color-error, #c62828)");return}s.code&&s.code!==S.getValue()?(S.setValue(s.code),e&&(e.textContent="Formatted.",e.style.color="var(--color-success, #2e7d32)")):e&&(e.textContent="Already formatted.",e.style.color="var(--color-text-muted)")}catch(n){console.error(n),e&&(e.textContent="Format failed: "+n.message,e.style.color="var(--color-error, #c62828)")}finally{t=!1,setTimeout(()=>{V.disabled=!1},250)}}})}function kt(){let t=document.getElementById("exercise-meta");t&&(t.querySelector(".status-perfected, .status-completed")||(t.innerHTML=' Passed'));let n=document.getElementById("current-chapter-row");n&&!n.classList.contains("completed")&&n.classList.add("attempted","completed")}function Tt(t){if(!t||typeof t.progress_done!="number")return;let n=document.querySelector(".topbar-progress");if(!n)return;let s=n.querySelector(".topbar-progress-count strong");s&&(s.textContent=String(t.progress_done)),typeof t.progress_total=="number"&&n.setAttribute("aria-label",`Progress: ${t.progress_done} of ${t.progress_total} chapters completed`)}if(o&&l.submit){let t=l.submit;async function n(s,r,c){let f=t&&t.ulid||o.dataset.ulid,u=t&&t.exerciseKey||z;try{let p=await fetch("/api/submit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ulid:f,exercise_name:u,source_code:s,tests_passed:!0,clippy_passed:!1,fmt_passed:!1})});if(p.ok){let m=null;try{m=await p.json()}catch{}if(e&&(e.textContent=`Saved progress (${r}/${c} tests passed).`,e.style.color="var(--color-success, #2e7d32)"),kt(),ut(),Tt(m),typeof i.onSubmit=="function")try{i.onSubmit({section:g,ulid:f,exerciseKey:u})}catch(_){console.error("[corrode] onSubmit failed:",_)}return!0}else e&&(p.status===401?e.textContent="Submit rejected: your session is unknown. Try registering again.":e.textContent=`Submit failed (HTTP ${p.status}).`,e.style.color="var(--color-error, #c62828)")}catch(p){console.error(p),e&&(e.textContent="Submit failed: "+p.message,e.style.color="var(--color-error, #c62828)")}return!1}J=async(s,r,c)=>{if(!(t&&t.ulid||o.dataset.ulid)){G(),e&&(e.textContent+=". Click Submit to save your progress.");return}o.disabled=!0,a&&(a.disabled=!0);try{await n(s,r,c)}finally{o.classList.contains("is-submitted")||(o.disabled=!1,G()),a&&(a.disabled=!1)}},o.addEventListener("click",async()=>{o.disabled=!0,a&&(a.disabled=!0);try{let s=S.getValue(),r=await ct(s);if(!r)return;lt(r);let c=r.test_results.length,f=r.test_results.filter(p=>p.passed).length;if(!(c>0&&f===c)){e&&(e.textContent+=". Not saving progress (tests must pass first).",e.style.color="var(--color-error, #c62828)");return}await n(s,f,c)}finally{o.disabled=!1,a&&(a.disabled=!1)}})}return S}export{ne as mountInlineEditor,se as setVimGlobal,Jt as vimGlobalEnabled};
diff --git a/static/dist/readonly-rust-editor.js b/static/dist/readonly-rust-editor.js
new file mode 100644
index 0000000..f6c6c4d
--- /dev/null
+++ b/static/dist/readonly-rust-editor.js
@@ -0,0 +1 @@
+import{a as u,b as m}from"./chunks/chunk-OZL5SFA7.js";import{b as f}from"./chunks/chunk-26SC7TXE.js";import"./chunks/chunk-7WUKGY2L.js";import{T as l,W as s}from"./chunks/chunk-CSOMSVJQ.js";import"./chunks/chunk-CGTIGMIP.js";import{V as a,W as c,l as r,q as i,w as d}from"./chunks/chunk-IVRVZEPW.js";import{v as n}from"./chunks/chunk-6OYJTXGR.js";function p(t){if(t.__cmView)return t.__cmView;let o=t.textContent??"";t.textContent="";let e=new r({state:n.create({doc:o,extensions:[r.editable.of(!1),n.readOnly.of(!0),r.lineWrapping,a(),d(),c(),i(),s(),f(),l(u,{fallback:!0}),m]}),parent:t});return e.dom.style.border="1px solid var(--color-border)",e.dom.style.borderRadius="12px",e.dom.style.overflow="hidden",t.__cmView=e,e}function E(t){try{return p(t)}catch(o){return console.warn("[corrode] readonly editor mount failed:",o,t),null}}function h(t="[data-rust-source]"){let o=document.querySelectorAll(t);for(let e of o)try{p(e)}catch(y){console.warn("[corrode] readonly editor mount failed:",y,e)}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{h()}):h();export{h as mountAllReadonlyRustEditors,E as mountReadonlyRustEditor};
diff --git a/static/dist/rust-highlight.js b/static/dist/rust-highlight.js
new file mode 100644
index 0000000..be81121
--- /dev/null
+++ b/static/dist/rust-highlight.js
@@ -0,0 +1 @@
+import{a as g}from"./chunks/chunk-7WUKGY2L.js";import{j as p,l as a}from"./chunks/chunk-CGTIGMIP.js";function r(t){return t.replace(/&/g,"&").replace(//g,">")}function f(t){let n=g.parse(t),i="",e=0;return p(n,a,(l,s,h)=>{l>e&&(i+=r(t.slice(e,l))),i+=`${r(t.slice(l,s))}`,e=s}),e` and returns the same
 // handle so call sites don't need to branch.
 
@@ -529,7 +529,7 @@ export async function mountInlineEditor(section, opts = {}) {
       persistExt,
       // Page-specific extras (e.g. the tour's hover-explanation
       // tooltips). Built here so callers reuse the exact CM module
-      // instances resolved through the shared importmap. The value may
+      // instances from the shared bundle chunks. The value may
       // be a single extension or an array; CodeMirror flattens nested
       // arrays, so we include it as one element rather than spreading
       // (spreading a non-iterable single extension would throw).
diff --git a/static/js/readonly-rust-editor.js b/static/js/readonly-rust-editor.js
index e30e19a..04d28c9 100644
--- a/static/js/readonly-rust-editor.js
+++ b/static/js/readonly-rust-editor.js
@@ -2,9 +2,8 @@
 // admin and team pages, and the "Reveal the full solution" viewer on
 // chapter pages.
 //
-// Resolves CM6 modules through the shared importmap in
-// `templates/base.html`, so this viewer and the editable editor on
-// chapter pages share a single instance per CM6 module (no duplicate
+// Built with the editable editor as split esbuild entry points, so both
+// viewers share the same generated CodeMirror chunks (no duplicate
 // `@codemirror/state`, no broken `instanceof` checks).
 //
 // Markup contract:
diff --git a/static/js/rust-highlight.js b/static/js/rust-highlight.js
new file mode 100644
index 0000000..7c356fe
--- /dev/null
+++ b/static/js/rust-highlight.js
@@ -0,0 +1,22 @@
+import { parser } from "@lezer/rust";
+import { classHighlighter, highlightTree } from "@lezer/highlight";
+
+function escapeHtml(value) {
+  return value
+    .replace(/&/g, "&")
+    .replace(//g, ">");
+}
+
+export function highlightRust(code) {
+  const tree = parser.parse(code);
+  let output = "";
+  let position = 0;
+  highlightTree(tree, classHighlighter, (from, to, className) => {
+    if (from > position) output += escapeHtml(code.slice(position, from));
+    output += `${escapeHtml(code.slice(from, to))}`;
+    position = to;
+  });
+  if (position < code.length) output += escapeHtml(code.slice(position));
+  return output;
+}
diff --git a/templates/admin.html b/templates/admin.html
index c8b96ed..ff7c85d 100644
--- a/templates/admin.html
+++ b/templates/admin.html
@@ -126,7 +126,7 @@ 

Course Dashboard

- + - - + + + +